2

私はこのトポロジを持っています:(WASに注意してください)

各 Service1 、 service2 ...service-n は、iis の個別の appdomain にあります。 ここに画像の説明を入力

Service1を消費する必要があります。しかし、彼はまたはエンドポイント経由 でエンドポイントService2にアクセスできます。service2'snettcphttp

決定はどこにありますか?( nettcp または http )

別の構成ファイルで。(これはc:\cfgフォルダーにあります。もちろん、service1 は cfg を読み取って、どのバインドにアクセスする必要があるかを判断しますservice2。)

Service2また、他のサービスも使用しているため、ファイルを表示できるはずです。しかし、(今のところ)service1 呼び出しについて話しましょうservice2

cfg ファイルの一般的なエントリは次のようになります。

key : current_service2_Active_endpoint
val : nettcp

だからここに私の問題があります:

  • CFGをキャッシュなどに読み込むソリューションを見つける必要があるため、service1ファイルシステム経由ではなくキャッシュからcfgエントリを読み込みます。Service2もそれを読み取る必要がありますが、キャッシュは同じではありません(異なるappdomain)。どうすればいいですか?コード (キャッシュへのアップロード) はどこに記述すればよいですか? 私はこの2つのファイルしか持っていません:(サービスが稼働しているときかもしれません-しかし、そのためのコードは何ですか?)

ここに画像の説明を入力

  • CFGファイルの各変更がキャッシュにエントリをリロードすることを望みます。これは古典的なcacheタスクのようです。ファイルへのキャッシュ依存が解決策のようですが、 appDomains[n]が原因でキャッシュ依存が 発生します....[n]
4

1 に答える 1

1

キャッシュを保持する「CacheService」などと呼ばれる新しいサービスを作成するのはどうですか? これは単一インスタンス サービスである必要があり、キャッシュからのキーと値のペアを使用した内部および静的な同時実行ディクショナリを持っているだけです。

また、「FileSystemWatcher」も保持する必要があるため、CFG ファイルが変更されたときに通知を受け、内部マッピングを更新できます。

すべてのサービスがこのサービスを呼び出します。このサービスは、非常に単純なインターフェイス ('GetConfigSetting(string key)') を持つ必要があります。このサービスは、IIS でホストすることも、Windows サービスで自己ホストすることもできます (2 番目のオプションを選択します。この方法では常に稼働しているからです)。

これは、ある種の初歩的な分散キャッシュと見なすことができます。とにかく、これより複雑であってはなりません。プロトコルは net.tcp または event net.pipes にする必要があります。これは、待ち時間をできるだけ短くしたいためです。

于 2012-10-29T09:03:01.863 に答える