劉志清 楊朔 陳進原
摘 要: 分析了企業(yè)中大量現(xiàn)有的.NET應用程序與J2EE應用程序集成的關鍵問題,闡述了目前應用WebService的集成方案所存在的缺點,在此基礎上提出了基于ESB的.NET應用程序與J2EE應用程序集成方案。該集成方案可以保證消息的可靠傳遞,提供靈活的消息路由,增強服務的可管理性,并且提供協(xié)議的轉(zhuǎn)換功能。
關鍵詞: .NET; J2EE; 系統(tǒng)集成; Webservice; ESB
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2013)05-37-02
Integration of .NET and J2EE application
Liu Zhiqing1, Yang Shuo2, Chen Jinyuan2
(1. Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China; 2. Zhejiang Topcheer Information Technology Co.,Ltd)
Abstract: The key problems in integration of .NET application and J2EE application in enterprise have been analyzed. The shortcomings of WebService integreation are discussed. On this basis the integrated solution is introduced based on ESB. The integrated solution can guarantee reliable delivery of messages, provide a flexible message routing, enhance manageability of services, and supply protocol conversion functions.
Key words: .NET; J2EE; system integration; WebService; ESB
0 引言
隨著時代的發(fā)展,企業(yè)的信息化程度越來越高,信息化在給企業(yè)帶來便利和機遇的同時,也給企業(yè)帶來了新的困惑和挑戰(zhàn)。由于企業(yè)中的信息系統(tǒng)往往是由不同的公司、團隊和技術實施的,這些系統(tǒng)缺少相應的接口標準和規(guī)范,各系統(tǒng)只能獨立運行,成為了一個個的信息孤島(如圖1所示)。如何用更基于標準的和互操作性更好的方式來實現(xiàn)企業(yè)應用程序的集成,是我們重點要探討的。
[CRM系統(tǒng)] [數(shù)據(jù)庫] [ERP系統(tǒng)] [數(shù)據(jù)庫] [庫存管理
系統(tǒng)] [數(shù)據(jù)庫]
圖1 企業(yè)中的各類信息系統(tǒng)
1 J2EE與.NET平臺
在企業(yè)應用中,J2EE技術的應用比較廣泛。隨著.NET框架的逐步推廣,使用.NET開發(fā)的企業(yè)應用也在增長。目前,這兩個平臺在企業(yè)級應用中占據(jù)著重要地位,兩個平臺之間的互操作存在大量的現(xiàn)實需求[1]。
在企業(yè)級應用中J2EE與.NET一般均采用三層架構:表示層、業(yè)務層和數(shù)據(jù)層,不同平臺采用不同組件來實現(xiàn)不同層的功能,.NET與J2EE各層組件的比較如表1所示。
表1 J2EE與.NET平臺各層組件的比較
[服務\&J2EE\&.NET\&表示層\&客戶GUI\&AWT/SWING\&Windows Forms\&Web GUI\&JSP\&ASP.NET\&Web Scripting\&Servlet,F(xiàn)ilter\&ISAPI,HttpHandler,HttpModule\&業(yè)務層\&業(yè)務邏輯組件\&EJB\&.NET服務組件類或COM+\&數(shù)據(jù)層\&數(shù)據(jù)訪問\&JDBC\&ADO.NET\&消息\&JMS\&MSMQ\&其他\&目錄訪問\&JNDI\&ADSI\&遠程調(diào)用\&RMI-IIOP\&.NET Remoting\&事務處理\&JTA\&COM+/DTC\&虛擬機\&JRE\&CLR\&開發(fā)語言\&Java\&C#,C++,VB.NET,J#\&]
J2EE應用程序與.NET應用程序的集成,主要有以下三種集成方式:①表示層的集成;②業(yè)務層的集成;③數(shù)據(jù)層的集成。
2 集成的關鍵問題
解決不同平臺功能單元的通信或傳輸問題,首先要去除平臺之間的差異。在互操作的過程中最重要的差異是數(shù)據(jù)類型的差異,構件之間的交互是通過特定的通信協(xié)議來傳輸特定的數(shù)據(jù),兩個平臺的數(shù)據(jù)類型可能是不一致的,在數(shù)據(jù)傳輸時所使用的通信協(xié)議的不一致也相當于數(shù)據(jù)類型的不一致。因此,集成的關鍵是要解決數(shù)據(jù)格式的轉(zhuǎn)換問題。
集成時的數(shù)據(jù)交換,需要主要解決以下三個問題:①基本數(shù)據(jù)類型的映射;②如何提供一方不具備的數(shù)據(jù)類型;③如何轉(zhuǎn)換復雜的數(shù)據(jù)類型。
3 目前系統(tǒng)集成的解決方案
目前.NET項目與J2EE項目集成主要采用Web服務集成方案[2]。Web服務的整個技術體系都是基于XML的。Web服務的三個角色之間的通信所傳輸?shù)男畔⒘鞫际荴ML格式的。這些信息流的解釋需要更高層次的協(xié)議規(guī)范,包括WSDL(Web服務描述語言)、SOAP(簡單對象訪問協(xié)議)和UDDI(統(tǒng)一描述、發(fā)現(xiàn)和集成)共同組成WebService的關鍵技術體系。
SOAP(Simple Object Access Protocol):在通信的最低級別,系統(tǒng)需要使用同一語言。特別是作為通信雙方的應用程序需要遵守同一套通信規(guī)則:如何標識不同的數(shù)據(jù)類型,以及如何標識命令(即:需要對數(shù)據(jù)進行何種操作)。另外,在必要的時候應用程序還需要對該語言適當?shù)臄U展。簡單對象訪問協(xié)議(SOAP)是XML的實施工具,它提供了一套公共規(guī)則集,該規(guī)則集說明了如何標識并擴展數(shù)據(jù)和命令。
WSDL(WebService描述語言):雙方應用程序在得到了如何表示數(shù)據(jù)類型和命令的規(guī)則后,需要對所接受的特定數(shù)據(jù)和命令進行有效的描述,僅僅說明已接收到某種類型的數(shù)據(jù)是不夠的,還應當說明對接收到的數(shù)據(jù)應該進行哪些操作。WebService描述語言(WSDL)是一種XML語法,開發(fā)人員和開發(fā)工具可使用它來表述Web服務的具體功能。
UDDI協(xié)議:一旦部署了Web服務,潛在用戶就必須能夠發(fā)現(xiàn)它在什么地方,以及如何工作。統(tǒng)一描述、發(fā)現(xiàn)和集成(UDDI)是一種行業(yè)內(nèi)的規(guī)范,它定義了一項基于SOAP的協(xié)議,用于更新和查詢Web服務信息庫。UDDI可以發(fā)布并實現(xiàn)Web服務,最大限度地訪問站點并獲得最終的成功。
Web服務已經(jīng)被廣泛作為一種標準服務,它提供了一個通用的、跨平臺的服務協(xié)議。J2EE和.NET框架都支持標準的Web服務,通過把應用程序的內(nèi)部功能暴露為Web服務,J2EE與.NET程序就可以實現(xiàn)互操作。Web服務的集成方案如圖2所示。
[應用A\&WebService訪問接口\&][應用B\&WebService訪問接口\&] [WebService調(diào)用][WebService訪問接口\&應用C\&] [WebService調(diào)用][WebService訪問接口\&應用D\&] [WebService調(diào)用] [WebService調(diào)用]
圖2 Web服務集成方案
WebService使用XML語言,這樣就提供了平臺和語言無關性。WebService提供了標準的訪問接口,使得Web服務之間的訪問和調(diào)用標準化,易于集成。WebService使用標準的互聯(lián)網(wǎng)協(xié)議HTTP協(xié)議進行通信,可以輕松的穿越防火墻。
采用WebService技術進行應用集成,就是對應用系統(tǒng)做簡單的連接通信,它適用于整合應用系統(tǒng)不多的情況,系統(tǒng)柔性差,無法保證可靠性,可管理性差,并且不能應用到較復雜的應用系統(tǒng)整合。Web服務集成方案存在諸多不足,因此,提出了基于ESB的.NET應用程序與J2EE應用程序的集成方案。
4 基于ESB的.NET應用程序與J2EE應用程序的集成方案
企業(yè)服務總線ESB(Enterprise Service Bus)是SOA架構的實現(xiàn)之一,是目前實現(xiàn)服務集成最有效的手段[3]。ESB采用總線式架構,作為中樞神經(jīng)樞紐,對所有需集成的服務和應用實行集中管理,負責消息的轉(zhuǎn)換、路由、映射。使需要集成的異構系統(tǒng)可以相互通信,同時保持它們之間的松耦合關系,基于ESB的集成方案如圖3所示。
[Enterprise Service Bus] [J2EE應
用程序][.NET應
用程序][.NET應
用程序][.NET應
用程序][J2EE應
用程序][J2EE應
用程序] [SOAP/HTTP] [JMS][SOAP/HTTP][SOAP/HTTP][JMS] [SOAP/HTTP]
圖3 基于ESB的集成方案
如圖3所示,J2EE應用程序通過JMS消息或SOAP協(xié)議與ESB進行通信;.NET程序主要通過SOAP與ESB進行通信,在ESB內(nèi)部可以實現(xiàn)消息的格式轉(zhuǎn)化以及服務的管理。
使用企業(yè)服務總線實現(xiàn)應用集成,可以帶來以下優(yōu)勢。
⑴ 可靠消息傳遞:在企業(yè)服務集成中,涉及到多個服務使用者與服務提供者。企業(yè)服務總線負責實現(xiàn)參與者不同消息格式之間的適配轉(zhuǎn)換。同時提供可靠性傳輸機制,保證消息安全、可靠傳輸。
⑵ 靈活的消息路由:企業(yè)服務總線負責服務使用者與服務提供者間的消息轉(zhuǎn)發(fā),并提供多種路由模式,可以滿足復雜的集成交互流程。
⑶ 服務的可管理性:ESB平臺中存儲了接入ESB系統(tǒng)的所有服務描述信息,這樣就可以做到服務的部署/卸載,服務的查詢,服務的信息同步,服務的生命周期管理,還有服務質(zhì)量管理,服務的安全可靠性管理等等。
⑷ 協(xié)議的轉(zhuǎn)換:ESB可以采用不同的通信協(xié)議與不同應用進行交互,這樣便可以使不同的平臺應用很方便地接入ESB中。
5 結(jié)束語
本文提出了一種.NET應用程序與J2EE應用程序的集成方案,該方案采用了企業(yè)服務總線ESB方式來集成運行在異構環(huán)境中的.NET應用程序與J2EE應用程序,是易于實現(xiàn)和有效的。相對于傳統(tǒng)的WebService集成方案,該方案具有保證消息可靠傳遞、提供靈活的消息路由、協(xié)議的轉(zhuǎn)化,以及服務的可管理性等諸多優(yōu)點,使得集成的系統(tǒng)能夠穩(wěn)定、高效地運行。
該方案還存在一些問題有待我們進一步去解決,例如:如何提高消息轉(zhuǎn)換的效率,如何實現(xiàn)高效的動態(tài)路由等。
參考文獻:
[1] 雷軍程. .NET與J2EE平臺互用性研究[D].中南大學,2008.
[2] 苗青,陳鋼.基于WebService的高校應用集成[J].計算機技術與發(fā)展,
2008.18(3).
[3] 王銘.基于ESB的企業(yè)應用集成框架的研究與應用[D].上海交通大
學,2010.