设计用于访问接受xml请求的Web Service的代码

时间:2013-01-31 06:56:41

标签: c# .net xml web-services

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

public string HandleRequest(string xml).

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

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

我想设计一个便于与此服务互动的解决方案,这样我就可以:

  1. 从给定参数(动作类型,其他可选参数等)动态生成xml。目前,xml是从已创建的文件
  2. 加载的
  3. 以简单的方式解析响应(从中创建强类型对象?)
  4. 这样做的好方法是什么?我发现很难找到一个,因为请求/响应xml是动态的,可能会因呼叫而改变。

    其他一些信息:

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

1 个答案:

答案 0 :(得分:1)

听起来像XML-RPC实现可能就是你所追求的。来自Wikipedia;

  

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

维基百科还列出了该协议的一些Java Implementations

虽然我没有特别使用过这个,但是我使用了一个围绕一个卑鄙版JSON-RPC设计的服务。由于它没有真正遵循规范,我们无法利用任何预先存在的实现。

就个人而言,我没有看到使用此类协议的好处,因为我们仍然需要明确定义服务所暴露的操作及其相关约束,例如强制性参数等。除此之外,我们还有处理JSON(在您的情况下为XML)的序列化/反序列化到关联的对象模型。这主要是由于我们与之互动的供应商以及他们缺乏对规范的一致性。如果您的符合性,那么您可能会发现提供的现有实现可能会为您提供一种巧妙的处理方式。

请注意关于维基百科上的XML-RPC膨胀的批评。考虑使用JSON-RPC作为替代方案可能是值得的。肯定会列出一些implementations,您可以查看。

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