首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有svcutil.exe的情况下创建WCF应用?

在没有svcutil.exe的情况下创建WCF应用?
EN

Stack Overflow用户
提问于 2008-11-19 11:16:06
回答 3查看 8.5K关注 0票数 7

如何在不使用svcutil.exe工具的情况下创建一个WCF应用程序?

EN

回答 3

Stack Overflow用户

发布于 2008-11-22 05:06:44

不使用svcutil.exe构建WCF客户端的一种方法是使用ChannelFactory。您需要做的是在独立于服务实现的程序集中构建WCF服务接口。然后,您可以从客户端和服务引用该接口程序集。

一旦有了引用,您就可以使用以下代码来创建WCF客户端:

代码语言:javascript
复制
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

票数 7
EN

Stack Overflow用户

发布于 2008-11-19 11:49:11

您使用的是什么版本的Visual Studio?

VS2008结合了svcutil工具的功能。要生成代理,请单击解决方案资源管理器并选择“Add Service Reference”,然后可以输入服务器的URL,为命名空间指定一个名称,然后就可以了。

你可能想要扩展你的问题,提供你想要实现的更多细节。

票数 5
EN

Stack Overflow用户

发布于 2008-11-19 12:24:42

svcutil.exe工具(以及VS2008中的等效功能)通常是这样使用的:

您将其指向服务描述( WSDL文档),它将生成客户端代码和配置,以帮助您创建一个可以与WSDL中描述的服务通信的客户端。这些工具也可以做其他事情,但这是它们最常用的用途。我假设您所指的就是svcutil.exe的这种用法。

因此,如果您有一个现有的服务,可能是使用其他堆栈(而不是WCF)编写的,使用svcutil会使您的工作比其他方式更容易。但请记住,生成的代码和配置可能是由您编写的。通常情况下,配置看起来很冗长,因为该工具将所有默认值都放在其中。如果配置是你自己写的,你可能会省略大部分。

如果你自己编写客户端和服务,使用WCF,你几乎没有理由使用svcutil.exe。在定义ServiceContract时,您可以在客户端和服务中使用相同的定义。当您创建服务配置文件时,基于它创建一个客户端配置文件是一项简单的工作-大多数内容都是相同的。

最后,理解svcutil.exe生成的所有代码/配置的实际含义是无可替代的。那么你就可以在没有它的情况下工作了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/301604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档