5

我正在开发网络应用程序,在我的产品中我们还提供金融非金融移动服务。

进入细节。

在我的 Web 应用程序中,没有什么比逐步维护流程更简单的了,所有 CRUD 操作都很简单,目前我们正在使用符合我们要求的Spring MVC,但是对于基于移动的服务,我们提供了类似消息总线的支持来交换捎带之间的信息客户端和服务器,我们有自定义代码来实现解决方案。

此外,我们基于移动的服务需要通过不同的协议(如 SOAP、REST)公开,同时需要将通信数据包与服务分离。

我们仅使用SPRING MVC解决了上述所有问题。

我的问题是

  1. 是否值得使用Spring Integration框架替换自定义代码解决方案以使用 Spring Integration 实现消息总线,如果是,我的 Web 应用程序的流程是什么?
  2. 如果我为我的 Web 应用程序使用 Spring Integration,它将如何将 HTTP 请求呈现给 SI?
  3. Spring Integration 是任何基于 Web 的独立应用程序的正确选择吗?
4

1 回答 1

7

Spring Integration 以企业集成模式为模型,最好将其视为支持消息驱动架构。Spring MVC 的历史和起源是为类似于 Struts 的 MVC 模式提供解决方案,主要以线性方式公开由服务支持的模型和控制视图。Spring MVC 的核心之一是允许动态填充将由 JSP 页面(视图)访问的模型。所有这些都是面向 Web 应用程序并结束它们的。

随着服务(Web、RESTful)的发展,Spring MVC 填补了空白并不断扩展以支持对服务的 HTTP 访问,尽管这是其职责的扩展,而不是最初的起源。同时,Spring Integration 的设计目的是处理消息和与服务的消息交互,独立于访问它的协议。为了启用不同的协议,可以使用不同的端点来公开相同的服务。例如,我可以将我的 crud 服务构建在 POJO 中,通过 Service Activator 公开,现在可用于许多不同的协议,包括通过 HTTP、WebServices、Twitter、XMPP 聊天服务、RMI、TCP 等的 REST。

简而言之,Spring MVC == HTTP 访问,Spring Integration == 消息访问(来自 HTTP、File、DB 等)

要在 Spring Integration 中通过 HTTP 公开服务,请使用 HTTP 端点。通常在请求/响应(比如从数据库中读取)中,您会想要使用<int-http:inbound-gateway/>它,它看起来像这样;

<int-http:inbound-gateway request-channel="request.channel" reply-channel="reply.channel"
   path="/myService" supported-methods="GET"/>
<int:channel id="request.channel"/>
<int:service-activator input-channel="request.channel" ref="myService"/>
<int:channel id="output.channel"/>

(要记住的关键点是以下...

<bean class="org.springframework.integration.http.inbound.UriPathHandlerMapping"/>

这有助于path将入站网关的属性映射到 servletdispatcher)

于 2013-04-16T11:28:51.410 回答