我需要创建一个web服务,将XML数据返回给我的一些客户端
每当我在谷歌上搜索web服务教程时,80%的人都在谈论使用SOAP。
我的问题是:任何客户端都能将提取的数据作为普通的XML读取吗
SOAP有替代方案吗?
REST是一种体系结构风格,因此它在实现方式方面很灵活。该体系结构只是一个指南,如果应用程序符合RESTWeb服务的定义特征,则将其视为RESTful。
JSON通常用作传输,而不是XML。其优点是JavaScript可以立即解析JSON,并且许多服务器端技术都有用于将JSON反序列化为对象的库。虽然建议使用JSON,但您可以将任何内容类型与REST一起使用,包括XML。
有关更多详细信息,请参阅维基百科上关于REST的文章。
示例:
获取福特雷鸟的汽车等级
HTTP GET http://example.com/cars/ford/thunderbird/8NUY1234
$.ajax({
url: '/cars/ford/thunderbird/8NUY1234',
type: "GET", /* implicit default, listed for clarity only */
success: function(data) {
alert(JSON.stringify(data) ); /* output json
alert("engine = " + data.engine);
}
});
在收集中插入车辆
HTTP POST http://example.com/cars/ford/f150/?vin=F14564564564&color=blue&engine=I6&...
// insert record on server.
var dataString = "vin=F143567547&color=blue&engine=I6"
$.ajax({
url: '/cars/ford/f150',
data: dataString,
type: "POST",
success: function(data) {
}
});
我认为这在很大程度上取决于您的需求。
JSON是轻量级的,因为它没有XML那么多开销。如果您有很多短键值部分,那么在XML中传输的最多字节是标记和属性定义,而不是信息数据本身。
JSON非常适合在JavaScript应用程序中使用。然而,大多数编程语言本机支持JSON;其中包括流行的语言,如PHP或自Flash 10.2以来的Actionscript 3。
XML生活在定义良好(并且广泛传播)的其他标准的丰富生态圈中。其中:
XSD,一个模式定义,您可以在其中定义信息的结构以及客户端期望它们的结构。这些可以附带名称空间。许多编程语言(如Java)或Framework(如.NET)都可以基于这种模式自动生成类和对象。
XSL(T)是一种转换语言,它可以将给定的XML转换为自动适合客户的文档格式(例如,针对其网站的不同部分的不同HTML代码段)。
SOAP充分利用了这些标准,因为它提供了关于客户端如何使用服务的方案和定义良好的契约。许多语言(包括PHP、Java)和许多框架(包括.NET和Zend Framework)可以自动检测服务提供的接口,并自动生成面向对象的接口,而无需客户端解释SOAP协议-它定义得很好,可以自动完成。一些框架(例如Zend、.NET)甚至可以在定义了类之后自动为您生成SOAP服务,这要归功于定义良好的标准。
正如jmort253已经说过的,REST是另一种方法:您没有那么多的标准和限制,因此在实现中非常自由。
长话短说:我建议对必须作为数据传输的复杂信息使用SOAP,对非复杂数据使用REST,这些数据主要可以被视为没有许多维度的键=>值对。
SOAP的一个很好的例子是adidasmiCoach API,它必须处理大量的训练数据,并且必须处理大量训练结果。
另一方面,Twitter主要处理键=>值信息(如标签=>消息),非常适合REST API。