从多个XSD创建XML / SOAP客户端?

时间:2016-05-06 13:22:52

标签: .net visual-studio soap xsd wsdl

我们正在讨论与供应商的XML接口,并讨论它是否应该包含不同对象类型的多个端点,或者仅包含一个端点 - 多个端点的参数是避免一个巨大的XSD。

我知道.Net有很好的工具可以从XSD编写客户端/服务器 - 自动生成类等,如果我们为多个端点提供了多个XSD,那么这会使得这一点变得更加困难,或者是Visual Studio工具制作的这个简单吗?我有一段时间没有使用SOAP,而不是在C#中,所以我不知道细节,但需要尝试指导我们的最佳利益!

另外:自从我这么做以后,我应该要求WSDL或XSD了很长时间!

2 个答案:

答案 0 :(得分:1)

如果您通过soap调用该服务,那么我不确定为什么您担心必须直接从XSD生成类。

只需要求您的服务提供商公开带有WSDL地址的soap端点,您就可以使用visual studio生成所有客户端代码,包括服务代理,类型和绑定。

这与服务操作和定义服务类型的XSD文件的精细程度无关。

  

我看到“我们将提供一个XSD”的引用,并想知道它们是否简单   意思是WSDL,或者如果有其他方式,他们可能会这样做   SOAP

好吧,也许他们正在考虑使用xml而不是json在REST样式服务中公开http操作,在这种情况下,假设他们告诉你什么类型的操作可用,那么XSD就足够了。我认为这不太可能。或者,他们可能希望公开POX样式的服务,但这也不太可能。

如果他们计划使用肥皂服务,那么如果他们给你的是XSD,你将很难打电话给它,除非他们还给你定义操作合同的服务接口定义,否则你怎么知道支持哪些操作。

即使他们确实告诉您服务定义,您仍然可能会遇到调用通过SOAP 1.2公开的服务的问题,这往往不太可互操作,所以如果您有任何控制,您应该请求SOAP 1.1服务(除非您“两者都使用相同的技术堆栈,在这种情况下它应该没有太大关系。”

答案 1 :(得分:1)

XSD定义了一个模式,它定义了如何构建XML文档。您可以使用它来检查给定的XML文档是否有效,并遵循您在模式中列出的规则。

WSDL是一个描述Web服务的XML文档。它显示了哪些操作可用以及如何构建数据以发送到这些操作。

WSDL文档有一个关联的XSD,它显示了放入WSDL文档的有效内容。

您需要同时请求WSDL和XSD,以便您可以通过某些工具/软件(如svcutil.exe)生成Web引用。它会生成参考代码和Web配置文件,您可以合并到您的项目中。通常我将WSDL和XSD保存在一个文件夹中供svcutil查找。

svcutil /wrapped /serializer:XmlSerializer /out:MyCode.cs /config:MyConfig.config /namespace:*,MyNameSpace "PathForWsdlAndXsd\Mywsdl.wsdl"