【发布时间】:2016-09-26 10:29:23
【问题描述】:
我有一个 WCF 服务需要访问只读信息存储库。此存储库的创建成本很高,这意味着它需要创建一次并在服务类的服务调用/实例之间共享。使类线程安全通常不是问题,就像使存储库线程安全一样。我正在考虑共享存储库的两种选择:
只需将“InstanceContextMode”设置为“Single”,将“ConcurrencyMode”设置为“Multiple”,手动创建单个服务对象并通过构造函数将单个存储库注入其中。
使用设置为“PerCall”(或“PerSession”)的“InstanceContextMode”并为我的服务实现自定义服务实例提供程序。作为创建过程的一部分,此实例提供程序可以将存储库的单个实例注入所有服务类实例(构造函数)。
鉴于我的情况(前提是我已提交足够的相关信息),这里不使用选项 1 的原因是什么?对我来说,这似乎是最简单的?我一直在阅读将“InstanceContextMode”设置为“Single”对性能/可扩展性不利,但我无法掌握这种情况是否总是如此,或者它是否取决于服务属性。
如前所述,我意识到我可能没有就我的具体案例提供足够的信息,让你们任何人都无法回答。
最好的问候, 约翰
【问题讨论】: