【发布时间】:2016-06-01 11:26:13
【问题描述】:
我有使用 WCF 服务的桌面应用程序。当我实现异步 WCF 调用时,我的可用性得到了很大的提升。
我的问题是:初始化服务客户端的最佳做法是什么?
在之前的实现中,有一个带有凭据的静态对象和一个公共方法GetClient(),它在每次调用之前创建new ServiceClient。应用中常用这样的结构:
using (var svc = ServiceClientFactory.GetClient()) {
var data = svc.CallMethod(...);
some_application_context.specific_attribute = data;
}
因此,在任何调用之前,都会创建新客户端,在操作完成后立即销毁并使用接收到的数据。
我的问题是:最好在每次调用之前调用客户端构造函数吗?
我尝试创建单个静态客户端对象,该对象在启动时初始化一次,在应用程序关闭时销毁一次,但我没有获得任何名义上的性能提升。
似乎它工作正常,但我想知道使用单个客户端是否有任何不太明显的障碍?有什么推荐的?
【问题讨论】: