日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

J2EE与.NET技术架构的比较

發布時間:2024/4/17 asp.net 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 J2EE与.NET技术架构的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

●技術與應用

J2EE與.NET技術架構的比較

岳福香

(電信科學技術第十研究所? 西安? 710061

摘? 要:從體系架構、移植性、性能、安全性、穩定性、可擴展性、成熟度、第三方廠商支持、開源支持、學習成本和對Web服務支持等方面,試圖對目前兩種主要的軟件開發技術架構J2EE與.NET進行一個客觀、公正、全面的比較。

關鍵詞:J2EE? .NET? 體系架構? 移植性? 安全性? 可擴展性? Web服務

?

隨著三層/多層企業信息系統結構的深度發展和下一代分布式計算模型Web 服務的出現,軟件開發中關于平臺、框架、語言的競爭也愈演愈烈。自從微軟推出.NET平臺,業界關于J2EE平臺與.NET平臺的比較從未停止過。本文在收集整理相關文章的基礎上,試圖對目前兩種主要的應用軟件開發技術架構J2EE.NET進行一個客觀、公正、全面的比較,以幫助軟件開發商選擇一個較為合適的開發平臺進行應用軟件的開發。

一、J2EE簡介

Java1995年由Sun公司推出,當時它的主要用途是制作產生動態網頁的Applet。后來,人們發現Java一次開發,多次運行、純面向對象的特性、垃圾回收機制和內置安全特別適合于開發企業應用系統。于是,企業應用開發商紛紛在Java標準版的基礎上各自擴展出許多企業應用API,其結果導致基于Java的企業應用呈爆炸式增長。但是各企業系統API之間又不能相互兼容,破壞了Java的平臺獨立性。鑒于此,Sun公司聯合IBM、OracleBEA等大型企業應用系統開發商于1999年共同制訂了一個基于Java組件技術的企業應用系統開發規范,該規范定義了一個多層企業信息系統的標準平臺,旨在簡化和規范企業應用系統的開發和部署。這一規范和其定義的平臺就構成了J2EE。它定義了基于組件的方式設計、開發、組裝和部署企業應用系統的各個組成部分。同時,J2EE規范定義了分布式多層應用系統模型、組件重用策略、一體化的安全模型以及靈活的事務控制策略等,使得獨立軟件提供商(ISV)能夠比以前更快的速度,向市場推出用戶適應的解決方案。

J2EE是一套針對于企業級分布式應用的計算環境,其結構體系如圖1所示。它定義了動態Web頁面功能(ServletJsp)、商業組件(EJB)、異步消息傳輸機制(JMS)、名稱和目錄定位服務(JNDI)、數據庫訪問(JDBC)、與子系統的連接器(JCA)和安全服務等。

需要注意的是,J2EE本身是一個標準,而不是一個現成的產品(雖然現在有很多符合J2EE標準的產品),它由以下幾個部分組成:

1J2EE規范? 該規范定義了J2EE平臺的體系結構、平臺角色及J2EE中每種服務和核心API的實現要求。它是J2EE應用服務器開發商的大綱。

2J2EE兼容性測試站點? Sun公司提供的一個測試J2EE應用服務器是否符合J2EE規范的站點,對通過該站點測試的產品,Sun公司將發放兼容性證書。

3J2EE參考實現? J2EE SDK,它既是Sun公司自己對J2EE規范的一個非商業性實現,又是為開發基于J2EE企業級應用系統原型提供的一個免費的底層開發環境。

4J2EE實施指南? BluePrints文檔,該文檔通過實例來指導開發人員如何去開發一個基于J2EE的多層企業應用系統。

?

1? J2EE體系結構圖

1.組件-容器模型

J2EE是一個基于組件-容器模型的系統平臺,其核心概念是容器。容器是指為特定組件提供服務的一個標準化的運行時環境,Java虛擬機就是一個典型的容器。組件是一個可以部署的程序單元,它以某種方式運行在容器中,容器封裝了J2EE底層的API,為組件提供事務處理、數據訪問、安全性、持久性等服務。在J2EE中組件和組件之間并不直接訪問,而是通過容器提供的協議和方法來相互調用。組件和容器間的關系通過協議來定義。容器的底層是J2EE服務器,它為容器提供J2EE中定義的各種服務和API。一個J2EE服務器(也叫J2EE應用服務器)可以支持一種或多種容器。

2J2EE的核心——EJB

J2EE定義了四種組件:Applet組件、Application客戶組件、Web組件及EJBEnterprise JavaBeans)組件。其中AppletApplication客戶組件在客戶端運行,J2EE通過Java插件為Applet提供運行環境,Application客戶的容器就是本地Java虛擬機;WebEJB組件在服務端運行。J2EE中包含JSPServlet兩種Web組件,它們是Web服務器的功能擴展,都能生成動態Web頁面。不同的是JSP是將Java代碼嵌入到HTML中,服務器負責解釋執行,生成結果返回用戶(與ASP技術相似);而Servlet是單獨的Java類,它動態生成HTML文件返回給客戶。Web組件的容器比較典型的就是基于JavaWeb服務器。

EJBJ2EE平臺的核心,也是J2EE得到業界廣泛關注和支持的主要原因。眾所周知J2EE的一個主要目的就是簡化企業應用系統的開發,使程序員將主要精力放在商業邏輯的開發上。EJB正是基于這種思想的服務器端技術,它本身也是一種規范,該規范定義了一個可重用的組件框架來實現分布式的、面向對象的商業邏輯;其核心思想是將商業邏輯與底層的系統邏輯分開,使開發者只需關心商業邏輯,而由EJB容器實現目錄服務、事務處理、持久性、安全性等底層系統邏輯。

一個可部署的EJB組件包含3個部分:Remote接口、Home接口和Enterprise Beans類。

(1)Remote接口 ?Remote接口定義EJB組件中提供的可供用戶調用的方法,也就是通常所說的實現商業邏輯的函數或過程(如計算商品價格的函數),以供遠程客戶端調用。在EJB組件部署到容器的時候,容器會自動生成Remote接口相應的實例,即EJB對象,它負責代理用戶的調用請求。

(2)Home接口 ?Home接口定義了一組方法來創建新的EJB對象,查找、定位和清除已有的EJB對象。在EJB組件部署時,容器也會自動生成相應的Home對象,該對象負責查找和創建EJB對象,返回EJB對象的引用給客戶;用戶利用該引用調用EJB組件的方法,得到結果;最后Home對象清除EJB對象??梢孕蜗蟮胤QHome接口為EJB對象的工廠。

(3)Enterprise Beans ?Enterprise Beans類是商業邏輯的具體實現類。它可供用戶調用的方法在Remote接口中定義。根據功能不同,EJB 2.0規范中定義了三種Enterprise Beans:會話BeansSession Beans)、實體BeansEntity Beans)和消息驅動BeansMessage-driven Beans)。

①會話Beans分無狀態和有狀態兩種。一般無狀態的會話Beans模擬商業邏輯,比如計算價格等。有狀態的會話Beans通常模擬一個客戶會話,它會臨時保存客戶信息,根據客戶要求調用其他Beans來存取數據。兩種會話Beans都不保存狀態信息或數據,當客戶斷開連接或服務器關閉時,會話Beans也隨之消失。一個會話Beans的典型例子是網站上的購物車。

②實體Beans模擬商業數據,并表示一個數據存儲,可以是狀態信息或數據庫中的一條記錄。實體Beans在客戶斷開連接或服務器關閉后,仍有服務保證其數據得以保存。一個實體Beans的典型例子就是客戶賬號信息。

③消息驅動Beans在行為上很像會話Beans。不同的是僅在需要向這些Beans發送消息時才調用消息驅動Beans,比如在需要的時候發送用戶確認信息等。

另外,在提交和部署EJB組件時,還需要兩個文件:部署描述文件,容器根據該文件來部署Enterprise Beans,提供所要求的服務;EJB jar文件,它是提交給EJB容器的一個部署單元,容器(應用服務器)在部署時解開它,裝入Enterprise Beans。

EJB容器非常復雜,一般由專業的J2EE應用服務器開發商提供,比較流行的EJB容器由IBMWebShpereBEA公司的WebLogic Server、Sun公司的iPlant等應用服務器提供。EJB容器除了為EJB提供事務處理、目錄服務、持久性管理和安全性服務外,還負責EJB的部署、發布和生命周期管理。

3.平臺標準服務

服務是組件和容器之間,以及容器和J2EE服務器之間的接口,在實現層面上它就是一系列API和協議。J2EE平臺定義了一組標準的服務,其中有些服務是由J2SE提供的,有些則是J2EEJava的擴展。

(1) 目錄服務JNDIJava Name and Directory ?API為應用程序提供了一個統一的接口來完成標準的目錄操作,由于JNDI是獨立于目錄協議的,應用程序可以用它訪問各種目錄服務,如LDAP、NDS、DNS等。

(2) 數據訪問JDBCJava Database Connectivity) ?API為訪問不同類型的數據庫提供了統一的途徑,屏蔽了不同數據庫的細節,具有平臺無關性。J2EE平臺除了要求核心的JDBC API(包含在J2SE中)外,還要求擴展的JDBC API 2.0,它支持行集、連接池和分布式的事務處理。

(3) 事務處理JTAJava Transaction Architecture? 它定義了一組標準的接口,為應用系統提供可靠的事務處理支持。JTSJava Transaction Service)是CORBA OTS事務監控的Java實現。JTS規定了事務管理器的實現方式,該事務管理器在高層支持JTA標準,在底層實現了OMG OTS規范的Java映射。

(4) 消息服務JMSJava Message Service? 它是一組用于和面向消息的中間件相互通信的API,它既支持點對點的消息通信,也支持發布/訂閱式的消息通信。 電子郵件 JavaMail API允許在應用程序中以獨立于平臺、獨立于協議的方式收發電子郵件。JAFJavaBeans Activation Framework)負責處理MIME編碼,JavaMail利用JAF來處理MIME編碼的郵件附件。

(5) CORBA兼容接口? RMI(遠程方法調用)是在分布式對象間通信的Java本地方法,它使應用程序調用遠程方法像調用本地方法一樣,不需要考慮所調用對象的位置。RMI-IIOPRMI的擴展,是符合CORBA標準的對象通信協議,也是J2EE默認的組件通信協議。Java IDL允許J2EE應用組件通過IIOP協議訪問外部的CORBA對象。

(6) 安全服務JAASJava Authentication and Authorization Service? 它用兩個步驟實現安全性:認證,即由用戶提供認證信息(如用戶名和密碼)來獲得系統認證,這一過程又稱之為登錄;授權,在被確認為合法用戶后,系統根據用戶的角色授予其相應的權限。J2EE的授權是基于安全角色的概念,一個安全角色是一個擁有相同權限的邏輯組。J2EE的安全角色由應用組件提供商來定義。

4.對WEB服務的支持

Sun提供了一套API及其實現WSDP作為對J2EE的擴展。在WSDP中,JAXP用來解析XML文檔;JAXRUDDI服務器注冊Web ServicesJTX/RPC用基于XML的協議(如SOAP)來發送和接收XML文檔;JWSDL處理WSDL文檔。

J2EE 1.4的設計目標就是Web服務,其中新加入了像JAX-RPCSAAJJAXRAPI,另外EJB 2.1里也增加了許多針對Web服務設計的特性。

5 多層應用模型

從應用的角度來看,J2EE為企業應用系統的開發提供了一種多層分布式企業應用模型。在J2EE中,應用邏輯按功能不同可以劃分為不同類型的組件,各組件根據它們所在的層分布在不同的機器上,共同組成一個基于組件的分布式系統。

如圖1所示,J2EE定義了一個典型的四層結構,分別是客戶層、表示層(Web層)、業務邏輯層和企業信息系統層。

在應用開發時,J2EE定義的四層模型可根據實際情況靈活運用。由于除Applet外,其他的組件都可以訪問數據庫、EJB組件和企業信息系統,因此通過不同層的取舍及組合,可以衍生出許多應用軟件開發模型,如基于Web的四層模型、基于桌面應用的三層模型(不包括Web層)、B2B模型(不包括客戶層)等。如果應用系統比較簡單,一般不用EJB作為邏輯層,而直接用Web組件來實現商業邏輯和數據訪問,畢竟EJB的開發和部署費用還相當高。

二、.NET簡介

.NET來自于微軟,是一套全能的框架平臺,支持C++、C#J++VB、ASP等語言,能夠解決C/S、B/S和單機等結構的軟件開發需求。.NET平臺將這些語言編譯成CLR語言,使它們可以無差別的運行在.NET Framework上,是2000年以后微軟最為重要的軟件開發套件產品。

.NET的絕大部分是微軟Windows DNA(Distributed Network Architecture)的重寫,DNA是微軟以前開發企業應用程序的平臺。Windows DNA中包括了許多已經被證實的技術,新的.NET框架取代了這些技術,并包含了Web服務層和改良的語言支持。圖2.NET開發平臺的體系結構。

2? .NET體系結構圖

1.﹒NET框架內核

.NET框架實現了語言開發、代碼編譯、組件配置、程序運行和對象交互等各個層面的功能,為Web服務及普通應用程序提供了一個托管、安全和高效的執行環境。所有在.NET平臺上創建的應用程序運行都需要兩個核心模塊:Common Language RuntimeCLR,通用語言運行時)和.NET Framework類庫。

(1)CLR——.NET的虛擬機 ?CLR是一個軟件引擎,用來加載應用程序,確認它們可以沒有錯誤地運行,并進行相應的安全許可驗證,執行應用程序,然后將被清除。它為.NET應用程序提供了一個托管的代碼執行環境,托管意味著將原來由程序員或操作系統做的工作剝離出來交由CLR來完成,從而使程序運行獲得更高的安全性和穩定性。這些工作包括內存管理、即時編譯、組件自描述、安全管理、代碼驗證以及其他一些系統服務。CLR提供一個技術規范,無論程序使用什么語言編寫,只要能編譯成中間語言,就可以在它的支持下運行,這樣.NET應用程序就可以獨立于語言。CLR還在應用程序運行環境中為基于組件的編程提供了直接支持,比如它支持屬性、事件、對象、繼承性、多態性和接口等組件編程特性。

CLR中的自動垃圾收集器負責.NET應用程序運行時的內存分配、對象布局、內存釋放等內存管理問題,徹底解決了多年來困擾程序員的內存泄漏問題,大大增強了應用程序的健壯性。

即時編譯器在運行時,將中間語言以調用對象的方法將單位動態編譯成本地二進制代碼。

2)類庫? NET Framework類庫向程序員提供軟件組件,用來編寫在CLR控制下運行的代碼,它們按照單一有序的分級組織提供了一個龐大的功能集,包括從文件系統到對XML功能的網訪問的每一樣功能。該類庫為開發提供了三種基本編程模板:基于ASP.NETWeb表單應用、基于ASP.NETWeb服務應用和基于傳統GUI交互的Windows應用。

.NET Framework類庫由一組廣泛的、面向對象的、可被開發者用于任何編程語言的可重用類集合組成,它提供了幾乎所有應用程序都需要的公共代碼;在此之上是許多應用程序模板,這些模板為開發網絡站點和網絡服務提供特定的高級組件和服務,無論是傳統的命令行程序,還是Windows圖形界面程序,亦或是面向下一代互聯網分布式計算平臺的ASP.NETWeb服務應用,與在Windows和它的SDK中發送的代碼庫一樣,.NET框架類庫將程序員從繁重的編程細節中解放出來,而專注于程序的商業邏輯。它將核心Win32 API最常用的功能和外掛SDK的功能封裝到了一個統一的包中,并采用清晰而有條理的方式對類庫進行分組和描述,這樣開發者就能夠更方便地找到其應用程序所需要的大多數功能。

2ADO.NET組件

ADO.NET為基于網絡的、可擴展的應用程序和服務提供數據訪問服務。它不僅支持傳統的基于鏈接指針風格的數據訪問,而且對于更適合于把數據返回到客戶端應用程序的無鏈接數據模板,也提供高性能的訪問支持。

3XML數據組件

通過它開發人員可以對任何數據進行XML轉換、傳輸和確認,所有數據都可以被看作是XML格式的。同時,系統也支持ADO.NET數據與XML數據之間的通用轉換。

4WINDOWS表單組件

Windows表單組件為開發人員提供了強大的Windows應用程序模型和豐富的Windows用戶口,包括傳統的ActiveX控件和Windows XP的新界面,如透明的、分層的浮動窗口。

5ASP.NET應用服務

ASP.NET的核心是其用于處理基于HTTP請求的高性能的運行語言,其編譯運行的方式大大提高了它的性能。ASP.NET使用基于構件的.NET框架配置模板,因此,它獲得了諸如XCOPY配置、構件并行配置和基于XML配置之類的優點。它還支持應用程序的實時更新,同時提供高速緩沖服務,以改善性能。

ASP.NET Web表單把VB表單高效率的優點帶到了Web應用程序的開發中。它支持傳統的將HTML內容與腳本代碼混合的ASP語法,但是它提出了一種將應用程序代碼和用戶接口內容分離的、更加結構化的方法。它提供一套映射傳統HTML用戶接口部件(包括列表框、文本框和按鈕)的ASP.NET Web表單控件和一套更加復雜的Web應用控件(如日歷和廣告轉板)。

6.對Web服務的支持

ASP.NET應用服務體系架構為用ASP.NET建立Web服務提供了一個高級的可編程模板。雖然建立Web服務并不限定使用特定的服務平臺,但是ASP.NET的許多優點將簡化其開發過程。使用這個編程模型,開發人員甚至無需理解HTTP、SOAP或其他任何網絡的服務規范。ASP.NET可以利用現存的體系架構和應用程序,為在互聯網上綁定應用程序提供了一個簡單、靈活和基于產業標準的模型。

三、J2EE與.NET比較

1.體系架構的比較

作為彼此競爭的應用平臺,J2EE.NET開發平臺在目標和體系結構上極其相似,但在實現上又完全不同。

(1)類似的平臺基礎構造? J2EE.NET兩個平臺在底層的執行引擎都源于托管的虛擬機概念,.NETCLR沿著Java虛擬機(JVM)走得更遠,CLR在借鑒了JVM的自動垃圾收集、異常處理等機制的同時,又為.NET平臺添加了多語言支持、組件自描述等新的特性。

.NET J2EE平臺上,程序的編譯都經過兩個類似的過程。首先,特定高級語言編譯器將C#(及其他.NET語言)和Java源代碼分別翻譯成中間語言(IL)和字節代碼(ByteCode).NET在中間語言設計時通盤考慮了多個主流高級語言,在這一層面實現了.NET平臺的跨語言承諾;J2EE的基石是Java語言,它最典型的特征是:一次編寫,多次運行??缙脚_是J2EE一直引以為豪的關鍵,這是通過JVM來實現的。

其次,在執行時,中間語言被即時編譯器(JIT)編譯成特定平臺的二進制代碼,字節代碼則通過JVM解釋執行,完成各自語言的指令功能。鑒于微軟在“Wintel平臺上的代碼優化功底,.NET代碼的執行速度較之于Java有明顯的優勢是不爭的事實。但在Unix/Linux平臺上,由于.NET遲遲未能實現其跨平臺的承諾,J2EE幾乎成了惟一的選擇,執行效率的比較也就無所謂。在代碼執行的同時,通用語言運行時和Java虛擬機也都提出了異常捕捉、類型安全、內存分配和垃圾收集等自動化內存管理工作,大大減輕少了現代軟件的內存泄漏問題,減輕了程序員的繁重負擔。

面向對象程序設計在J2EE.NET平臺中都獲得了直接的支持,單根繼承加多接口實現是它們共有的特征。但在面向對象之外,.NET對現代組件編程提供了直接支持。當然,當下很多企業中間件都是基于J2EE平臺,只是.NET從設計、編碼、配置到運行都給予了組件編程更多、更直接的支持。

在基礎的和企業級的服務上兩個平臺很難一決高低。從基礎的集合、字符串操作到企業級的API接口,如JMS、JDBCJAXJNDI等,J2EE在這方面有著非常堅實的結構。微軟.NET框架類庫也不示弱,提供了從圖畫、網絡、線程到ADO.NET、ADSI、Windows表單和ASP.NET等一系列的API。

除去API類庫的無縫的功能復用外,對本地平臺的調用操作也是值得關注的。CLRJava虛擬機都支持本地方法的調用。在異構平臺方面,J2EE更鐘情于IIOPInternet InterORB Protocol),而.NET則使用SOAP

2)相同的三層/多層體系? 基于三層/多層分布式計算結構已毋庸置疑地成為當今企業應用的主流模式,也是兩個平臺較量的著力點。

在客戶端,表示層負責用戶與系統的交互。對于不同的處理要求,.NETJ2EE都提出了基于桌面的應用程序和基于瀏覽器的Web應用的開發組件:Java ApplicationWindows表單、Java Servlet/JSPASP.NET雙雙形成犄角之勢。但Windows表單依賴微軟桌面系統的天然優勢,無論在交互速度還是在界面的表現性能上都較Java Application稍勝一籌。Servlet/JSPASP.NET是目前企業在瘦客戶端應用的重點,兩者都基于HTTP請求/響應模型,通過HTML瀏覽器頁面完成用戶交互。雖然ASP.NET聲稱在底層通過編譯執行獲得了相當高的處理速度和服務器方控件的瀏覽器自適應能力,但目前并沒有這方面的硬性數據,很難據此而論高低。在緩存、狀態優化等方面兩者可謂是旗鼓相當。另一個與客戶端應用相關的技術是ActiveXApplet,從目前的趨勢來看,它們在兩個平臺上的地位逐漸邊緣化,也不為大多數企業所接受。

在中間層,分布式業務組件負責企業應用的商業邏輯部署。由于這些業務組件經常負責處理數據庫連接、網絡資源和線程等高昂的資源,所以一直是三層/多層架構的關鍵和企業應用的核心。J2EEEJB是一個成熟的、得到業界廣泛支持的大型企業級組件框架,而.NET組件則是建立在新型的COM+服務之上,兩者在組件與操作系統的交互、客戶端資源共享等方面都有很好的支持。.NET則通過元數據支持自描述性的組件開發、XCOPY部署以及多版本共存,無需注冊表和描述文件,對企業客戶有一定的吸引力。

在后端數據層,兩個平臺都為數據庫連接量身定做了一套數據存取模型:J2EEJDBC.NETADO.NET,它們在支持傳統SQL數據源的同時,也支持新型的XML數據源。這方面由于更多地涉及到具體的數據庫產品,很難說那種數據模型更有優勢。

兩種架構的簡單對照如表1所示。

?

表1 J2EE與.NET架構比較

架構

比較項

J2EE

.NET

通信協議

Remote Method Invocation over Internet InterOrb Protocol (RMI/IIOP)

XML

編程語言

Java

C#VB.NETCOBOL

運行時環境

Java Virtual Machine (JVM)

Common Language Runtime (CLR)

胖客戶端

Java Swing

Windows Forms

目錄服務

Java Naming and Directory Interface (JNDI)

Active Directory Services Interface (ADSI)

數據訪問

Java Database Connection (JDBC)

Java Connectors ADO.NET

異步消息處理

Java Message Service (JMS)

Microsoft Message Queue

表示層技術

Servlets Java Server Page(JSP)

ASP.NET

中間層組件模型

EJBJavaBean

COM+COM

安全訪問

JAAS

COM+ Security Call Context

事物處理

Java Transaction Server (JTS)

Microsoft Distributed Transaction Coordinator (MS-DTC)

開發工具

Borland JBuilderIBM VisualAge

Visual Studio.NET

2 移植性比較

在移植性方面,.NET支持跨語言,J2EE支持跨平臺。

微軟通過.NET 通用語言運行時來消除編程語言的差別,選擇.NET平臺就意味著選擇Windows”,這句話至少在可預見的一段時間里仍然是一個基本事實。J2EE則通過Java虛擬機來消除平臺差別,跨平臺是它的一大賣點,也是在選擇企業應用開發平臺時的一個重要參考因素,幾乎所有的主流操作系統都提供了對J2EE的支持;實際上如果要搭建跨UnixWindows等多個操作系統平臺,J2EE平臺幾乎是惟一的選擇,J2EE更關注跨平臺而不是跨語言。但微軟認為,如果企業的應用都能通過標準協議以Web服務的方式發布,那么平臺都是中立的。為了吸引更多的開發者和鼓勵廣大企業廠商轉到.NET平臺,微軟提出了多語言支持,希望用跨語言的交互性來平衡跨平臺的互操作。

3. 性能比較

性能是J2EE.NET喋喋不休的話題。二者之間著名的論戰是一個關于寵物店的范例應用。寵物店是Sun一度以來作為J2EE典型應用的展示范例,而.NET“自告奮勇地在自己的平臺上實現了該寵物店應用,且聲稱代碼行是J2EE1/3,效率卻是J2EE30倍。但Sun的理由是這個范例根本不適合用來做性能比較,該范例實現也沒有做針對性能的優化,而且指責微軟通過后端數據庫優化和緩存虛抬了.NET平臺的效率。這樣的爭吵當然不能作為判斷的依據,目前也沒有見到更客觀的第三方評測報告。“Wintel平臺上也許沒有理由懷疑.NET的性能;至于非Windows平臺,.NETJ2EE也不再具有可比性。

4.安全性、穩定性比較

WINDOWS本身的安全漏洞,使得.NET的安全性不如J2EE。同時,在應用服務器的選擇上,.NET只能用IIS,安全性、穩定性難以保證;而J2EE有更多的選擇,可以在諸多遵循標準的廠商所提供的應用程序服務器中,選擇最符合需要、成本最低、而且又被認為是最佳的平臺。

5.可擴展性比較

.NET平臺的擴展思想是基于軟件的橫向擴展,而J2EE平臺的擴展思想則是基于硬件的縱向擴展。

Windows系統一般只能擴展到不超過8個處理器,而Sun的系統卻可以擴展到100個甚至更多處理器。

基于J2EE平臺的應用程序可被部署到各種操作系統上,例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個處理器,這是NT服務器所望塵莫及的。J2EE領域的供應商提供了更為廣泛的負載平衡策略,能消除系統中的瓶頸,允許多臺服務器集成部署。這種部署可達數千個處理器,實現可高度伸縮的系統,滿足未來商業應用的需要。

6.成熟度比較

在平臺的成熟度方面,兩者也有一比。J2EE1999年形成了成熟的架構,發展至今已經具有相當成熟的、經過檢驗的企業應用系統。而.NET究其淵源是源自微軟以前開發企業應用程序的平臺DNADistributed Network Architecture),其中包括了許多已經被證實的技術,并且這些技術已經在產品中得到實現,包括微軟的事務服務器、COM+、消息隊列和SQL Server數據庫等。

7.第三方廠商的支持

J2EE作為一種開放的規范,從一開始就得到了眾多廠商的支持,IBM、BEA、HPOracle等在J2EE的實施上都有較大的投入。目前市場上最好的J2EE應用服務器并不是SunNetscape合資的iPlanet,而是BEAWebLogicIBMWebshpere。開發工具有BorlandJBuilderSunForte for JavaBEAWebLogic Workshop、Oracle JDeveloper、IBMVisualAge for Java等。

.NET在設計之初就緊緊地把平臺規范與產品膠合在一起。雖然,NET架構的一小部分具有開放性(如C#語言、通用語言基礎構造CLI Web服務標準),但至少目前很難想象會有一個非微軟的.NET實現。Visual Stdio.NET是其唯一的開發工具。

8.開源支持比較

J2EE開源產品眾多,免費框架居多,相應的最佳實踐設計模式層出不窮。而.NET無開源社區支持,是以框架開發者為主導的設計。

9.學習成本比較

J2EE門檻較高,由于多且雜,需要開發人員花費很長時間才能熟悉整個體系。而.NET門檻較低,使用方便,學習成本較低。但是,對于開發人員來說,.NET在系統整體架構的設計方面不如J2EE易于把握。

10.對WEB服務支持的比較

.NETJ2EE這兩個平臺的發展歷程來看,.NET從一開始就深深打上了Web服務技術的烙印,在它的市場推廣活動中,無時無刻不凸顯其作為Web服務的開發和部署平臺的特征,可以說,.NET天生就是為Web服務準備的開發和部署平臺。相對.NET而言,J2EE是一個比較的東西,最初它是為了將Java平臺拓展到企業級應用領域而制訂的一個平臺框架規范,隨著Web服務技術的興起和發展,J2EE平臺作為一個企業級應用的開發和部署平臺,無法回避業界的重大技術革命——Web服務,J2EE也不斷地引入了對Web服務的支持。

從服務描述、服務實現和服務的發布、發現與綁定,以及服務的調用和執行這些不同的角度看,J2EE.NET的支持基本不相上下,惟一的區別可能是.NET的開發工具更為方便一些、集成度更高一些。

Web服務規范的控制方面,微軟與IBM共同主推了大量的Web服務規范,在一段時間內,兩家公司Web服務技術的市場推廣活動都是聯合舉行的,不難看出這兩家公司在這個領域背后的戰略合作關系。最初的Web服務核心技術SOAP、WSDL主要由這兩家公司制訂,后來的UDDI是由這兩家為首的多家核心企業共同制訂,再后來的一些不是核心的Web服務規范,如WS-Inspection、WSFLWS-SecurityWS-RoutingWS-LicenseWS-Referral等,則完全是由這兩家來制訂的。不難看出:IBM和微軟對于Web服務的貢獻以及它們對Web服務規范的控制。

盡管由于某種原因,Sun公司曾經在很長的一段時間里被排除在WS-I(由IBM,微軟和BEA發起成立的促進WEB服務互操作的一個組織)的門外,但這并沒有影響Sun公司繼續在WEB服務方面堅持開放的戰略。Sun公司是Java語言的發明者,而作為一個開放的跨平臺的技術體系,JavaWEB服務的開發方面也起著非常重要的作用。雙方妥協后,Sun最終被接納為WS-I的董事成員。

Sun公司積極地參與了制訂Web服務規范的過程,像XMLebXML。并已經在Java中支持WEB服務中最重要的規范,例如SOAPJAX-RPCJAXM、SAAJJMS)、WSDLJava API for WSDL)、UDDI/ebXMLJAXR)和XMLJAXPJAXB)等等。Sun公司除了積極地參與Web服務領域里的標準化工作,更是努力地為客戶提供全面的軟件產品,為用戶開發和部署Web服務提供平臺。Sun公司的Sun ONE Web服務平臺開發版,是業界第一個用于基于Java技術的Web服務和Web應用開發的全方位的集成平臺。該平臺集成了多種Sun ONE服務器軟件、Java開發工具,支持業界的WEB服務標準,而且是面向開發人員設計,安裝和使用都非常簡單。

四、結束語

關于J2EE.NET之間的討論已經持續很多年了,孰優孰劣仍然很難下結論。事實上,.NETJ2EE都各有特長,兩者都是十分優秀的開發平臺,短時間內誰也不可替代對方。選擇哪種開發平臺,除了要看軟件開發人員對語言的掌握能力及個人喜好,也要根據開發內容和企業具體情況、具體需求而定。

J2EE最大的優勢是跨平臺,.NET最大的優勢是入門容易和性能較高(鑒于微軟在“Wintel平臺上的代碼優化功底,.NET代碼的執行速度較之于JAVA有明顯的優勢)。對于沒有.NETJ2EE平臺基礎的開發團隊來說,如果開發的應用軟件沒有跨平臺的要求,只需要運行于微軟平臺之上,則選擇.NET平臺較好;如果要求跨平臺,則只能使用J2EE。如果開發團隊具有.NETJ2EE平臺基礎,在進行新的應用軟件開發時,如果沒有跨平臺要求,則沒有必要更換開發平臺,因為,更換平臺會帶來不小的培訓成本。

?

參考文獻:

[1] .NET vs J2EE----面對SOA的荒謬與誤解[OL].http://www.chinaz.com/Program/.NET.

[2] 李建忠,畢文杰..J2EE vs .NET[OL].http://www.csai.cn.

[3] 淺析J2EE.NET平臺優劣[OL].http://java.chinaitlab.com/core/9431.html.

[4] J2EE vs. .NET ---- 建置XML架構的[OL].Web Service http://publish.it168.com.

[5] J2EE vs .NET.[OL] http://hk.netsh.com/eden/blog.

[6] .netj2ee構架之爭[OL].http://hi.baidu.com/asxinyu/blog.

[7] .NET vs. J2EE:誰與爭鋒[OL].http://zmdxyboyandy.blog.bokee.net.

[8] J2EE體系結構圖[OL].ttp://www.blogjava.net/qnjian/gallery/image/3569.html.

[9].NET體系結構圖[OL]. http://www.cnblogs.com/kimma/archive/2008/09/01/1281161.html.

?

?

?

?

總結

以上是生活随笔為你收集整理的J2EE与.NET技术架构的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。