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

Creating a XML/SOAP client from multiple XSDs?

我们正在与供应商讨论 XML 接口,并讨论它是否应该包含针对不同对象类型的多个端点,还是只包含一个 - 多个端点的论点是避免一个巨大的 XSD.

我知道 .Net 有很好的工具可以从 XSD 编写 client/server - 如果我们提供多个 XSD 自动生成 类 等s 对于多个端点,这会使这变得更加困难,还是 Visual Studio 工具使这变得简单?我已经有一段时间没有使用 SOAP 了,而且在 C# 中也没有使用过,所以我不知道细节,但需要尝试指导交付哪些内容符合我们的最大利益!

另外:我应该请求 WSDL 还是 XSD...我已经很久没有这样做了!

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

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

这与服务操作和定义服务类型的 XSD 文件的粒度如何无关。

I see references to "we'll provide an XSD" and wonder if they simply mean WSDL, or if there is some other way they might be doing this than SOAP

好吧,也许他们正在考虑使用 xml 而不是 json 在 REST 样式服务中公开对资源的 http 操作,在这种情况下 XSD 基本上就足够了,假设他们告诉您哪些操作可用于哪些类型。我认为 class 这不太可能。或者,他们可能想要公开 POX 样式的服务,但这也不太可能。

如果他们计划提供 soap 服务,那么如果他们给您的只是 XSD,您将很难调用它,除非他们还给您定义操作契约的服务接口定义,否则你怎么知道支持什么操作。

即使他们确实告诉您服务定义,您在调用通过 SOAP 1.2 公开的服务时仍然会遇到问题,SOAP 1.2 的互操作性往往较低,因此如果您有任何控制权,您应该请求 SOAP 1.1 服务 (除非你们都使用相同的技术栈,在这种情况下应该不会太重要)。

XSD 定义了一个架构,它定义了 XML 文档的结构。您可以使用它来检查给定的 XML 文档是否有效并遵循您在架构中制定的规则。

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

WSDL 文档有一个关联的 XSD,它显示了在 WSDL 文档中放置什么是有效的。

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

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