自上而下的 Web 服务和自下而上的 Web 服务之间有什么区别?
在Java中,自上而下的Web服务和自下而上的Web服务有什么区别?另外,SOAP 和 REST-ful Web 服务之间有什么区别?
在Java中,自上而下的Web服务和自下而上的Web服务有什么区别?另外,SOAP 和 REST-ful Web 服务之间有什么区别?
自上而下意味着你从WSDL开始,然后在Java中创建所有必要的基架。
自下而上意味着您从 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 发送到何处,从而确保它正是您想要的。
3. 可重用性 通过在单独的文件中定义架构,您可以在不同的方案中重用该文件。
4. 版本控制 即使合约必须尽可能长时间地保持不变,但有时确实需要更改它们。在Java中,这通常会导致一个新的Java接口,例如AirlineService2,以及该接口的(新)实现。当然,必须保留旧服务,因为可能有客户端尚未迁移。如果使用合约优先,我们可以在合约和实现之间有一个更松散的耦合。这种更松散的耦合允许我们在一个类中实现两个版本的合约。