熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

J2EE vs .NET-建置XML WebServices

2013-11-15 12:55:00  來源: ASP編程 

  在本文中我們將深入的比較兩種可用來建置商業XML Web Services 的平台分別是Sun Microsystems 所提供的Java Enterprise Edition (JEE)以及Microsoft所提供的 NET平台在讀完本文之後您將會更加了解這兩種架構的彼此優缺點而且在制定貴公司下一代Web Services決策時將有更明確的考量

  前言

  下一代的分布式運算時代已經來臨了在過去幾年中XML 被廣泛的運用於電腦運算環境中以達到在全球信息網上共享信息的遠大目標如今它可以更進一步地提供運算能力上的分享從技術的觀點來看Web Services的出現並不能算是分布式計算機運算的新革命它可以結構化的呈現信息甚至是程序內部的訊息因而很自然地比XML應用程序更加引人注目

  工業標准與企業標准

  透過Web Services任何應用程序可以在網絡上順利地整合在一起Web Services的基本原理是利用標准的網絡協議(例如:HTTP)來傳送XML訊息這是一種非常輕便的溝通機制因此可以讓任何程序語言中間層組件或平台很輕易地整合進來一般工業上或企業內部會接受成熟且廣為廠商采用的業界標准更尤其是已經受過市場考驗行之有年的標准有了Web Services您就可以快速且低成本的整合兩個企業部門或甚至是兩個程序

  要建置Web Services必須得采用業界通用的Web Services技術現在讓我們來看看Web Services究竟是什麼首先您必須先知道如何建置以及使用Web Services其實Web Services是種很簡單的XML界面適用於商業應用程序以及系統服務說穿了也就是將既有的技術舊衣新穿而已Web Services其實是一種新一代的分布式服務在這之前有CORBADCOMCOM+RMI都是用來實作分布式架構的技術而且也被證明運作的非常順利;而新一代的分布式服務采用的是XML技術如XMLRPC和SOAP就是最佳的例子新一代的分布式技術可以用寄有的通訊協議做基礎(如SMTPFTP等)但是目前最受歡迎的方式仍然是將XML基植於HTTP這個廣受歡迎但是效能並非最佳的通訊協議上即使如此這些新一代的技術尚未通過時間的考驗或許他們有可能運作得很成功也可能有些許的風險存在

  面對這麼多的分布式技術JEE平台與NET平台的支持程度如下表:

  對舊有分布式技術的支持:

  

JEE NET CORBA 支持 不支持 RMI/IIOP 支持 不支持 COM+ 不支持 支持

  對新一代Web Services的支持:

  

JEE NET XMLRPC 支持 不支持 SOAP 支持 支持

  從上述兩個圖表之中我們可以得知對於姿態保守的公司而言JEE支持了較為廣泛應用於現有企業系統的分布式運算服務NET平台支持延伸自COM與DCOM的COM+其技術前身MTS COM+比Enterprise JavaBeans技術早了三年我們可以推斷JEE提供的分布式服務比NET的技術領先三年此外目前企業內部使用之大型主機所使用的皆為CORBA技術JEE對舊有技術的支持當然是最佳的因為COM+只能在Windows平台上運行

  如果是態度前衛的公司使用JEE者可以選用XMLRPC ( )或是SOAP ( )技術Sun Microsystems更提供了 Java Web Service Developer Pack ( ) 供開發者開發Web Services反觀NET技術只提供對於SOAP的支持在對於既有分布式技術支援不足的情況下對新一代分布式技術的支持又無法提供彈性的選擇風險之大是可以預估的

  就算新一代的Web Services非常穩定好了他的穩定度常常會被底層作業系統的穩定度所影響如果你選用NET就會被綁死在公認最不穩定的Windows平台上更糟糕的是NET還只能在Microsoft官方的網頁服務器上運作相信之前使用IIS的朋友在遭受過Nimda等不斷出現的病毒惡夢之後會不會對其安全性與穩定性產生質疑? 但是如果您選用的是JEE技術那麼在諸多遵循標准的廠商所提供的應用程序服務器中您可以選擇最符合您需要成本最低而且又認為最佳的平台

  總而言之我們就平台的穩定性服務器的穩定性以及產品的多樣性這三方面來考量JEE似乎優於NET技術

  下列的技術都是已為業界所采用而且也是通往Web Services的最佳途徑:

   提供Web Services的人員使用自己的程序語言組件與平台來開發連接與布署Web Services

   提供Web Services的人員以WSDL (Web Services Description Language)定義Web ServicesWSDL文件可以讓其它人知道Web Services的功用

   提供Web Services的人員以UDDI ( Universal Description Discovery and Integration)將Web Services注冊 UDDI讓程序開發人員可以布署Web

   使用者透過UDDI登錄來找尋Web Services

   使用者的程序會結合Web Services並透過SOAP (Simple Object Access Protoco) 或XMLRPC來呼叫Web ServicesXMLRPC或SOAP 在HTTP協議上提供一 份XML格式的訊息傳遞這是所有Web Services共同的溝通協議

  請注意上述的機制是建置Web Services並讓它運作的一種途徑雖然有其他方法可以做到但我們認為這些技術是最重要且將廣為業界采用的一種

  由此可知實際上我們尚未有一致的方式來建置Web Services建構上仍然有許多的困難需要克服以SOAPebXML以及服務串流的規格來說眾家廠商意見各異了而且SOAP最常被宣傳的: 與程序語言無關與特定平台無關這兩項特點會在您嘗試著使用Apache SOAP與Microsoft SOAP Toolkit產生的Web Services進行溝通時徹底地粉碎(譯注:這是因為xsi:type屬性在實作上有分歧的關系)除了是對於實作上細節的理解有差異之外更重要的原因是因為有人刻意地破壞標准

  

  即使如此對於Web Services來說仍然有不少好消息:

   很難得的所有的廠商包括Sun Microsystems與Microsoft等大廠均同意SOAP WSDL以及UDDI 是有潛力的好產品因此他們將在未來的產品中進

   所有意見不一的廠商都團結在一起共同為建立Web Services的標准並廣植Web Services的應用而努力

  使用JEE / MicrosoftNET來開發Web Services

  如果您想開發一個有用的網絡服系統所面臨的挑戰並非表面上所看如此簡單您的Web Services必須可靠普及不容易出錯有彈性而且必須讓大家願意接受這些嚴格的要求並不亞於任何企業等級的商業應用程序

  JEE 以及 NET 是現有用來開發服務器端企業級應用程序的技術延伸這些技術的早期版本並非專門用來開發Web Services用如今Web Services已經成為趨勢於是兩大陣營也隨之調整各自平台的解決方案因此您現在已經可以使用這些技術來開發Web Services了JEE 以及 NET的共通願景就是希望能達成開發Web Services的基礎工程例如:跨平台的XML溝通負載平衡以及交易與其自己重新撰寫這些基礎工程倒不如在可提供這些服務的平台上撰寫應用程式

  但是當開發到一定規模的應用程序時會產生一定的復雜度這個時候就必須有開發工具的輔助如果您選用了其中一種平台那麼您可以選用的工具如下所示:

  JEE平台的工具有 :

  JBuilder (Borland)

  Forte for Java (Sun)

  WebLogic Workshop (BEA)

  JDeveloper (Oracle)

  VisualAge for Java (IBM)

  Visual Cafe (WebGain)

  NET平台

  Visual StdioNET

  JEE

  Java Platform Enterprise Edition (JEE) 被設計成專門用來解決多層式企業解決方案的開發布署以及管理上的問題在Sun Microsystems 所帶領的諸多廠商的努力之下JEE 已經成為一種業界標准對您而言最重要的一點就是您必須先了解JEE是一種標准而非一種產品您不能說下載JEE而是下載一系列的Adobe Acrobat PDF 檔案這些檔案會仔細說明應用程序與所在容器(Container)之間的運作規定透過遵守JEE的規定應用程式可以被部署在各種平台上的容器中JEE陣營的目標是提供客戶有多重選擇產品與工具的機會並以此帶動良幣驅逐劣幣的效應讓最好的產品成為市場上的贏家要達成此理想的唯一的方法就是所有的廠商都要符合JEE標准

  在交易安全方面Sun Microsystems更與許多提供電子商務平台的廠商合作例如:BEAIBM以及Oracle等共同制定JEESun Microsystems更發起一個Java標准制定組織Java Community Process (JCP)專門隨時構思新決策來改善JEE Sun Microsystems之所以這樣作的理由是因為要達到電子交易安全最好的方法就是要請所有的專家共同來制定嚴格的規范唯有這樣的作法才能成功地達成他們整合市場的目標JEE 是一種Java的應用您的JEE 組件必須被轉譯成bytecode並在Java的執行引擎下執行JRE值得一提的是即使是相容於JEE平台的容器大多數都是以Java技術實作而成的相較於MicrosoftNET在正式發行沒多久時間就因為安全上的錯誤而發表Service Pack來說 我們應該更了解一件事就是:安全性是大家的事決不是單一廠商就能決定的

  

  JEE 以及Web Services

  JEE 在以往的Java程序語言中被定位成開發伺服端應用程序的架構它可以被用來建置傳統的網站軟件組件或是Web應用程序(Web Application)到了最近JEE更被擴充成可支持XML Web Services的標准這些Web Services可以和其他用JEE或非JEE標准所開發的Web Services溝通

  JEE應用程序存在於一個容器之中這個容器提供企業級應用程序所需的服務當然也具有企業所需要的品質例如:交易安全以及Persistence services

  商業層級負責商業程序與資料邏輯在大型規模的JEE應用程序中商業邏輯是利用Enterprise JavaBeans (EJB) 組件技術所建置由此可知這個層級專門用來負責商業程序以及資料邏輯的處理它可以透過Java Database Connectivity (JDBC)SQL/J來連接數據庫或是透過Java Connector Architecture (JCA)技術來連結既有系統它更可以利用Java用來處理XML的API (JAXP Java API for XML Processing)並透過Web Services技術(包括:SOAPUDDI WSDL以及ebXML)來連接其它協力廠商所提供的商業應用程序因此協力廠商們可以透過Web Services技術(包括:SOAPUDDI WSDL以及ebXML)讓JEE程序彼此連接起來所以只要利用Java Servlets (這是一種支持HTTP請求/響應的Java技術)就可以從協力廠商的Web Services中接受請求了並予以響應

  Java Servlets使用JAXP/JAXR/JAXM/JAXRPC等技術來提供Web Services運作時的所有功能Web Services目前是擴充鏈接庫的型態存在目前已經著手將Web Services並入JEE下一版的規格之中並成為業界共通的標准傳統的客戶端程序例如Java Applet或桌面應用程序將直接以Internet InterORB Protocol (IIOP)來連接EJB組件而非透露Web Services如果要使用Web Services也可但是因為通常客戶端的應用程序都會和JEE應用程序出自同一家廠商因此根本不需要XML Web Services來扮演溝通的角色就算真的有需要也是沒有問題的浏覽器以及無線裝置則可以連接到Java Server Pages (JSP)這些JSP則有著各企業自行使用HTMLXHTML或WML所設計的使用者界面

  微軟的 NET 平台

  Microsoft NET 是一項可以讓企業開發智能型與企業級Web Services的產品在此要特別注意的是NET與JEE最大的差異:NET是一項產品策略而JEE則是一項標准MicrosoftNET可說是Windows DNA的大翻修這是微軟先前提供開發企業級應用程序的平台Windows DNA 包含許多現有產品的技術包括Microsoft Transaction Server (MTS)與COM+Microsoft Message Queue(MSMQ)以及Microsoft SQL Server 數據庫而新的 NET Framework 則是設計來取代這些技術的並加入Web Services層級以及程序語言的改進

  NET應用程序存在於一個容器中這個容器提供企業級應用程序所需的服務例如:交易安全以及訊息服務NET應用程序的商業層級是透過NET managed 組件所開發的這個層級負責商業程序與資料邏輯它可以透過Active Data Objects(ADONET)來連接數據庫或是在現有的系統中使用Microsoft Host Integration Server 所提供的服務例如:COM Transaction Integrator (COM TI)

  當然它也可以透過Web Services技術(包括:SOAPUDDI WSDL以及BizTalk)來連接協力廠商的商業應用程序因此協力廠商們可以透過Web Services技術(包括:SOAPUDDI WSDL以及BizTalk)讓NET程序彼此連接起來傳統的客戶端程序浏覽器以及無線裝置則可以連接到Active Server Pages(ASPNET)這些ASPNET則有著各企業自行使用HTMLXHTML或WML所設計的使用者界面

  比較分析

  就產品上市時間而言:

  在今日的市場上若要開發一個商業上的解決方案時間就是金錢錯失一個小小的機會影響所及將導致一個公司成為市場先驅或成為落後的追趕者要加快產品上市時間的方法之一就是選擇可以快速開發程序的Web Services平台這將讓開發人員可以快速地開發與維護程序代碼降低開發時程Sun JEE 與Microsoft NET 兩者都提供一些執行機制讓軟件開發人員可以避免觸碰到一些底層復雜的部分除了在平台程序語言以及企業架構上支持XML Web Services的中間層外Sun JEE 以及 NET還分別透過Java Runtime Environment (JRE)與Common Language Runtime (CLR)提供基礎層面的服務

  JEE還提供許有多NET沒有的功能這些功能可以加速產品上市時間例如: 狀態管理服務這讓開發人員可以撰寫較少的程序代碼而且不用管理狀態因此可以說是高階且快速的軟件開發環境狀態管理服務可以讓您開發組件保持狀態Persistence services (entity beans)讓程序開發人員在開發應用程序時不需額外撰寫連接數據庫的程序代碼因此讓數據庫程序將變得易於開發與維護Programmatic transactions讓您可以擁有更多的交易控件而custom tags 讓程序開發人員與網絡設計人員可以更緊密地合作

  最後我們覺得JEE與NET所提供的這兩種程序的開發環境是完全不同的NET號稱有強大的程序開發工具 Visual StudioNETJava也有各家廠商(BorlandSunBEAIBM等) 的整合式開發工具可供選擇使用; 在學習難度和系統設計及開發過程上面NET也是完全采用Java自始就采行的對象導向分析設計技術學VBNET或是C#要花的的工夫和學Java沒有兩樣而且到系統架構設計上OOADUMLDesign Patterns等方法也是雙方都采行的標准步驟

  所以在就平台的穩定性服務器的穩定性以及產品的多樣性等方面來考量JEE較 NET技術更有優勢兩者在程序開發上的方法也歸於一統JEE又已經經過這幾年市場上眾多企業用戶的實際檢驗所以我們相信JEE 已經成長為一個成熟穩定高效能而且自由開放的選擇


From:http://tw.wingwit.com/Article/program/ASP/201311/21877.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.