在Java中,自顶向下的Web服务和自底向上的Web服务之间有什么区别?另外,SOAP和REST风格的Web服务之间有什么区别?
3mpgtkmj1#
自上而下意味着您从WSDL开始,然后用Java创建所有必要的脚手架。自底向上意味着您从一个Java方法开始,并从它生成WSDL。SOAP意味着所有调用的URL都是相同的,只有Java方法的参数不同。REST意味着URL加上对其调用的HTTP方法反映了要执行的操作。
ef1yzkbh2#
Contract-first versus Contract-last
自下而上:方法对问题进行高层次的定义,并将其细分为子问题,即最后签订合同。*优势
有以下的原因让我们倾向于使用自顶向下的开发风格。
1.脆弱性最后契约式开发风格导致您的Web服务契约(WSDL和您的XSD)从您的Java合约生成(通常是一个接口)。如果您使用这种方法,您将无法保证合约随时间保持不变。每次更改Java代码并重新部署它时,可能会对Web服务合约进行后续更改。但是,并非所有SOAP堆栈都从Java合约生成相同的Web服务合约。这意味着将当前SOAP堆栈更改为不同的SOAP堆栈(无论出于何种原因),也可能更改您的Web服务合同。当Web服务合同更改时,必须指示合同的用户获得新合同,并可能更改其代码以适应合同中的任何更改。为了使合约有效,它必须尽可能长时间保持不变。如果合约发生变化,您必须联系您的服务的所有用户,并指示他们获取新版本的合约。2.性能Java自动转换成XML时,无法确定传输的是什么,一个对象可能引用另一个对象,另一个对象又引用另一个对象,等等,最后虚拟机堆上一半的对象都可能转换成XML,这会导致响应时间变慢。使用合约优先时,您可以显式地描述什么XML被发送到哪里,从而确保它正是您想要的。3.可重用性在单独的文件中定义模式,允许您在不同的场景中重用该文件。4.版本控制尽管合约必须尽可能长时间保持不变,但有时确实需要更改。在Java中,这通常会导致新的Java接口,例如AirlineService 2,以及该接口的(新)实现。当然,旧的服务必须保留,因为可能有客户端尚未迁移。如果使用合约优先,我们可以在合约和实现之间有一个更松散的耦合。2这种松散的耦合允许我们在一个类中实现合约的两个版本。主要区别:***开发顺序:**主要区别在于设计和实现的顺序,自顶向下从设计开始,自底向上从实现开始。***合约方式:**自上而下是合约优先的方式,合约设计在实现之前;自下而上是从实现的代码中派生合约。***用例:**自上而下适用于需要先定义清晰的接口,或者需要多个团队预先就合约达成一致的情况;自下而上适用于快速开发,或者需要将现有代码作为服务公开的情况。
ssm49v7z3#
@mad_programmer -您的意思是使用自下而上或自上而下的方法构建Web服务。在第一种方法中,您开始将类和业务逻辑作为Java代码进行编程,然后从中生成Web服务契约(即WSDL)。后一种方法的意思相反(从WSDL生成类存根)。
pbossiut4#
为了支持andersen的回答,我想补充一点。基本上人们倾向于使用自下而上的方法,因为在大多数情况下,我们已经开始编写bean,业务逻辑等的过程,然后在持久层,我们创建web服务,wsdl等。在一个新项目中,你从头开始构建一些东西,我们可以使用自上而下的方法,我们只需要编写wsdl并构建框架,给予bean、实现、接口等。但是,请记住,计算机无法生成您想要的逻辑。因此,您仍然需要遍历整个项目并填补空白。
dsekswqp5#
当一个项目从头开始时,通常的方法是创建一个非常基本的接口,然后从它创建一个WSDl。这将保存你从编写复杂的WSDl。然后我们可以直接在WSDl中添加项目特定的操作,一旦WSDl完成,我们可以继续使用自顶向下的方法。
brc7rcf06#
在自上而下中,你首先定义你要做的事情,即你的wsdl。然后你继续进行实际的开发。虽然首先创建wsdl看起来很困难,但它推荐(Refer Eclipse),因为从长远来看,它简化了你的开发。相反的情况发生在自下而上,我们从代码部分开始,然后使用内置的工具创建wsdl,这在开始时似乎很容易,但当你的代码变得复杂时,它会产生很多混乱。
6条答案
按热度按时间3mpgtkmj1#
自上而下意味着您从WSDL开始,然后用Java创建所有必要的脚手架。
自底向上意味着您从一个Java方法开始,并从它生成WSDL。
SOAP意味着所有调用的URL都是相同的,只有Java方法的参数不同。REST意味着URL加上对其调用的HTTP方法反映了要执行的操作。
ef1yzkbh2#
Contract-first versus Contract-last
自下而上:方法对问题进行高层次的定义,并将其细分为子问题,即最后签订合同。
*优势
*缺点:
自上而下:考虑基本功能和需要的部分,即合同优先。
有以下的原因让我们倾向于使用自顶向下的开发风格。
1.脆弱性最后契约式开发风格导致您的Web服务契约(WSDL和您的XSD)从您的Java合约生成(通常是一个接口)。如果您使用这种方法,您将无法保证合约随时间保持不变。每次更改Java代码并重新部署它时,可能会对Web服务合约进行后续更改。但是,并非所有SOAP堆栈都从Java合约生成相同的Web服务合约。这意味着将当前SOAP堆栈更改为不同的SOAP堆栈(无论出于何种原因),也可能更改您的Web服务合同。当Web服务合同更改时,必须指示合同的用户获得新合同,并可能更改其代码以适应合同中的任何更改。为了使合约有效,它必须尽可能长时间保持不变。如果合约发生变化,您必须联系您的服务的所有用户,并指示他们获取新版本的合约。
2.性能Java自动转换成XML时,无法确定传输的是什么,一个对象可能引用另一个对象,另一个对象又引用另一个对象,等等,最后虚拟机堆上一半的对象都可能转换成XML,这会导致响应时间变慢。使用合约优先时,您可以显式地描述什么XML被发送到哪里,从而确保它正是您想要的。
3.可重用性在单独的文件中定义模式,允许您在不同的场景中重用该文件。
4.版本控制尽管合约必须尽可能长时间保持不变,但有时确实需要更改。在Java中,这通常会导致新的Java接口,例如AirlineService 2,以及该接口的(新)实现。当然,旧的服务必须保留,因为可能有客户端尚未迁移。如果使用合约优先,我们可以在合约和实现之间有一个更松散的耦合。2这种松散的耦合允许我们在一个类中实现合约的两个版本。
主要区别:
***开发顺序:**主要区别在于设计和实现的顺序,自顶向下从设计开始,自底向上从实现开始。
***合约方式:**自上而下是合约优先的方式,合约设计在实现之前;自下而上是从实现的代码中派生合约。
***用例:**自上而下适用于需要先定义清晰的接口,或者需要多个团队预先就合约达成一致的情况;自下而上适用于快速开发,或者需要将现有代码作为服务公开的情况。
ssm49v7z3#
@mad_programmer -您的意思是使用自下而上或自上而下的方法构建Web服务。在第一种方法中,您开始将类和业务逻辑作为Java代码进行编程,然后从中生成Web服务契约(即WSDL)。后一种方法的意思相反(从WSDL生成类存根)。
pbossiut4#
为了支持andersen的回答,我想补充一点。基本上人们倾向于使用自下而上的方法,因为在大多数情况下,我们已经开始编写bean,业务逻辑等的过程,然后在持久层,我们创建web服务,wsdl等。在一个新项目中,你从头开始构建一些东西,我们可以使用自上而下的方法,我们只需要编写wsdl并构建框架,给予bean、实现、接口等。但是,请记住,计算机无法生成您想要的逻辑。因此,您仍然需要遍历整个项目并填补空白。
dsekswqp5#
当一个项目从头开始时,通常的方法是创建一个非常基本的接口,然后从它创建一个WSDl。这将保存你从编写复杂的WSDl。然后我们可以直接在WSDl中添加项目特定的操作,一旦WSDl完成,我们可以继续使用自顶向下的方法。
brc7rcf06#
在自上而下中,你首先定义你要做的事情,即你的wsdl。然后你继续进行实际的开发。虽然首先创建wsdl看起来很困难,但它推荐(Refer Eclipse),因为从长远来看,它简化了你的开发。
相反的情况发生在自下而上,我们从代码部分开始,然后使用内置的工具创建wsdl,这在开始时似乎很容易,但当你的代码变得复杂时,它会产生很多混乱。