2009-10-06 51 views
1

.Net提供了一些精彩的机制来定义远程服务,然后“自动”创建一个客户端来连接它,隐藏大部分讨厌的布线和大惊小怪。但是有没有类似的路线去换个路?“反向”WCF服务(根据客户定义构建服务器)

我最近在做的工作是创建一系列服务,这些服务将相互通信,以进行身份​​验证和搜索查询等操作。一个要求是我们的核心服务能够呼叫到其他“服务节点”,这些服务节点可能或不可能在内部创建,但都需要实现通用接口。我可以构建此服务的参考实现,从中创建WSDL,并自动生成客户端,而不会出现问题。看起来,定义服务的唯一方法是基本上将某人指向我创建的WSDL并说“实现类似这样的东西”。看到WSDL很少被设计为被人读取,这条路线看起来不够吸引人。

那么有没有一种方法,我不知道从WSDL或类似的描述符生成服务接口?主要着眼于.NET 3.5,使用C#和WCF。谢谢!

+0

Doh!感谢您修复我在标题中的愚蠢拼写:) – Toji

回答

2

如果你有一个WSDL描述你的客户想要调用的方法,再加上一个XSD(XML Schema),它描述了它期望发送和接收的数据元素,你只需要用它来创建一个服务。这被称为构建WCF服务的“合同优先”方法,尤其在具有互操作性要求的环境(如Java客户端和.NET服务或反之亦然)中非常流行。

使用svcutil.exe,您可以生成一个服务接口类 - 您的服务描述。这将包含服务合同,运营合同和数据合同。

svcutil yourMethods.wsdl yourDataSchema.xsd /language:C# /out:YourServiceInterface.cs 
(or /language:VB, if you prefer VB.NET) 

这将创建一个YourServiceInterface.cs(或YourServiceInterface.vb)文件,该文件是为您的服务器代码的基础。

由此,您可以创建一个实际的服务实现 - 您的服务类实现真正的工作。

最后但并非最不重要的一点,您需要决定如何托管您的服务 - 在IIS中或自行托管在控制台应用程序或NT服务中或其他方式。

Marc

+0

两个很好的答案,谢谢!不过,这个更详细,所以我将其标记为答案。 再次感谢! – Toji

2

是的,您可以从WSDL文件中创建WCF服务合同(接口):使用svcutil.exe

相关问题