WCF包装客户端(包装服务方法调用的静态方法)
本文关键字:包装 静态方法 调用 服务 客户端 WCF 方法 | 更新日期: 2023-09-27 17:54:00
可能重复:
WCF包装代理客户端
我的项目中的服务中有许多使用客户端应用程序的web方法。
我不想写这样的代码:
using(ServiceClient sc = new ServiceClient())
{
//Invoke service methods
sc.Method1();
}
相反,我想写:ServiceClient.Method1((;(例如(-在这种情况下,所有引用代理的常见操作(初始化、调用方法、处理、异常处理(都将在ServiceClient内部。当然,我可以用类似的代码包装我的任何web方法,或者使用反射按名称检索方法,但可能还有其他方法吗?
像这样的静态方法怎么样:
public static TResult Execute<TResult>(Func<ServiceClient, TResult> proxy)
{
using (var client = new ServiceClient())
{
return proxy(client);
}
}
然后:
string result1 = Execute(proxy => proxy.Method1());
int result2 = Execute(proxy => proxy.Method2("some param", 123));
如果愿意,可以编写一个Singleton实现,它封装所有客户端操作并在内部维护初始化的客户端。
然后将所需的方法公开为singleton类的静态成员。这还有加速服务通信的额外好处,因为大多数过载都是创建代理(契约加载、绑定初始化和客户端设置(。