我正在.net中开发WCF服务,并希望将wsdl文件提供给可以使用我们服务的客户。我成功生成了wsdl,其中包含xsd import语句
<xsd:import schemaLocation="https://URL/Service-v1.svc?xsd=xsd1" namespace="Service-v1" />
<xsd:import schemaLocation="https://URL/PricingService-v1.svc?xsd=xsd3" />
等
但我想知道的是,只需将wsdl发送给客户,或者我是否需要向他们发送XSD文件..
如何为每个类生成单独的XSD文件,如class1.xsd,class2.xsd,class3.xsd
这是我的项目结构 的的DataModel 将Class1.cs Class2.cs Class3.cs Response.cs 的合同 IService1具有以下合同 响应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服务的另一端。
答案 0 :(得分:0)
我不知道.net但我有过消费和向第三方提供网络服务的经验。
WSDL基本上是可以在远程服务器上调用的函数列表以及如何连接。每个函数都将具有请求和响应的XML格式。可以在WSDL本身中嵌入这些模式。如果是这种情况,那么您只需要发送这个文件。听起来我自动生成的WSDL在单独的文件中具有请求和响应参数的模式。如果是这种情况,那么他们将需要WSDL和XSD。
如果您只是提供WSDL,那么他们将知道如何打包SOAP请求,但他们不会知道正文中的XML格式。有点像知道某人的电话号码,但不知道他们说的语言,没有多大用处!如果我是客户,我宁愿只拥有XSD而不仅仅是WSDL。通过定义输入和输出,我可以开始编码。然后,一旦我可以访问完整的WSDL和XSD,我就可以生成一个存根来调用相应的服务并连接我已编写的代码。当然,如果XSD和WSDL都准备就绪,那么请一定发给我很多。
答案 1 :(得分:0)
如果您将.NET与WCF一起使用,则服务描述页面通常会包含以下链接:
http://localhost:12345/Foo.svc?singleWsdl
如果右键单击并从浏览器中保存该文件,则它是每个调用的全包式WSDL +架构,其中包含消费者对服务所需的所有信息。