如何在不使用svcutil.exe工具的情况下创建WCF应用程序?
最佳答案
不使用svcutil.exe来构建WCF客户端的一种方法是使用ChannelFactory。您需要做的是在与服务实现分开的程序集中构建WCF服务接口。然后,您可以从客户端和服务中引用该接口程序集。
获得参考之后,可以使用以下代码创建WCF客户端:
var factory = new ChannelFactory<IMyWcfService>();
var wcfClient = factory.CreateChannel();
bool closedSuccessfully = false;
try
{
// Now you can make calls on the wcfClient object
((ICommunicationObject)wcfClient).Close();
closedSuccessfully = true;
}
finally
{
if (!closedSuccessfully)
{
((ICommunicationObject)wcfClient).Abort();
}
}
注意清理例程。您不能可靠地使用using语句来清理wcfClient变量。如果这样做,并且对象处于故障状态,则在using()块超出范围并且对wcfClient变量执行Dispose()时,将引发异常。见Jesse Ezell's blog