最初のWCFサービスを作成しようとしていますが、アプリケーションデータを保存しようとしています。
ServiceContractsとDataContractsを作成しましたが、サービスは機能しています。
ここで、データベースからいくつかの構成データを読み取り、このデータをアプリケーションスコープに保存して、サービスが有効である限り、後続のリクエストでデータを利用できるようにします。そうすれば、リクエストを処理するたびにデータベースに接続する必要がなくなります。データを構成ファイルに保存したくありません。データは既に上記のDBに存在し、複製したくありません。
私は以下を実装して動作させています。
注1:サンプルを単純にするためにデータベースコードを削除しました。
注2:MemoryCacheクラスは、System.Runtime.Caching名前空間内に存在します。
private void LoadConfigData()
{
if (!MemoryCache.Default.Contains("ConfigData"))
{
CacheItemPolicy cachePolicy = new CacheItemPolicy() {
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(5) };
MemoryCache.Default.Add(
"ConfigData",
"ImagineThereIsDBDataHere",
cachePolicy);
}
}
これは使用するのに正しいアプローチですか?
この投稿では、ApplicationクラスとHttpContextの使用について説明しています。
WCFサービスからグローバルアプリケーションプロパティを読み取る
しかし、現在、私のプロジェクトではこれらのどちらも利用できません。
このスレッドは安全ですか?サービスに対して複数のリクエストが行われ、キャッシュが空の場合、競合状態になりますか?
これは私の最初の質問でもあるので、詳細を見逃した場合はお知らせください。更新します。
ありがとう。