我编写了一个具有一些常规功能(添加用户、删除、搜索、更新...)的 WCF 服务。此功能的实现是在 Entity Framework 中(使用 sql DB)。
现在我想在客户端使用它。 我有一些基本问题:
- 我在客户端多次调用 WCF 方法 - 我是否应该在每次调用时都 try catch ?
每次我想调用一个方法,例如 AddUser(User user),我需要创建一个服务实例,如下所示:
WcfService client = new WcfService(); client.AddUser(user);
在另一个地方我写:
WcfService client = new WcfService(); //Again making a new instance... client.UpdateUser(user);
我应该为我的 wcf 服务的所有应用程序创建一个实例吗? 或者每次在我调用方法之前创建一个新实例? (如我上面的例子)。
非常感谢!
最佳答案
在许多情况下,您希望重复使用相同的客户端代理,因为这种连接方法会产生最佳性能。如果您使用具有高初始安全协商成本的安全功能,那么重复使用相同的代理会特别有益。注意:您肯定需要在使用前检查客户端代理的状态。
如果无法重复使用相同的客户端代理,则考虑使用使用缓存的 ChannelFactory 代理。
以下链接提供了很好的解释以及最佳实践建议: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx
关于c# 如何在客户端管理 wcf 服务代理生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960145/