我有这种拓扑结构:(注意WAS)
每个Service1,service2 ... service-n位于iis的单独appdomain中。
Service1
需要使用Service2
。但是,他可以通过service2's
或nettcp
端点访问http
个端点。
决定在哪里? (nettcp ot http)
在单独的配置文件中。 (位于c:\cfg
文件夹中,当然service1读取cfg以决定他应该在service2
访问哪个绑定。)
Service2
也应该能够看到该文件,因为他也消耗其他服务。但我们可以谈谈(现在)约service1
作为调用service2
。
cfg文件中的典型条目是:
key : current_service2_Active_endpoint
val : nettcp
所以这是我的问题:
service1
从缓存而不是通过文件系统读取cfg条目。但Service2也应该读取它,但缓存不一样(不同的appdomain)。我该怎么办?我应该在哪里编写代码(上传到缓存)?我只有这两个文件:(当服务时 - 但是代码是什么?)
cache
任务。缓存对文件的依赖似乎是解决方案,但由于[n]
appDomains ....再次存在[n]
缓存依赖关系。答案 0 :(得分:1)
如何编写一个名为“CacheService”的新服务,它可以保存缓存? 这应该是一个单实例服务,它只有一个内部和静态并发字典,其中包含缓存中的键/值对。
它还应该包含'FileSystemWatcher',以便在CFG文件更改时得到通知,然后它可以更新其内部映射。
您的所有服务都会调用此服务,该服务应具有非常简单的界面('GetConfigSetting(string key)')。 您可以在IIS中托管此服务,也可以在Windows服务中自托管它(我会选择第二种方式,因为这种方式总是很快)。
您可以将其视为某种基本的分布式缓存。无论如何,它不应该比这更复杂。 该协议应该是net.tcp或event net.pipes,因为您希望延迟尽可能低。