2012-01-06 3 views
0

テーブルストレージに保存されている読み込み専用のテーブルがいくつかあります。 サービスが始まると、すべてのテーブルを読み込み、データ構造(つまりリスト)にデータを保存し、そこからそのリストを読みたいと思います。 これを行う方法はありますか、データが必要なたびにテーブルストレージから読み込む必要がありますか? 方法がある場合、Listをどこで宣言する必要があり、どこを初期化する必要がありますか?Windows AzureのWCFサービスのデータを保存する - 非常に基本的です

ありがとうございました。

答えて

1

Azureキャッシュが最適なルートかもしれませんが、明白なコストがあります。

WCFサービスをシングルトンとして宣言し、そのデータを静的プロパティとして保存できますか?

+0

静的プロパティにデータを格納するためにシングルトンである必要はありません。静的プロパティを埋める静的コンストラクタ(a.k.a.型初期化子)を持つだけで、それを元に戻すことはできません。あなたが持っているインスタンスの数に関係なく、あなたはその型の静的プロパティを持ち、それを使用します。 – astaykov

+0

staticプロパティを使用しました。うまく動作するようです:)ありがとうastaykov –

0

リストが大きすぎない場合は、Windows Azureキャッシングコンポーネントhttp://www.windowsazure.com/en-us/home/tour/caching/を使用できます。サービスの初期化プロセス中に、テーブルから情報を読み込んでそこに格納します。また、リストを宣言して初期化する場所を尋ねています。 Windows Azureでサービスをホストしていますか?これはIIS上のWebサービスrunnigかWindowsサービスですか? WCFを使用してサービスを公開していますか?

0

他の人が静的なプロパティ(良い選択)とAzure Chacheを提案しているのを見てください。とにかく、頻繁に更新されない場合はデータをキャッシュし、毎回テーブルストレージからそれを読み取らないようにしてください。

私は私の2セントを与えたい:

データは(1メガバイトは私のために十分に小さい)十分に小さい場合、私はAzureのCahceを使用することはありません。静的なプロパティは、作業を行います。しかし、.NET 4.0には新しいものもあり、ほとんどのプログラムビューでは明らかに欠けています。名前空間はSystem.Runtime.Cachingです。私はまだそれを前もって使っていませんが、小さなローカルキャッシュには良いと思われます。 MemoryCacheオブジェクトを使用し、データをメモリに格納することができます。もちろん、他のタイプのチャーチと同様のプログラムの - プロパティのゲッターで、データがチャーチに存在するかどうかを確認します。存在する場合 - それを返します。存在しない場合は、テーブルから取り出し、chacheに格納してから返す。

関連する問題