我有这个拓扑:(注意WAS)

每个Service1,service2 ... service-n在iis中位于单独的appdomain中。


Service1需要消耗Service2。但是,他可以通过service2'snettcp端点访问http端点。

决定在哪里? (nettcp ot 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任务。对文件的缓存依赖关系似乎是解决方案,但是由于[n] appDomains,同样会存在[n]缓存依赖关系。

最佳答案

如何编写一个新的服务(可能称为“ CacheService”)来保存缓存?
这应该是单实例服务,它仅具有一个内部和静态并发字典以及来自缓存的键/值对。

它还应包含一个“ FileSystemWatcher”,以便在CFG文件更改时得到通知,然后可以更新其内部映射。

您所有的服务都将调用此服务,该服务应具有非常简单的界面(“ GetConfigSetting(字符串键)”)。
您可以在IIS中托管该服务,也可以在Windows Service中对其进行自我托管(我会选择第二种方法,因为这样总是可以的)。

您可以将其视为基本的分布式缓存。无论如何,它不应该比这更复杂。
该协议应该是net.tcp或事件net.pipes,因为您希望延迟尽可能短。

关于c# - WCF动态端点和配置依赖性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13118283/

10-11 23:43