据我所知,有两种类型的网络服务。第一个是自定义xml格式的消息,第二个是SOAP标准xml消息。它们之间有什么区别?哪一个更好,这两种方法的优点和缺点是什么?
答案 0 :(得分:27)
“普通”我认为你的意思是RESTful服务。这个讨论很长,所以我会尝试给你一些关键点:
RESTful服务是最常用的Web服务。它们与HTTP的功能和原理密切相关,可以像GET请求一样简单地访问(其他操作是POST,DELETE和PUT)。核心概念是由URI标识的“资源”。 REST的常见格式是XML和JSON。这是一种非常简单易用的技术,这使得它得到广泛应用。
SOAP Web服务基于XML,大多数都遵循RPC风格的应用程序设计(在服务器上调用远程方法并获得响应),并使用3个主要支柱:
SOAP Web服务往往具有很高的开销,并且通常具有非常详细的消息,但如果您需要在应用程序中实现更复杂的功能和交互,则可能会很好。
答案 1 :(得分:11)
严格来说,只有Soap服务是webservices。它们基于W3C和Oasis标准化的WS-* Specs。有时也称为Web服务的是所谓的POX-Endpoint(普通旧XML)或REST端点,它允许您通过HTTP GET简单地获取原始XML。
SOAP服务以wsdl端点的形式传递它们的模式(通常将?wsdl附加到服务端点),因此有很多工具可以创建代理对象并隐藏webservice调用的复杂性。使用POX服务,您需要知道要使用哪种架构,例如:文件。
SOAP服务在SOAP Envelope中携带有效负载(带有标头和主体的XML模式,主体中有效负载)。具有独立于有效载荷的头部允许在不知道内容的情况下重新路由内容,签名和加密,验证等。但是你需要通过消息本身的额外开销来支付费用。
另一方面,POX将所有内容留给了Web服务器,并依赖HTTP进行身份验证和压缩。必须由您的系统完成登记和签名。它的开销低,但发现率低。最适合您的方法很大程度上取决于您的情况。如果您在.Net或Java World中工作,您通常会发现最简单的方法是创建代理并使用它来将Web服务作为远程对象。您将获得良好的构建基础架构和舒适的编程体验。如果你的环境不支持代理生成,或者必须从任何东西调用它,那么POX可能是更轻量级的方式。
答案 2 :(得分:5)
“Web服务”是指更抽象和一般的概念。我们可以说任何可以在Web上提供的东西都是Web服务。 SOAP Web服务或RESTful服务是一种特殊的Web服务,它具有广泛的认可并具有自己的标准。虽然SOAP服务是基于新的基于XML的标准构建的,但RESTful方法利用了现有的HTTP方法,因此被广泛接受(根据我的经验)。