如何在不使用svcutil.exe工具的情况下创建一个WCF应用程序?
发布于 2008-11-22 05:06:44
不使用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
发布于 2008-11-19 11:49:11
您使用的是什么版本的Visual Studio?
VS2008结合了svcutil工具的功能。要生成代理,请单击解决方案资源管理器并选择“Add Service Reference”,然后可以输入服务器的URL,为命名空间指定一个名称,然后就可以了。
你可能想要扩展你的问题,提供你想要实现的更多细节。
发布于 2008-11-19 12:24:42
svcutil.exe工具(以及VS2008中的等效功能)通常是这样使用的:
您将其指向服务描述( WSDL文档),它将生成客户端代码和配置,以帮助您创建一个可以与WSDL中描述的服务通信的客户端。这些工具也可以做其他事情,但这是它们最常用的用途。我假设您所指的就是svcutil.exe的这种用法。
因此,如果您有一个现有的服务,可能是使用其他堆栈(而不是WCF)编写的,使用svcutil会使您的工作比其他方式更容易。但请记住,生成的代码和配置可能是由您编写的。通常情况下,配置看起来很冗长,因为该工具将所有默认值都放在其中。如果配置是你自己写的,你可能会省略大部分。
如果你自己编写客户端和服务,使用WCF,你几乎没有理由使用svcutil.exe。在定义ServiceContract时,您可以在客户端和服务中使用相同的定义。当您创建服务配置文件时,基于它创建一个客户端配置文件是一项简单的工作-大多数内容都是相同的。
最后,理解svcutil.exe生成的所有代码/配置的实际含义是无可替代的。那么你就可以在没有它的情况下工作了。
https://stackoverflow.com/questions/301604
复制相似问题