我编写了一个带有一些常规功能的WCF服务(添加用户,删除,搜索,更新......)。此功能的实现在实体框架中(使用sql DB)。
现在我想在客户端使用它。 我有一些基本问题:
每次我想调用一个方法时,例如AddUser(用户用户),我需要创建一个我的服务实例,如:
WcfService client = new WcfService();
client.AddUser(user);
在另一个地方我写道:
WcfService client = new WcfService(); //Again making a new instance...
client.UpdateUser(user);
我应该为我的wcf服务的所有应用程序创建一个实例吗? 或者每次在调用方法之前创建一个新实例? (如上例所示)。
非常感谢!
答案 0 :(得分:6)
在许多情况下,您希望重用相同的客户端代理,因为此连接方法可以产生最佳性能。如果您使用具有较高初始安全协商成本的安全功能,则重用相同的代理会特别有用。注意:在使用之前,您确实需要检查客户端代理的状态。
如果不能重用相同的客户端代理,则考虑使用使用缓存的ChannelFactory代理。
以下链接提供了一个很好的解释以及最佳做法建议: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx
答案 1 :(得分:4)
(i)您可以为服务创建一次实例,并在需要进行方法调用时使用同一客户端。如果要中止或关闭连接,则需要每次创建。
(ii)如果在每种方法中使用try catch方法会更好,因此很容易关闭连接并识别异常。