首先,这是什么?
这是一个由SpringSource委托的开源项目,旨在利用Spring框架的当前功能来关注应用程序集成空间中发现的问题。 没有一个具体的例子,或者没有更基本的理解,最后一句话可能与您所看到的有关Spring Integration或一般集成的其他信息一样模糊。 因此,让我进一步详细介绍一下,以使该声明变得不太模糊。
那么,为什么Spring的人们决定创建一个专门针对集成的项目呢? Spring框架本身是否已经提供了很多呢? 对于处理JMS,JDBC,事务管理,对象XML映射,http / rmi调用等,Spring确实具有出色的抽象。 它还提供了一个基于依赖注入的框架,该框架可促进代码更清晰,解耦且更易于测试。 但是,如果您退后一步,意识到Spring提供的功能,实际上只是通用的构建基块,组件模型,可以在无数种解决方案中使用。 因此,当涉及到系统/应用程序集成时,您可以使用这些构建模块来实现自己的功能非常强大的解决方案。 但是,应用程序集成以及解决这些问题所固有的问题并不新鲜。 有相当多的“模式”是出现一旦你经历过尝试了一把,在整合两个系统进行数据交换,过程调用,事件通知等,这些模式是很好的格雷戈尔Hohpe和Bobby伍尔夫在其拍摄的永恒本书“企业集成模式” 。 就像我肯定在以前的博客文章中提到的那样,我强烈建议本书为企业开发领域的任何人使用。 这些模式是众所周知的,可以解决大多数集成问题。
Spring的人们决定采用他们的Spring Framework的构建块以及Hohpe的书中介绍的模式,以创建一个更加专注的框架,专门处理集成应用程序。
那么集成领域存在什么问题呢? 就像我说的那样,对它们的描述远比我在EIP中所能描述的要好得多,但这是对几乎总是存在的问题的简单描述。 两个应用程序需要共享一条数据,例如,源自系统A的客户报告需要在另一个系统B中可用。系统A只能通过直接TCP连接与外部应用程序进行通信,而系统B具有简单的用于将报告信息加载到其中的Web服务,并且不愿意更改为其他任何内容。 您如何去做呢? 您可以编写一些定期运行的自定义集成“胶水代码”:设置批处理或cron作业,中断Java的套接字或socket-nio库,连接至系统A,读写输入流,抓取有用的数据,将其转换为某种中间格式,将某些数据映射到SOAP xml消息,以便系统B可以理解它,分解AXIS或HttpCommons并将xml发送到系统B。涉及许多编码在创建此集成时,可以将其归类为基础架构,而不是真正的“定制”。 例如,连接到TCP并读取/写入流。 为什么我们必须编写该代码? 没有任何风俗习惯。 将其委托给框架/库。 轮询以查看应用程序是否可用? 也请委托,这不是自定义问题。 和网络服务呼叫? TCP通信,轮询或事件处理,Web Service调用,路由和转换以及许多其他功能的通用组件。 正是Spring Integration提供的。 并且它试图模仿EIP书中描述的模式的全部功能,同时使用以前的Spring Framework用户熟悉的组件模型。
在“什么是Spring Integration”的讨论中,我发现很多问题是它与ESB或SOA架构之间的关系,如果要对Spring Integration与竞争进行分析,那么竞争到底是什么? ? 首先,Spring Integration不是ESB。 这是一个“路由”和“中介”框架。 当我说这是一个调解框架时,我的意思是说它允许通过“调解”消息而使具有不同消息和协议的两个不同系统相互通信:解决/协商两者之间的差异,以便它们可以交换数据。 该中介和路由框架可以在任何地方使用,不需要部署到重量级的ESB容器或任何ESB容器中。 它可以部署在应用程序内(独立的应用程序或应用程序服务器中的Java EE解决方案的一部分),ESB内(如果需要),消息代理的一部分等。在部署方面具有灵活性。 Spring Integration本身不应与ServiceMix , MuleESB , TIBCO , IBM或Oracle的ESB解决方案或其他ESB进行比较 。 我想到的一个可以比较的开源项目是Apache的Camel项目,它也是一个中介和路由引擎。 Apache Camel还是解决集成问题空间的非常强大且功能强大的解决方案,它还实现了EIP书中的模式。 如果读者表现出兴趣,我可以在以后的博客文章中进行比较。
有关Spring Integration的更多信息,我建议访问他们的项目页面 ,阅读最近出版的Pro Spring Integration一书,当然还要阅读并完全理解EIP书 。
参考: 什么是Spring Integration? 来自我们的JCG合作伙伴 Christian Posta,网址为Christian Posta Software博客。
翻译自: https://www.javacodegeeks.com/2012/04/what-is-spring-integration.html