2013-04-15 82 views
4

我正在开发Web应用程序,同样在我的产品中,我们也提供财务 - 非财务移动服务。对于基于Web或基于移动的应用程序,是否值得使用Spring Integration而不是Spring MVC?

详细说明。

在我的web应用程序,有没有像保持流动一步一步,简单的所有CRUD操作,目前我们正在使用Spring MVC的这符合我们的要求,但为基础的移动服务,我们提供像消息总线支持在客户端和服务器之间交换捎带信息,我们有自定义代码来实现解决方案。

而且我们的手机为基础的服务需要暴露在如SOAP,有需要从服务的通信数据包的解耦沿着REST不同的协议。

我们使用Spring MVC的只有解决了所有上述问题。

我的问题是

  1. 是否值得使用Spring集成框架,以取代自定义代码的解决方案来实现消息总线与Spring集成如果是这样,这将是我的web应用程序的流程?
  2. 如果我为我的Web应用程序使用Spring Integration,它将如何将HTTP请求呈现给SI?
  3. Spring Integration是否适用于任何独立的基于Web的应用程序?

回答

7

Spring集成模仿企业集成模式,可以最好地认为是支持消息驱动体系结构。 Spring MVC的历史和起源是为类似于Struts的MVC模式提供解决方案,主要以线性方式公开由服务支持的模型和控制视图。 Spring MVC的核心之一是允许一个可以被JSP页面访问的模型的动态填充(View)。所有这些事情都是以Web App为导向并结束它们的。随着服务(Web,RESTful)的发展,Spring MVC填补了一个空白,并不断扩展以支持HTTP访问服务,尽管这是扩展其职责,而不是首先出现。与此同时,Spring Integration的设计目的在于处理消息和消息与服务的交互,而不依赖于访问的协议。要启用不同的协议,可以使用不同的端点来公开相同的服务。例如,我可以将我的crud服务构建在POJO中,通过Service Activator公开,现在可用于许多不同的协议,包括通过HTTP,WebServices,Twitter,XMPP聊天服务,RMI,TCP等的REST。

总之,春季MVC == HTTP访问,Spring集成==消息访问(从HTTP,文件,DB,等)

在Spring集成经由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)

相关问题