在我的主要VS解决方案中,我有以下3个项目:

主机在控制台应用程序中托管WCFService(调试后将更改为Windows服务).主机解决方案还有一个App.config,它为IDCCContract设置NetPipe绑定,为IMetaDataExchange配置设置MEX NetPipe绑定.
我的问题:我希望主机在运行后立即启动DCC服务,然后客户端可以使用WCF合同从该DCC服务实例访问数据.目前,DCC服务的新实例是在运行客户端的情况下创建的,这是我不想要的.
如何在主机开始时创建一次DCC服务实例,客户端可以使用WCF合同连接和读取该实例的数据?
更改主机控制台测试应用程序以使用ServiceHost ctor的此重载:
public ServiceHost(
Object singletonInstance,
params Uri[] baseAddresses
)
Run Code Online (Sandbox Code Playgroud)
并自己提供单例服务实例.
编辑:即替换主机应用程序中的代码,用于设置服务主机,如:
var singletonInstance = new DCCService();
//... you could add stuff here to initialise your singleton instance as you would like it
using (ServiceHost host = ServiceHost(singletonInstance, baseAddresses))
{
...
Run Code Online (Sandbox Code Playgroud)
您还需要将服务的InstanceContextMode设置为Single,例如将此属性应用于服务类:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
Run Code Online (Sandbox Code Playgroud)
然后,从客户端到DCC服务的所有WCF通信都将由您实例化的DCCService的特定实例处理.
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |