閱讀613 返回首頁    go 京東網上商城


基於中間件/構件的開發

定義:

中間件(middleware)是基礎軟件的一大類,屬於可複用軟件的範疇。顧名思義,中間件處於操作係統和用戶的應用軟件的中間。

中間件在操作係統、網絡和數據庫之上,應用軟件的下層,總的作用是為處於自己上層的應用軟件提供運行和開發的環境,幫助用戶靈活、高效地開發和集成複雜的應用軟件,中間件是一類軟件,中間件不僅要實現互聯,還要實現應用之間的互操作;中間件是基於分布式處理的軟件,最突出的特點是其網絡通信功能。


軟件複用:

最早的軟件開發方法就是編程、寫代碼,其缺點在於無法複用,為此提出了構件化的軟件開發方法,通過把編程中一些常用功能進行封裝,並規範統一接口,供其它程序調用,例如我們開發一個新軟件,可能要用到構件1、構件2、構件3,那麼,我們隻要對其進行本地組裝,就可以得到我們想要的應用軟件。但是,這種構件的重用任然是”代碼“重用,隨著技術的不斷演化、業務的不斷變化,應用的交互常常需要架設在異構係統之上,此時,代碼複用將無能為力,所以軟件開發方法在構件化的技術上結合互聯網技術又有了新發展,其核心思想是軟件並不需要囊括構件,所需要的僅僅是構件運行的結果。也就是麵向服務(SOA)的思想,但SOA並不是一個產品,而是一種思想方法,實現這種方法的基礎唯有中間件。例如我們可以在Apache的web server的基礎上,加上一組能夠處理SOAP請求並返回SOAP結果的解析器,那麼此處的Web server和WS 構件就是我們提供SOA服務的中間件。


中間件分類:

遠程過程調用(RPC)中間件

遠程過程調用是一種廣泛使用的分布式應用程序處理方法,一個應用程序使用RPC來”遠程“執行一個位於不同地址空間裏的過程,並且從效果上看和執行本地調用相同。此類中間件需要根據相應的RPC規範,例如CORBA和Web Service,需要提供相應的服務支持,如屏蔽底層通信的細節,以及數據在異構係統之間的流轉,服務在服務器端的注冊、發現和使用等


麵向消息的中間件

RPC的調用時同步調用,客戶端和服務器直接連接,沒有中間機構來處理請求,通信過程中,服務器要保持在線狀態。MOM指的是利用高效可靠的消息傳遞機製進行平台無關的數據交流,並基於數據通信來進行分布式係統的集成,其特點是:

1,通訊程序可在不同的時間運行。

2,減少係統延遲,對應用程序的結構沒有約束,可以是一對一的聯係,也可以是一對多的聯係。

3,解耦調用者和被調用者,使程序與網絡複雜性相隔離。


數據訪問中間件

對數據庫訪問的各種driver,或者能夠提供分布式數據庫訪問的數據訪問層

事務處理監控
通過對事務的監控,進行事務管理和協調、負載均衡、失敗恢複等
事務管理,即保證在其監控下的事務處理的原子性、一致性、獨立性和持久性。

企業服務總線(ESB:Enterprise Service Bus):
ESB是一種開放的、基於標準的分布式同步或異步信息傳遞中間件。虛擬化了服務的地理位置。
ESB類似於硬件係統裏總線的概念,所有服務之間的調用統一通過ESB,ESB負責傳遞相應的的請求到相應的服務,從而使得各個應用隻需要和ESB進行通信,就能滿足各種服務要求,省去了各服務器向外暴露自己端點(Endpoint)的麻煩,同時也降低了服務請求者和服務提供者之間的耦合,因為假如某個服務需要更改自己的endpoint,隻需要在ESB的注冊服務上修改相應的配置信息即可,而對於客戶端是完全透明的。

基於XML的中間件(XML-Based Middleware):

XML允許開發人員為實現在internet中交換結構化信息而創建文檔。


中間件的發展趨勢

1,規範化

在中間件的發展過程中,做的最好的一件事情就是規範的製定。對於不同類型的中間件,目前都有一些規範可以遵循,如消息類的JMS,對象類的CORBA、COM,交易類的XA,JTA,應用服務器類的J2EE,.NET,數據訪問類的ODBC和JDBC,JTA,Web服務有WSDL,UDDI,SOAP以及JAX-RS(JSR 311)等。這些規範極大的促進了中間件技術的發展,同時保證了係統的擴展性、開放性和互操作性。

2,構件化和鬆耦合

除了過時的CORBA和DCOM的基於對象的RPC構件技術外,隨著企業業務流程整合和電子商務應用的發展,中間件技術朝著麵向Web、鬆耦合的方式發展。基於XML和Web服務的中間件技術,使得不同係統之間、不同應用之間的交互建立在非常靈活的基礎上。XML是一種可擴展的標識語言,是一種中立於開發語言的結構化文檔表現方式,非常適合於異構係統間的數據交換,因此在國際上已經被普遍采納為電子商務的數據標準。而Web服務作為基於Web技術的構件,在流程中間件和集成下可以靈活、動態地被組織成跨企業的商務應用。

3,平台化



最後更新:2017-04-03 14:53:50

  上一篇:go 網絡子係統73_入口路由緩存查找
  下一篇:go 網絡子係統70_路由緩存操作