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