首先,這是什么?
這是一個由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