【发布时间】:2012-03-19 17:15:06
【问题描述】:
Spring Framework 为应用程序通过 HTTP 相互通信提供了许多技术。
- HTTP 调用程序
- RESTful MVC 控制器
- JAX-WS
- 弹簧-WS
它们之间有什么区别?什么标准决定了选择哪一个?
【问题讨论】:
标签: web-services spring remoting
Spring Framework 为应用程序通过 HTTP 相互通信提供了许多技术。
它们之间有什么区别?什么标准决定了选择哪一个?
【问题讨论】:
标签: web-services spring remoting
JAX-WS 是由 JCP(Java 社区进程)维护的标准,每个功能齐全的应用程序服务器都实现了它(或至少提供了一个实现)。它易于使用(您只需要在服务类端点中添加一些注释)并且您无需担心实现(并且您的应用程序将在其中包含更少的依赖项)。
当 JAX-WS 处于开发阶段(或从未存在过)时,Spring-WS 很普遍。它实现了与 JAX-WS 相同的功能,但更麻烦一些。根据我的经验,后者正在失去高手。
基于 HTTP 的服务(如 HTTP 调用程序和 REST)声称比 JAX-WS 更轻量级(因为端点不需要处理 SOAP 信封),但不像基于 WSDL 的服务那样强类型。
当我必须选择时,如果没有充分理由采用基于 REST 的方法,我通常会选择 JAX-WS。我一点也不喜欢 HTTP Invoker,因为它是安全问题(即使在谈论 Intranet 时),但我认为这是一种个人选择。
【讨论】:
如果您正在集成自己的应用程序并且您对应用程序客户端和线路(例如公司内部网)有严格的控制,那么请使用 HTTP Invoker - 它对应用程序非常透明且易于设置。具有不可靠客户端身份验证(没有 PKI 身份验证)的 Internet 上的 Http 调用程序可能不是一个好主意,调用程序中使用了带有 java 序列化的 security problems。
如果调用程序不适合您,而且它是您自己的应用程序,那么请考虑 REST。
我认为基于 WSDL 的服务有利于外部集成 - 您可以使用严格的规则定义协议。
【讨论】: