C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: メモリマップドファイルとシリアライズ


(過去ログ 111 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■65656 / inTopicNo.1)  メモリマップドファイルとシリアライズ
  
□投稿者/ researcher (9回)-(2013/03/13(Wed) 13:53:58)

分類:[C#] 

.Net2008までWinAPIを使用してメモリマップドファイルを利用して作っていたのですが、
2010からMemoryMappedFileクラスというものがあるということがわかり調査をしております。

C#同士のアプリ間で共有するためにメモリマップドファイルを使用しているのですが、
現在シリアライズ化したクラスを使用しており、

・CreateViewStreamを使用して一度ファイルをシリアライズ化したものをデシリアライズするか、
・CreateViewAccessorを使用してクラスのままで操作するか

どちらにしようか迷っております。
もしどちらも使えるという場合はメリットデメリット等も教えていただければ幸いです。
それでは失礼します
引用返信 編集キー/
■65672 / inTopicNo.2)  Re[1]: メモリマップドファイルとシリアライズ
□投稿者/ Azulean (115回)-(2013/03/13(Wed) 23:07:09)
ご質問内容に書かれている説明が不思議に感じています。

No65656 (researcher さん) に返信
> ・CreateViewStreamを使用して一度ファイルをシリアライズ化したものをデシリアライズするか、

こちらは Stream クラスを得られることから既存の BinaryFormatter などが使えるという意味で読み取っています。
これはそんなに認識に違いはないと思います。


> ・CreateViewAccessorを使用してクラスのままで操作するか

こちらの「クラスのままで操作する」というものがよくわかりません。
シリアライズ・デシリアライズではなく、メソッドを用意して状態を書き込んでもらい、また別のメソッドで状態を復元してもらうということですか?


認識に違いがなければ、どちらでもやりやすい方を選べばよいとは思います。
引用返信 編集キー/
■65685 / inTopicNo.3)  Re[2]: メモリマップドファイルとシリアライズ
□投稿者/ Hongliang (43回)-(2013/03/14(Thu) 10:58:04)
MemoryMappedViewAccessorのWrite<T>やRead<T>のことであれば、これらは主にアンマネージとの相互運用のために用意されている物で、要するにMarshal.StructureToPtr/PtrToStructureです。Marshalクラスのメソッド群はStreamに対して使用できないので、その代替としてUnmanagedMemoryAccessorが同等の処理を提供していると考えると分かりやすいでしょう。

XmlSerializerやBinaryFormatterによるシリアライズとはまた違う制限があるので(例えばTにはstruct制約が掛かっています)、要件に応じてとしか言いようがありません。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -