javascript
什么是Spring Integration?
首先,這是什么?
這是一個(gè)由SpringSource委托的開(kāi)源項(xiàng)目,旨在利用Spring框架的當(dāng)前功能來(lái)關(guān)注應(yīng)用程序集成空間中發(fā)現(xiàn)的問(wèn)題。 沒(méi)有一個(gè)具體的例子,或者沒(méi)有更基本的理解,最后一句話可能與您所看到的有關(guān)Spring Integration或一般集成的其他信息一樣模糊。 因此,讓我進(jìn)一步詳細(xì)介紹一下,以使該聲明變得不太模糊。
那么,為什么Spring的人們決定創(chuàng)建一個(gè)專(zhuān)門(mén)針對(duì)集成的項(xiàng)目呢? Spring框架本身是否已經(jīng)提供了很多呢? 對(duì)于處理JMS,JDBC,事務(wù)管理,對(duì)象XML映射,http / rmi調(diào)用等,Spring確實(shí)具有出色的抽象。 它還提供了一個(gè)基于依賴(lài)注入的框架,該框架可促進(jìn)代碼更清晰,解耦且更易于測(cè)試。 但是,如果您退后一步,意識(shí)到Spring提供的功能,實(shí)際上只是通用的構(gòu)建基塊,組件模型,可以在無(wú)數(shù)種解決方案中使用。 因此,當(dāng)涉及到系統(tǒng)/應(yīng)用程序集成時(shí),您可以使用這些構(gòu)建模塊來(lái)實(shí)現(xiàn)自己的功能非常強(qiáng)大的解決方案。 但是,應(yīng)用程序集成以及解決這些問(wèn)題所固有的問(wèn)題并不新鮮。 有相當(dāng)多的“模式”是出現(xiàn)一旦你經(jīng)歷過(guò)嘗試了一把,在整合兩個(gè)系統(tǒng)進(jìn)行數(shù)據(jù)交換,過(guò)程調(diào)用,事件通知等,這些模式是很好的格雷戈?duì)朒ohpe和Bobby伍爾夫在其拍攝的永恒本書(shū)“企業(yè)集成模式” 。 就像我肯定在以前的博客文章中提到的那樣,我強(qiáng)烈建議本書(shū)為企業(yè)開(kāi)發(fā)領(lǐng)域的任何人使用。 這些模式是眾所周知的,可以解決大多數(shù)集成問(wèn)題。
Spring的人們決定采用他們的Spring Framework的構(gòu)建塊以及Hohpe的書(shū)中介紹的模式,以創(chuàng)建一個(gè)更加專(zhuān)注的框架,專(zhuān)門(mén)處理集成應(yīng)用程序。
那么集成領(lǐng)域存在什么問(wèn)題呢? 就像我說(shuō)的那樣,對(duì)它們的描述遠(yuǎn)比我在EIP中所能描述的要好得多,但這是對(duì)幾乎總是存在的問(wèn)題的簡(jiǎn)單描述。 兩個(gè)應(yīng)用程序需要共享一條數(shù)據(jù),例如,源自系統(tǒng)A的客戶報(bào)告需要在另一個(gè)系統(tǒng)B中可用。系統(tǒng)A只能通過(guò)直接TCP連接與外部應(yīng)用程序進(jìn)行通信,而系統(tǒng)B具有簡(jiǎn)單的用于將報(bào)告信息加載到其中的Web服務(wù),并且不愿意更改為其他任何內(nèi)容。 您如何去做呢? 您可以編寫(xiě)一些定期運(yùn)行的自定義集成“膠水代碼”:設(shè)置批處理或cron作業(yè),中斷Java的套接字或socket-nio庫(kù),連接至系統(tǒng)A,讀寫(xiě)輸入流,抓取有用的數(shù)據(jù),將其轉(zhuǎn)換為某種中間格式,將某些數(shù)據(jù)映射到SOAP xml消息,以便系統(tǒng)B可以理解它,分解AXIS或HttpCommons并將xml發(fā)送到系統(tǒng)B。涉及許多編碼在創(chuàng)建此集成時(shí),可以將其歸類(lèi)為基礎(chǔ)架構(gòu),而不是真正的“定制”。 例如,連接到TCP并讀取/寫(xiě)入流。 為什么我們必須編寫(xiě)該代碼? 沒(méi)有任何風(fēng)俗習(xí)慣。 將其委托給框架/庫(kù)。 輪詢以查看應(yīng)用程序是否可用? 也請(qǐng)委托,這不是自定義問(wèn)題。 和網(wǎng)絡(luò)服務(wù)呼叫? TCP通信,輪詢或事件處理,Web Service調(diào)用,路由和轉(zhuǎn)換以及許多其他功能的通用組件。 正是Spring Integration提供的。 并且它試圖模仿EIP書(shū)中描述的模式的全部功能,同時(shí)使用以前的Spring Framework用戶熟悉的組件模型。
在“什么是Spring Integration”的討論中,我發(fā)現(xiàn)很多問(wèn)題是它與ESB或SOA架構(gòu)之間的關(guān)系,如果要對(duì)Spring Integration與競(jìng)爭(zhēng)進(jìn)行分析,那么競(jìng)爭(zhēng)到底是什么? ? 首先,Spring Integration不是ESB。 這是一個(gè)“路由”和“中介”框架。 當(dāng)我說(shuō)這是一個(gè)調(diào)解框架時(shí),我的意思是說(shuō)它允許通過(guò)“調(diào)解”消息而使具有不同消息和協(xié)議的兩個(gè)不同系統(tǒng)相互通信:解決/協(xié)商兩者之間的差異,以便它們可以交換數(shù)據(jù)。 該中介和路由框架可以在任何地方使用,不需要部署到重量級(jí)的ESB容器或任何ESB容器中。 它可以部署在應(yīng)用程序內(nèi)(獨(dú)立的應(yīng)用程序或應(yīng)用程序服務(wù)器中的Java EE解決方案的一部分),ESB內(nèi)(如果需要),消息代理的一部分等。在部署方面具有靈活性。 Spring Integration本身不應(yīng)與ServiceMix , MuleESB , TIBCO , IBM或Oracle的ESB解決方案或其他ESB進(jìn)行比較 。 我想到的一個(gè)可以比較的開(kāi)源項(xiàng)目是Apache的Camel項(xiàng)目,它也是一個(gè)中介和路由引擎。 Apache Camel還是解決集成問(wèn)題空間的非常強(qiáng)大且功能強(qiáng)大的解決方案,它還實(shí)現(xiàn)了EIP書(shū)中的模式。 如果讀者表現(xiàn)出興趣,我可以在以后的博客文章中進(jìn)行比較。
有關(guān)Spring Integration的更多信息,我建議訪問(wèn)他們的項(xiàng)目頁(yè)面 ,閱讀最近出版的Pro Spring Integration一書(shū),當(dāng)然還要閱讀并完全理解EIP書(shū) 。
參考: 什么是Spring Integration? 來(lái)自我們的JCG合作伙伴 Christian Posta,網(wǎng)址為Christian Posta Software博客。
翻譯自: https://www.javacodegeeks.com/2012/04/what-is-spring-integration.html
總結(jié)
以上是生活随笔為你收集整理的什么是Spring Integration?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 南宋北宋如何划分 南宋北宋如何区分
- 下一篇: 使用Spring Roo进行快速云开发–