WCF包装代理客户端

时间:2011-04-29 11:03:43

标签: wcf proxy client

我在客户端应用程序中使用的项目中有很多web方法。 ]

我不想写这样的代码:

 using(ServiceClient sc = new ServiceClient())
    {
         //Invoke service methods        
         sc.Method1();
    }

相反,我想写:ServiceClient.Method1();在这种情况下,所有参与代理初始化,调用方法,处理,异常处理的常见操作都将在ServiceClient中。当然,我可以用类似的代码包装我的任何web方法,或者使用反射来按名称重新获取方法,但是可能还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

我假设您正在使用“添加服务引用”来生成ServiceClient ...

首先,it's not safe将ServiceClient(源自ClientBase)包装在using块中。 Here is a stackoverflow thread深入探讨。

其次,您可以封装生成的ServiceClient并创建执行您所描述内容的静态方法,但这是很多手动编码,只有很少的好处。我鼓励您将代理创建,调用,错误处理,关闭和处理封装在泛型类中。 This is a good example

答案 1 :(得分:0)

您可以将“Method1”设为ServiceClient的静态成员,然后调用ServiceClient.Method1();