自上而下的Web服务和自下而上的Web服务有什么区别?

Mav*_*ick 47 java rest soap web-services

在Java中,自上而下的Web服务和自下而上的Web服务有什么区别?另外,SOAP和REST-ful Web服务之间有什么区别?

Tho*_*sen 67

自上而下意味着您从WSDL开始,然后一直在Java中创建所有必要的脚手架.

自下而上意味着您从Java方法开始,并从中生成WSDL.

SOAP表示所有调用的URL都相同,只有Java方法的参数不同.REST意味着URL加上在其上调用的HTTP方法反映了要完成的操作.

  • 对于SOAP vs REST,我认为你的答案是合理的,考虑到OP在提出之前所做的研究工作量......但是,这里有一些文章可能会进一步深入探讨:http://en.wikipedia. org/wiki/Representational_State_Transfer和http://en.wikipedia.org/wiki/SOAP (2认同)

Pre*_*raj 11

合同优先与合同最后

自下而上:方法对问题进行高级定义,并将其细分为子问题.

合同最后.优先选择自下而上的开发风格有以下优点.

  • 代码优先
  • 初期很容易开发.

缺点:

  • 维护非常困难.
  • 紧密耦合

自上而下: 考虑基本功能和需要的部件.

合同优先.优先选择自上而下的开发风格有以下原因.

1.脆弱性 契约最后的开发风格导致您的Web服务契约(WSDL和您的XSD)是从您的Java契约(通常是一个接口)生成的.如果您使用这种方法,您将不能保证合同随着时间的推移保持不变.每次更改Java代码并重新部署它时,Web服务合同都可能会有后续更改.另外,并非所有SOAP堆栈都从Java契约生成相同的Web服务契约.这意味着将当前的SOAP堆栈更改为不同的(无论出于何种原因),也可能会更改您的Web服务合同.当Web服务合同发生变化时,必须指示合同用户获取新合同并可能更改其代码以适应合同中的任何更改.为了使合同有用,它必须尽可能长时间保持不变.如果合同发生变化,您必须联系您服务的所有用户,并指示他们获取新版本的合同.

2.性能 当Java自动转换为XML时,无法确定通过线路发送的内容.对象可能引用另一个对象,该对象引用另一个对象等.最后,虚拟机中堆上的一半对象可能会转换为XML,这将导致响应时间变慢.使用契约优先时,您可以明确地描述在哪里发送XML,从而确保它正是您想要的.

3.可重用性 在单独的文件中定义模式允许您在不同的方案中重用该文件.

4.版本控制 尽管合同必须尽可能长时间保持不变,但有时需要对其进行更改.在Java中,这通常会产生新的Java接口,例如AirlineService2,以及该接口的(新)实现.当然,必须保留旧服务,因为可能还有尚未迁移的客户端.如果使用契约优先,我们可以在合同和实施之间实现更松散的耦合.这种松散的耦合允许我们在一个类中实现两个版本的合同.

在此输入图像描述


Ant*_*oly 7

@mad_programmer - 您的意思是使用自下而上或自上而下的方法构建Web服务.首先,您开始将类和业务逻辑编程为Java代码,然后从中生成Web服务契约(即WSDL).后一种方法意味着相反(从WSDL生成类存根).


raj*_*77m 5

支持安徒生的答案,我想补充一点.基本上人们倾向于使用Bottom-up方法,因为在大多数情况下,我们已经开始编写bean,业务逻辑等的过程,然后在持久层中,我们创建web服务,wsdl等等.就像在一个新项目中,你从头开始构建一些东西,我们可以使用自上而下的方法,我们只需要编写wsdl并构建骨架就会给你bean,实现,接口等.但是,请记住计算机无法生成你想要的逻辑.所以,你仍需要完成整个项目并填补空白.