2

我正在.net 中开发 WCF 服务,并希望将 wsdl 文件提供给可以使用我们服务的客户。我成功生成了包含 xsd 导入语句的 wsdl

<xsd:import schemaLocation="https://URL/Service-v1.svc?xsd=xsd1" namespace="Service-v1" /> 
<xsd:import schemaLocation="https://URL/PricingService-v1.svc?xsd=xsd3"  /> 

ETC

但我想知道的是,只需将 wsdl 发送给客户就足够了,还是我还需要向他们发送 XSD 文件。

如何为每个类生成单独的 XSD 文件,例如 class1.xsd、class2.xsd、class3.xsd

这是我的项目结构 DataModel Class1.cs Class2.cs Class3.cs Response.cs Contract IService1 与以下合同 Response GetQuote1(Class1 class1Request); 响应 GetQuote2(Class2 class2Request); 响应 GetQuote2(Class2 class2Request);

服务 服务1:Iservice1

  public Response GetQuote1(Class1 class1Request)
  {
          return response;
  }

  public Response GetQuote2(Class2 class2Request)
  {
          return response;
  }

  public Response GetQuote3(Class3 class3Request)
  {
          return response;
  }

我在互联网上搜索,但无法决定最佳选择,因为我们无法控制将要实施 WCF 服务的另一端。

4

2 回答 2

0

我不了解 .net,但我在消费和向 3rd 方提供 Web 服务方面都有经验。

WSDL 基本上是可以在远程服务器上调用的函数以及如何连接的列表。每个函数都将具有用于请求和响应的 XML 格式。可以将这些模式嵌入 WSDL 本身。如果是这种情况,那么您只需发送这一个文件。在我看来,您自动生成的 WSDL 在单独的文件中具有请求和响应参数的模式。如果是这种情况,那么他们将需要 WSDL 和 XSD。

如果您只提供 WSDL,那么他们将知道如何打包 SOAP 请求,但他们不会知道正文中的 XML 格式。有点像知道某人的电话号码但不知道他们说的语言,没有多大用处!如果我是客户,我宁愿只拥有 XSD,而不仅仅是 WSDL。定义好输入和输出后,我就可以开始编码了。然后,一旦我可以访问完整的 WSDL 和 XSD,我就可以生成一个存根来调用适当的服务并连接我已经编写的代码。当然,如果 XSD 和 WSDL 都准备好了,那么请一定要给我发很多。

于 2012-10-16T10:53:42.850 回答
0

如果您将 .NET 与 WCF 一起使用,则服务描述页面通常会包含一个链接,例如:

http://localhost:12345/Foo.svc?singleWsdl

如果您从浏览器中右键单击并保存该文件,则它是一个包罗万象的 WSDL + 模式,用于每个调用,其中包含使用者对服务所需的所有信息。

于 2013-07-08T17:08:15.253 回答