0

我想创建访问只有 1 种方法的 WebService 的 C# 代码:

public string HandleRequest(string xml).

请求本身以 xml 格式发送,其中 xml 内容指定要执行的操作类型以及必需/可选参数。

来自服务的响应也以 xml 格式返回,并且每个发送的请求类型可能不同。

我想设计一个有助于与此服务交互的解决方案,这将使我能够:

  1. 从给定参数(动作类型、其他可选参数等)动态生成 xml。目前,xml 是从已经创建的文件中加载的
  2. 以简单的方式解析响应(从中创建强类型对象?)

这样做有什么好的解决方案?我发现很难想出一个,因为请求/响应 xml 是动态的,并且可能会因调用而异。

一些附加信息:

  1. 该服务基于 Java,托管在 Tomcat (Axis 1.2) 下
  2. 该服务没有 wsdl 文档(即使有,我也无法自动生成一些强类型的请求/响应类,因为服务本身只接收和输出 XML 而不是某些复杂类型)。
4

1 回答 1

1

这听起来像 XML-RPC 实现可能就是您所追求的。来自维基百科

XML-RPC 通过向实现该协议的服务器发送 HTTP 请求来工作。在这种情况下,客户端通常是想要调用远程系统的单个方法的软件。可以将多个输入参数传递给远程方法,返回一个返回值。参数类型允许将参数嵌套到映射和列表中,因此可以传输更大的结构。因此 XML-RPC 可用于传输对象或结构作为输入和输出参数。

Wikipedia 还列出了该协议的一些Java 实现

虽然,我没有专门使用它,但我使用过一个围绕JSON-RPC的混蛋版本设计的服务。由于它没有真正遵循规范,我们无法利用任何预先存在的实现。

就个人而言,我没有看到使用这样的协议的好处,因为我们仍然需要对服务公开的操作以及它们相关的约束(例如强制参数等)有明确的定义。除此之外,我们还必须处理JSON(在您的情况下为 XML)到关联对象模型的序列化/反序列化。这主要是由于我们与之交互的供应商以及他们不符合规范。如果您的符合标准,那么您可能会发现提供的现有实现可能会为您提供一种处理此问题的简洁方法。

请注意维基百科上关于 XML-RPC 膨胀的批评。将 JSON-RPC 作为替代方案可能会有所帮助。当然列出了一些您可以查看的实现

编辑:我没有正确阅读您的问题。对不起。我以为你在寻找提供服务。我仍然会查看 XML-RPC/JSON-RPC 周围的链接,因为它可能会让您了解如何启动测试客户端。就 .NET 而言,我查看了Jayrock代码库,以了解 JSON-RPC 协议是如何实现的,以及我们是否可以在我们的场景中使用它。您可以大致了解他们如何处理请求和响应。根据记忆,他们甚至可能有一个测试工具或示例代码来显示如何调用服务。这可以给你一些想法。

于 2013-01-31T08:42:01.643 回答