J2EE和.Net能和平共處嗎?
在企業IT領域,開發Web服務的重要性已經越來越明顯了,正因為Web服務的出現,企業資料和企業運行的流程通過遠端存取的方式渾然一體。就Web服務來說,有些人可能會把Sun公司開發的Java 2、Enterprise Edition (J2EE)和微軟公司開發的.NET技術,視作相互排斥的Web服務解決方案,但是Noel Clarke(原SilverStream軟體公司高級電子商務戰略專家)卻不這樣想。他認為,以上的三種Web服務技術完全可以共存。在今年3月JavaOne開發者大會的一次技術座談會上(TS-3154),Clarke從交付和消費Web服務的角度對這幾類技術進行正反面的評述。
電子商務悖論
Web服務用戶需要什麼?Clarke指出,Web服務的出現主要是由所謂的"電子商務悖論"這一現實狀況所產生的。他說:「因電子商務而引發的巨大變革,反而阻礙了電子商務贏得成功。只有當我們有能力快速地在我們企業內部乃至企業之間互相操作,網路商務給我們帶來的美好希望最終才得以實現。」
為了綜合性的整合,我們必須使複雜的各項商業功能得以分享共用,同時能以一種靈活的處理流程把這些功能聯繫在一起,並以適當的資料格式(適應多樣的客戶設備)交付這些功能,而且要讓商業功能可以在任何地方都能被人找到。
SOAP、WSDL和UDDI之三位一體
真正的Web服務能提供商務工作的可重用單元和對商務資料的存取。Web服務並不關心資料的表達,它們能被API或GUI調用。結果,獲取服務的消費者可以採取任何需要的形式來顯示Web服務的結果,不管是HTML、Swing、WML、HDML還是XML等等。到最後,服務用到的協定和資料表示方式,不僅無所不在而且具有強烈的內部網路親和性。
用XML、SOAP、WSDL和UDDI提供Web服務
目前Web服務的基礎結構由SOAP(簡單物件訪問協定)、WSDL(Web服務描述語言)和UDDI(通用描述、發現和集成)構成。Clarke說:「我們為這些服務構造XML前端,然後獲取XML資訊並且用WSDL來描述它,之後再用SOAP消息包裝這些資訊。一旦造就了SOAP消息就可以從任何平臺調用它,所使用的技術也不少--Perl、Python、Java、.NET等等都可以做到。然後我們就可以在UDDI註冊表中發佈這些WSDL定義,這樣我們的顧客和合作夥伴就可以使用這些商務過程。」
.NET
提到Web服務的時候,許多人把J2EE和.NET這兩大技術陣營之間的爭鬥視作了另一場「可樂之戰」。Clarke說:「有些人認為這就像口味偏好一樣,你必須在兩者之間做出選擇。但是,我們相信Web服務確實是可以共存的。而且我們相信這種共存關係正是實現Web服務互操作的關鍵所在。」
Clarke接下來對.NET架構的基本組成單元進行了詳細說明:
1."智慧型"客戶軟體應用程式使PC和其他類型的設備能夠作用於XML Web服務
2.XML Web服務由那些能相互連結起來的小型可重用元件應用程式所組成
3..NET伺服器負責發佈、管理和編制XML Web服務
4.開發工具--包括Visual Studio .NET和.NET Framework等,而正是這些工具建立、部署和運行XML Web服務
.NET為其支援的所有語言提供了單一的開發環境,這些編程語言包括Visual Basic ( VB )、C++以及最新推出的C#等。C#語言在構造上類似Java語言,而且同樣包括了垃圾收集(Garbage Collect)等功能。Clarke就此評價說:「在這個領域裏的很多人肯定會驚詫地說,嗨!那玩意兒不就是Java嗎?哪年頭早就有了!」
.NET環境可以讓開發者輕鬆地把應用程式開發為Web服務。然後開發者們可以方便地把Web服務歸併到更大型的應用程式中,最後就可以從任何運行Web服務棧的平臺調用到Web服務。同時,.NET My Services則把傳統的微軟客戶應用程式,比如錢包、收件箱、日曆等功能分解成為各種單一的Web服務。
用VB、C++以及C#編寫的應用程式都採用.NET之下的同類系統庫,而且它們會被首先編譯為MSIL(微軟仲介語言)代碼,之後在公共語言運行時(CLR)才能解釋。Clarke指出,執行方式與Java語言的位元組碼和虛擬機非常相似。
J2EE
J2EE是基於Java技術的一整套企業應用開發標準和規範以及與硬體無關的運行環境。J2EE能夠為開發的產品帶來顯著的可攜性、彈性、穩定性、安全性和可管理性。對此,Clarke進一步說,這種平臺一個重要面向就是它已經問世大約5年左右,而且在多種硬體平臺均具有各類實質運作,相比微軟 ( .NET ),後者目前只有一種CLR,而且還是剛剛實現的一種。
J2EE平臺是Java Community Process (JCP)開發的,這是一個由許多主流技術公司組織的標準體。作為產業開發的結果,供應商們針對J2EE開發了大量的Web服務工具,比如Sun 的Forte for Java (FFJ)、Eclipse(由IBM推出一種公開源代碼的開發工具)、Borland 的Jbuilder以及Silverstream 的eXtend 產品線等。同時,Systinet公司提供了可插入Forte、Jbuilder 和Eclipse 的一套工具,因而為這些產品帶來了額外的Web服務功能。Clarke說:「並不只有微軟樂意演這場戲,整個陣營內的公司們團結在一起造就了這些Java規範、標準和工具。」
Java Community Process還逐步開發出了很多與Web服務有關的前端應用程式,其中包括大量適合XML處理的JSR(Java 規範請求)。這些性能突出的API 將在JDK 1.4或1.5版本中發佈:
‧ JSR-031 -- Java API for XML Binding (JAXB)
‧ JSR-067 -- Java APIs for XML Messaging 1.0 (JAXM)
‧ JSR-093 -- Java API for XML Registries 1.0 (JAXR)
‧ JSR-101 -- Java API for XML-based RPC (JAX-RPC)
‧ JSRJSR-109 -- Implementing Enterprise Web Services
‧ JSR-110 -- Java APIs for WSDL
‧ JSR-111 -- Java Services Framework
‧ JSR-155 -- Web Services Security Assertions
‧ JSR-156 -- XML Transactioning API for Java (JAXTX)
‧ JSR-159 -- Java Process Component API (JPC)
前路漫漫
要有效地構造服務應用程式就必須完成XML整合、舊應用連接、業務過程管理、UDDI註冊表、內容管理、個性化、業務邏輯以及前端開發等應用目標。不過Clarke坦承這將是個相當複雜的過程。
由於任務的複雜性,技術設計師們又在設想一種稱為ISE(綜合服務環境)的新一類產品。ISE通過提供設計環境、運行時可執行文件和部署平臺等措施,把Web服務開發的複雜性降低到商務應用程式開發水準,進而為平臺供應商、框架供應商以及IDE/工具包開發商提供了系統整合的可能。
在Web服務開發不斷擴展的同時,大量技術公司創造的革新產品在推廣Web服務方面更具有重要意義,甚至可與Java平臺規範以及JCP的作用相媲美。
這種全行業的共同參與在安全和身份識別領域更顯得彌足珍貴。在Web服務世界裏,所謂的身份就是指電話號碼、通信地址、信用卡號等個人的資訊。
.NET技術體系下的身份架構叫作Passport(護照),Passport在微軟伺服器上儲存個人資訊。Clarke表示,微軟把Passport視為一個顯著的優點,但是,由於此一技術存在著許多漏洞,以至於採用Hotmail就可以獲得人們的信用卡號。
Liberty Alliance Project是一個由超過30家商業公司組成的合作組織,其職責就是為Java平臺實現開放和聯合的網路身份解決方案。該組織管理層的成員代表超過十億的會員,其中包括:美國運通、AOL時代華納、加拿大貝爾、Citigroup、法國電信、通用汽車、環球電訊、惠普公司、國際萬事達卡、諾基亞、美聯航空以及Vodafone等國際企業。該組織堅持的原則是,用戶帳號資訊必須掌握在當前擁有其資訊的單位手中,由用戶管理帳戶資訊而非一個中央機構來完成此一職能,而且用戶有權選擇由那些機構在安全狀態下共用其身份資訊。
共同點
目前已經出現了可以把Java語言編譯為微軟仲介語言,或反其道而行之的多類編譯專案。
同時,沒有任何辦法能阻止J2EE的開發人員利用那些由.NET所開發的Web服務,因為Web服務是建立在標準基礎之上。事實上,Clarke就演示了這兩種技術之間的互操作性:從Java客戶程式調用.Net生成的Web服務。
建議
在向客戶推薦採用J2EE或.NET 建構Web服務時,Clarke還是建議充分利用兩種技術的優點。
Microsoft/.NET 從歷史上看主要佔據於PC桌面GUI 和作業系統領域,其目標定位是小型企業、家庭辦公和企業桌面用戶。但是在其平臺上,高水準的開發人員在人數上來說還是相對較少。另外,Clarke認為,.NET還不能算是真正的企業類架構,而且它完全鎖定在微軟產品的範圍之內。
另一方面,J2EE 平臺建立在基於指令的UNIX 基礎之上,其定位在開發人員,而且在大型企業系統市場有強大的用戶基礎。這種平臺的高水準開發者數量是相當大的。同時,J2EE 早就由JCP開發出來,並得到主要技術公司的實現。
此外,它還具有真正的跨平臺相容性。但是,由於J2EE 是基於標準的平臺,而且是由各階段產業參與者共同發展的結果,所以這也意味著這種技術的深化和精煉還需要時間。作為一種補救措施,J2EE的工具供應商已經聯合起來開發更具革新意義和競爭力的新產品,其規範將趨於更完備、更穩固。
總而言之,Clarke建議,在已使用微軟技術的場合不妨採用.NET技術,構造具有中小級訊息量和運作資源的Web服務,把基本的Web服務彙集到功能性的應用程式中,而且為利用Web服務創建特定的Windows客戶應用程式。他還建議,採用J2EE的場合主要在於:構造和發佈大型企業的Web服務,在伺服器端彙集Web服務,創建客戶應用程式(JFC/Swing)消費Web服務,以及需要平臺無關性的公司內部網路和外部網路Web服務客戶程式等。


0 Comments:
Post a Comment
<< Home