是否有可能通过SOA应用HATEOAS原则?

inf*_*rno 3 oop rest soa soap hateoas

问题是理论上的.我发现面向资源的体系结构和面向服务的体系结构之间的区别类似于面向对象编程和过程编程之间的区别.通过面向资源的体系结构,服务(命名空间)发布我可以调用方法(方法)的资源(对象).通过面向服务的体系结构,服务(命名空间)发布我可以调用的操作(函数).

通过面向资源的架构,我可以根据HATEOAS原则编写自生成客户端.我只需要发回包含链接资源的URL的数据.是否可以通过面向服务的体系结构使用类似的方法?如果不是,那么它是否依赖于与程序编程的类比,还是其他原因?

Wil*_*ung 5

可以很容易地认为REST架构是一个SOA,它只是对它有更多的约束.

必须在较低级别的SOA系统之上使用HATEOAS方面,为有效负载添加约束.不要忘记你没有注意HTTP来做HATEOAS.REST没有绑定到HTTP,HTTP只是一个带有REST启发的协议.

例如,在您的SOA有效负载中,您可以拥有自己的内部链接引用.这些将包含URL,但URL不必看起来像http://example.com.他们可以yourapp://your?custom!url:format.第一次冒号后的所有内容都由该方案解释(yourapp在本例中为vs http).

这些不一定是直接参考.在HTTP中,它们不是直接引用,例如,它们依赖于DNS查找主机名.您可以使用自己的发现协议(LDAP,UDDI,/ etc/hosts等)实现自己的查找机制.

SOAP标头与HTTP标头没有区别.不同之处在于如何解释这些头文件的语义.例如,如果您具有解释它的基础结构,则始终可以将缓存标头添加到SOAP有效负载.

因此,将HATEOAS添加到通用SOA当然是可能的.随着您从REST架构中添加越来越多的约束,您将慢慢变得更像REST.您可能完全不同于Web和HTTP,因为您使用不同的有效负载,不同的传输和不同的协议,但这是一个细节.REST!= HTTP.

记住,我不是说这很容易.你必须做一些提升,工具包会打你.但这是可能的.