Ghy*_*hal 3 .net wcf wcf-client
我正在创建一个wcf服务,我的wcf服务现在托管在一个控制台应用程序中,如下所示
PersonService = new ServiceHost(typeof(PersonService));
PersonService.AddServiceEndpoint(typeof(IPersonService), binding, "http://localhost:5645/PersonService");
PersonService.Open();
Run Code Online (Sandbox Code Playgroud)
然后我使用ChannelFactory类消耗wcf服务;
EndpointAddress endPoint = new EndpointAddress("http://localhost:5645/PersonService");
ChannelFactory<IPersonService> engineFactory = new ChannelFactory<IPersonService>(binding, endPoint);
IPersonService personChannel = engineFactory.CreateChannel();
Run Code Online (Sandbox Code Playgroud)
然后我可以使用此通道调用方法,如
personChannel.GetPersonById("1");
personChannel.Close();
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如上面的代码所示,在完成工作后关闭通道时,服务始终打开.这是保持服务打开的良好行为,或者我应该打开服务然后在每次呼叫时关闭它,同时考虑到我可能有两个客户同时呼叫同一服务.
请指教.
那么,你的服务必须保持"开放" - 这是你的行话,但实际上"开放"调用会把听众放在端口上.服务器必须继续监听,以便知道客户端何时想要连接它.如果没有这个,客户端将不会与没有收听的服务器交谈.
当客户端完成并获得它想要的东西时,它可以终止(关闭)连接并消失,从而节省了双方的资源.
这就像拨打电话一样.有人必须坐在电话旁边"听"它才能响.客户拿起电话拨打服务热线.服务热线电话响了.那个人(正在"聆听")拿起电话并开始"连接"(即对话).
当客户端完成后,他/她将丢弃电话并且连接已结束.但是,服务热线的人员必须继续"倾听"新的响铃.
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |