史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-04-24, 05:33 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 J2EE vs. Microsoft.NET-建置XML架構的Web Services之比較

J2EE vs. Microsoft.NET-建置XML架構的Web Services之比較
(04.04) 來自:Java週刊





建置XML架構的Web Services之比較 (完整版)

<全文圖文並茂版請至 http://www.javatwo.net>

I. 序

在本文中,我們將深入的比較兩種可用來建置商業XML Web Services的平台,
分別是Sun Microsystems 所提供的Java 2 Enterprise Edition (J2EE)以及Microsoft所提供的 .NET平台。雖然J2EE代表的是一個公開的標準,而 .NET是單獨一家廠商的標準 (雖然.NET試突取得ECMA的標準,但是卻只有在最基礎的部分被ECMA採納變成標準,請參考http://msdn.microsoft.com/net/ecma/,在企業的套用上卻沒有標準化),反觀Java平台,確是所有除了Microsoft以外的各大廠商都遵循著JCP的標準制定所有規格 (請參考http://www.jcp.org ,您會發現所有的Java技術都是協調各大公司而來)。儘管在標準化上Java遙遙領先,但我們仍然將只針對伺服器端的Web Services架構做探討。例如:我們的討論將不涉及 JINI 或是Office XP,我們也不會討論Java跨足Solaris、Linux、Mac OS X、以及Windows平台,而.NET只跨Windows 98/ME/2000/XP等Windows平台的事實。我們更不會討論 "跨語言" 這個Java早已試突達成,Microsoft又拿來當成.NET的重大特點,卻根本不是這回事的功能。(請參閱[url]http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html,大家可以發涵/url]{Java早就達到所謂跨語言的功能,Smalltalk、Eiffel、Lisp、Prolog、BASIC等語言都可以順利轉換成Java bytecode,不像.NET號稱跨語言,卻出現COBOL.NET這種怪物,原本的語言要削足適履來配合.NET,所以才產生VB.NET、COBOL.NET這一大串產品)。號稱跨語言喊了半天,原來連自己的VB 6.0都跨不過去。在讀完本文之後,您將會更加瞭解這兩種架構的彼此優缺點,而且在制定貴公司下一代Web Services決策時將有更明確的考量。

II. 前言

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

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

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

面對這麼多的分佈式技術,J2EE平台與.NET平台的支持程度如下表:

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

J2EE .NET
-----------------------------
CORBA 支持 不支持
RMI/IIOP 支持 不支持
COM+ 不支持 支持

對新一代Web Services的支持:

J2EE .NET
-----------------------------
XML-RPC 支持 不支持
SOAP 支持 支持

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

如果是態度前衛的公司,使用J2EE者可以選用
XML-RPC(http://java.sun.com/xml/jaxrpc/index.html)或是
SOAP(http://java.sun.com/xml/jaxm/index.html)技術,Sun Microsystems更提供了 Java Web Service Developer Pack (http://java.sun.com/webservices/webservicespack.html) 供開發者開發Web Services。反觀.NET技術,只提供對於SOAP的支持。在對於既有分佈式技術支援不足的情況下,對新一代分佈式技術的支持又無法提供彈性的選項,風險之大,是可以預估的。

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

您可以到[url]http://www.soapware.org/directory/4/implementations查詢既有的SOAP實作品,看看有多少是針對Java所訥/url]]計的實作品。

總而言之,我們就平台的穩定性,伺服器的穩定性,以及產品的多樣性這三方面來考量,J2EE徹底擊敗.NET技術。

下列的技術都是已為業界所採用,而且也是通往Web Services的最佳途徑:
- 提供Web Services的人員使用自己的程序語言、元件與平台來開發、連接與
佈署Web Services。
- 提供Web Services的人員以WSDL (Web Services Description Language)定義Web Services。WSDL文件可以讓其它人知道Web Services的功用。
- 提供Web Services的人員以UDDI (Universal Description, Discovery, and Integration6)將Web Services註冊。 UDDI讓程序開發人員可以佈署Web
- 使用者透過UDDI登入來找尋Web Services。
- 使用者的程序會結合Web Services,並透過SOAP (Simple Object Access Protoco) 或XML-RPC來呼叫Web Services。XML-RPC或SOAP 在HTTP傳輸協定上提供一 份XML格式的訊息傳遞。這是所有Web Services共同的溝通傳輸協定。

請注意,上述的機制是建置Web Services並讓它運作的一種途徑。雖然有其他方法可以做到,但我們認為這些技術是最重要且將廣為業界採用的一種。
由此可知,實際上我們尚未有一致的方式來建置Web Services,建構上仍然有許多的困難需要克服。以SOAP、ebXML以及服務串流的規格來說,眾家廠商意見各異了。而且SOAP最常被宣傳的: 與程序語言無關,與特定平台無關這兩項特點,會在您嘗試著使用Apache SOAP與Microsoft SOAP Toolkit產生的Web Services進行溝通時,徹底地粉碎(譯注:這是因為xsi:type內容在實作上有分歧的關係)。除了是對於實作上細節的理解有差異之外,更重要的原因是因為有人刻意地破壞標準。

即使如此,對於Web Services來說,仍然有不少好消息:
- 很難得的,所有的廠商,包括Sun Microsystems與Microsoft等大廠,均同意SOAP、 WSDL以及UDDI 是有潛力的好產品,因此他們將在未來的產品中進
- 所有意見不一的廠商都團結在一起,共同為建立Web Services的標準並廣植
Web Services的套用而努力。

IV. 使用J2EE 以及Microsoft.NET來開發Web Services

如果您想開發一個有用的網路服系統。所面臨的挑戰並非表面上所看如此簡單。您的Web Services必須可靠、普及、不容易出錯、有彈性而且必須讓大家願意接受。這些嚴格的要求並不亞於任何企業等級的商業應用程式。
J2EE 以及 .NET 是現有用來開發伺服器端企業級應用程式的技術延伸。這些技術的早期版本並非專門用來開發Web Services用。如今Web Services已經成為趨勢,於是兩大陣營也隨之調整各自平台的解決方案,因此您現在已經可以使用這些技術來開發Web Services了。J2EE 以及 .NET的共通願景就是希望能達成開發Web Services的基礎工程,例如:跨平台的XML溝通、負載平衡以及交易。與其自己重新撰寫這些基礎工程,倒不如在可提供這些服務的平台上撰寫套用程式。

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

開發新一代Web Services的開發工具:

J2EE平台的工具有 :
JBuilder (Borland)
Forte for Java (Sun)
WebLogic Workshop (BEA)
JDeveloper (Oracle)
VisualAge for Java (IBM)
Visual Cafe (WebGain)

.NET平台
只有Visual Stdio.NET

從這裡可以看出,您可以在您既有的企業解決方案提供廠商那邊,取得最佳的工具和解決方案,而且從免費的基本版本到付費的專業版本都有,各人可以根據不同的需求來做最佳的選項,而不是只能尋求單一廠商所提供的工具和解決方案。

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

在交易安全方面,Sun Microsystems更與許多提供電子商務平台的廠商合作,例如:BEA、IBM以及Oracle等,共同制定J2EE。Sun Microsystems更發起一個
Java標準制定組織Java Community Process (JCP),專門隨時構思新決策來改善J2EE。 Sun Microsystems之所以這樣作的理由是因為,要達到電子交易安全最好的方法,就是要請所有的專家共同來制定嚴格的規範--唯有這樣的作法才能成功地達成他們整合市場的目標。J2EE 是一種Java的套用。您的J2EE 元件必須被轉譯成bytecode並在Java的執行引擎下執行JRE。值得一提的是,即使是相容於J2EE平台的容器,大多數都是以Java技術實作而成的。相較於Microsoft.NET在正式發行沒多久時間就因為安全上的錯誤而發表Service Pack1來說 (詳見[url]http://support.microsoft.com/directory/article.asp?ID=KB;EN-US;Q317396&sd=msdn&,使用.NET卻還沒有去下載的朋友請趕緊連上去看看,以免惡夢重涵/url]{) ,我們應該更瞭解一件事,就是:安全性是大家的事,決不是單一廠商就能決定的。

VI. J2EE 以及Web Services。

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

J2EE應用程式存在於一個容器之中,這個容器提供企業級應用程式所需的服
務,當然也具有企業所需要的品質,例如:交易、安全以及Persistence services。
商業層級負責商業程序與資料邏輯。在大型規模的J2EE應用程式中,商業邏輯
是利用Enterprise JavaBeans (EJB) 元件技術所建置。由此可知,這個層級專門用來負責商業程序以及資料邏輯的處理。它可以透過Java Database Connectivity (JDBC)、SQL/J來連接資料庫,或是透過Java Connector Architecture (JCA)技術來連結既有系統。它更可以利用Java用來處理XML的API (JAXP, Java API for XML Processing),並透過Web Services技術(包括:SOAP、UDDI、 WSDL以及ebXML)來連接其它協力廠商所提供的商業應用程式。因此協力廠商們可以透過Web Services技術(包括:SOAP、UDDI、 WSDL以及ebXML)讓J2EE程序彼此連接起來。所以只要利用Java Servlets (這是一種支持HTTP請求/回應的Java技術)就可以從協力廠商的Web Services中接受請求了,並予以回應。Java Servlets使用JAXP/JAXR/JAXM/JAX-RPC等技術來提供Web Services運作時的所有功能。Web Services目前是擴充連接庫的型態存在,目前已經著手將Web Services並入J2EE下一版的規格之中,並成為業界共通的標準。傳統的客戶端程序,例如Java Applet或桌面應用程式,將直接以Internet Inter-ORB Protocol (IIOP)來連接EJB元件而非透露Web Services,如果要使用Web Services也可,但是因為通常客戶端的應用程式都會和J2EE應用程式出自同一家廠商,因此根本不需要XML Web Services來扮演溝通的角色,就算真的有需要,也是沒有問題的。瀏覽器以及無線裝置則可以連線到Java Server Pages (JSP),這些JSP則有著各企業自行使用HTML、XHTML或WML所設計的使用者界面。

VII. 微軟的 .NET 平台

Microsoft .NET 是一項可以讓企業開發智能型與企業級Web Services的產品。在此要特別注意的是,.NET與J2EE最大的差異:.NET是一項產品原則,而J2EE則是一項標準。Microsoft.NET可說是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(ADO.NET)來連接資料庫,或是在現有的系統中使用Microsoft Host Integration Server 2000所提供的服務,例如:COM Transaction Integrator (COM TI)。當然它也可以透過Web Services技術(包括:SOAP、UDDI、 WSDL以及BizTalk)來連接協力廠商的商業應用程式。因此協力廠商們可以透過Web Services技術(包括:SOAP、UDDI、 WSDL以及BizTalk)讓.NET程序彼此連接起來。傳統的客戶端程序、瀏覽器以及無線裝置則可以連線到Active Server Pages(ASP.NET),這些ASP.NET則有著各企業自行使用HTML、XHTML或WML所設計的使用者界面。

VIII. 比較分析

就產品上市時間而言:
在今日的市場上若要開發一個商業上的解決方案,時間就是金錢。錯失一個小小的機會,影響所及,將導致一個公司成為市場先驅或成為落後的追趕者。要加快產品上市時間的方法之一就是選項可以快速開發程序的Web Services平台。這將讓開發人員可以快速地開發與維護程序程式碼,降低開發時程。Sun J2EE 與Microsoft .NET 兩者都提供一些執行機制,讓軟體開發人員可以避免觸碰到一些底層複雜的部分。除了在平台、程序語言以及企業架構上支持XML Web Services的中間層外,Sun J2EE 以及 .NET還分別透過Java Runtime Environment (JRE)與Common Language Runtime (CLR)提供基礎層面的服務。 J2EE還提供許有多.NET沒有的功能,這些功能可以加速產品上市時間,例如: 狀態管理服務,這讓開發人員可以撰寫較少的程序程式碼而且不用管理狀態,因此可以說是高階且快速的軟體開發環境。狀態管理服務可以讓您開發元件保持狀態。Persistence services (entity beans)讓程序開發人員在開發應用程式時,不需額外撰寫連接資料庫的程序程式碼,因此讓資料庫程序將變得易於開發與維護。Programmatic transactions讓您可以擁有更多的交易控件。而custom tags 讓程序開發人員與網路設計人員可以更緊密地合作。

最後,我們覺得J2EE與.NET所提供的這兩種程序的開發環境是完全不同的。
.NET號稱有強大的程序開發工具 Visual Studio.NET,Java也有各家廠商
(Borland、Sun、BEA、IBM等) 的整合式開發工具可供選項使用; 在學習難度和系統設計及開發程序上面,.NET也是完全採用Java自始就採行的對象導向分析設計技術,學VB.NET或是C#要花的的工夫和學Java沒有兩樣,而且到系統架構設計上,OOAD、UML、Design Patterns等方法也是雙方都採行的標準步驟。所以在就平台的穩定性,伺服器的穩定性,以及產品的多樣性等方面來考量,J2EE徹底擊敗 .NET技術,兩者在程序開發上的方法也歸於一統,J2EE又已經經過這幾年市場上眾多企業用戶的實際檢驗,所以我們相信比較起前科纍纍而且還在嬰兒期的 Microsoft .NET系列技術來說,J2EE 是一個成熟
穩定、高效能、而且自由開放的選項。
psac 目前離線  
送花文章: 3, 收花文章: 1625 篇, 收花: 3188 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:56 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2018, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1