在Java中,顶层Web服务和底层Web服务有什么区别?此外,SOAP和RESTful Web服务之间有什么区别?
自上而下(Top-down)意味着您从WSDL开始,然后一路创建所有必要的Java支架。
自下而上(Bottom-up)意味着您从Java方法开始,并从中生成WSDL。
SOAP表示所有调用的URL相同,只有传递给Java方法的参数不同。REST表示URL加上在其上调用的HTTP方法反映了要执行的操作。
优点:
缺点:
自上而下:首先考虑基本功能和所需的部分,即先合同后开发。
以下是偏好自上而下开发风格的原因:
1. 脆弱性 合同后开发风格会导致您的Web服务合同(WSDL和XSD)从Java合同(通常是接口)生成。如果您采用这种方法,您无法保证合同随时间保持不变。每次更改Java代码并重新部署时,Web服务合同可能会发生变化。 此外,并非所有的SOAP堆栈都能从Java合同生成相同的Web服务合同。这意味着更改当前的SOAP堆栈为其他堆栈(出于任何原因)可能会改变您的Web服务合同。 当Web服务合同发生变化时,合同的使用者必须被告知获取新的合同,并可能需要更改他们的代码以适应合同的任何变化。 为了使合同有用,它必须尽可能长时间保持不变。如果合同发生变化,您将不得不联系所有服务的用户,并指示他们获取合同的新版本。
2. 性能 当Java自动转换为XML时,无法确定发送到网络的内容。一个对象可能引用另一个对象,而另一个对象又引用另一个对象,依此类推。最终,您虚拟机中堆上的一半对象可能会被转换为XML,这将导致响应时间变慢。 使用合同优先的方法,您可以明确描述XML发送的位置和内容,从而确保它正是您想要的。@mad_programmer - 你是指使用自下而上或自上而下的方法构建Web服务。 在自下而上的方法中,您首先编写Java代码中的类和业务逻辑,然后从中生成Web服务合同(即WSDL)。而后一种方法则相反(从WSDL生成类存根)。
当从零开始启动项目时,通常的方法是创建一个非常基本的界面,然后从中创建一个WSDl。这将使您免于编写复杂的WSDl。然后,我们可以直接在WSDl中添加项目特定的操作,一旦WSDl确定下来,我们就可以采用自上而下的方法。