通过HTTP以简单,中立的方式发送XML

时间:2009-12-14 18:20:46

标签: xml web-services http xsd

我们有一些独立的设备可以通过HTTP将XML消息发送到任意处理软件(可能由我们开发,可能是第三方)。消息相对简单,并且将符合现有模式。没有必要作出具体答复。

我突然发现自己迷失在一个网络服务技术术语的世界里。我想要以下内容:

  1. 保持设备尽可能简单,不依赖于任何特定技术,如SOAP(除非它有益)。
  2. 使消息尽可能简单。例如,我可以通过HTTP发送XML,但接收器必须手动处理消息(我认为)。如果任何人都可以使用类似WSDL的工具轻松地用任何语言创建消费者,那将是很棒的。
  3. 请帮助填补我理解中的巨大空白......并指出我正确的方向。谢谢!

    更新:我应该让自己更清楚一些。我不反对使用任何“技术”,我只是在寻求建议以取得良好的平衡。独立设备的功能非常有限,但足以通过HTTP发送XML消息 - 我不想让这些事情复杂化。

    然后我当然可以只使用和手动处理XML消息.....但如果有一种生成此代码的方法(我可以从WSDL生成代码的方式),它会很简洁。我得到的是一个描述消息本身的.xsd,仅此而已。

4 个答案:

答案 0 :(得分:2)

我知道你说你希望远离像SOAP这样的特定技术,除非它们是有益的,但明确定义的技术的主要好处之一是以一致的方式解析消息的工具集。话虽如此,我认为SOAP不适合你。

我的目标是RESTful architecture,因为消息只是简单的XML,并且有用于发出和使用各种语言的REST样式消息的库。通常,使用REST可以比使用像SOAP这样的类似技术更快地运行,但仍然需要学习范例。

修改:您可以使用描述RESTful架构的WADL来描述您的服务,并包含任何相关架构。然后,您可以使用WADL2Java工具或其他WADL工具生成端点存根。我认为这种方法是在利用现有模式而不必更改客户端代码的同时关闭您想要做的事情。 Here is a sample WADL file及其中的一些信息。

答案 1 :(得分:1)

您能以编程方式执行XML的表单发布吗?

C# Programmatic Form Post

答案 2 :(得分:1)

在我看来,你想要两件相互矛盾的事情。任何提供工具的东西都是特定的技术。

然而,有一种可能性:

Apache CXF有一个简单的XML-over-http绑定。

但它不会用任何语言创造消费者。为此,除了SOAP或REST之外,我真的不能提出任何建议。

答案 3 :(得分:1)

根据上面关于WADL的评论,您也可以尝试WSDL 2.0。虽然尚未广泛采用,但WSDL 2.0确实包含对REST样式服务的良好支持。 Apache Axis2支持WSDL 2.0,我认为它在WSDL2Java工具中包含支持。