<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-128  評論-55  文章-5  trackbacks-0
            看到這個標題,也許會有人表示疑惑,J2EE和.NET并不在一個層次上,怎么能將它們放在一起呢?需要指出的是,通常所說的.NET包含了一個相當廣泛的產品家族,包括開發平臺、操作系統、服務器、終端設備等,此外還包括服務平臺。開發平臺只是整個.NET戰略中的一部分,所以確切地說,放在這里的.NET應該算是.NET開發平臺。
    隨著三層/多層企業信息系統結構的深度發展和下一代分布式計算模型Web 服務的出現,企業應用中關于平臺、框架、語言的競爭也愈演烈。J2EE平臺在過去幾年里一直引領著企業應用的潮流,但最近微軟強力推出的.NET平臺也開始吸引著眾多IT企業和開發人員的注意力,向J2EE平臺提出了強有力的挑戰。企業應用領域的技術對抗也因此拉開了架勢。
    需要強調的是,.NET是戰略產品,而J2EE是描述產品的標準,現在有很多符合J2EE標準的產品。在可以預見的未來,它們都將是構建企業信息系統應用的基礎性平臺,尤其是開發和部署Web服務的重要平臺。
    盡管可以同時使用幾種系統平臺和語言,但對于企業來說,還需要選擇一個戰略性的平臺來實現數據的無縫集成,加速企業應用的部署。而要做出正確的選擇,首先需要充分了解兩個平臺的特點和優勢。本期專題將為您細說J2EE和.NET。


    一、群力所至的J2EE
    二、.NET開發平臺留住Windows開發者
    三、 J2EE與.NET平臺體系架構的異同
    四、 J2EE vs .NET:Web服務誰主沉浮?


    一、群力所至的J2EE

    中南大學 羅新星 畢文杰

    企業應用系統的開發一直面臨著重大挑戰:一方面,企業應用系統面對的是一個異構的分布式環境,它必須支持與已有系統的集成性和與其他系統的互操作性;另一方面,作為為客戶、合作伙伴和企業內部提供信息服務的平臺,企業系統還必須具有高可用性、安全性、可靠性和可伸縮性。這些要求再加上復雜多變的用戶需求和不斷伸縮的交付時間,使得企業系統的開發越來越困難。開發商和廣大程序員一直在努力推動和殷切期待一個成熟、標準的企業平臺來簡化和規范企業系統的開發和部署。Java技術的出現,尤其是J2EE(Java 2 Platform Enterprise Edition)平臺的推出正是這種努力的結果,也使得企業系統的開發由此變得更加快速和方便。需要指出的是,J2EE本身是一個標準,它為不同廠商創建平臺產品提供了標準,使不同J2EE平臺產品之間的交互成為可能。

    J2EE旅程
    Java于1996年由Sun公司推出,當時它的主要用途是制作產生動態網頁的Applet。后來,人們發現Java的“一次開發,多次運行”、純面向對象的特性、垃圾回收機制和內置的安全特別適合于開發企業應用系統。于是,企業應用開發商紛紛在Java標準版的基礎上各自擴展出許多企業應用API,其結果導致基于Java的企業應用呈爆炸式增長。但是各企業系統API之間又不能相互兼容,破壞了Java的平臺獨立性。鑒于此,Sun公司聯合IBM、Oracle、BEA等大型企業應用系統開發商于1998年共同制訂了一個基于Java組件技術的企業應用系統開發規范,該規范定義了一個多層企業信息系統的標準平臺,旨在簡化和規范企業應用系統的開發和部署。這一規范和其定義的平臺就構成了J2EE。目前J2EE的最新版本是J2EE 1.3。需要注意的是,J2EE本身是一個標準,而不是一個現成的產品(雖然現在有很多符合J2EE標準的產品),它由以下幾個部分組成:
    J2EE規范。該規范定義了J2EE平臺的體系結構、平臺角色及J2EE中每種服務和核心API的實現要求。它是J2EE應用服務器開發商的大綱。
    J2EE兼容性測試站點。Sun公司提供的一個測試J2EE應用服務器是否符合J2EE規范的站點,對通過該站點測試的產品,Sun公司將發放兼容性證書。
    J2EE參考實現。即J2EE SDK,它既是Sun公司自己對J2EE規范的一個非商業性實現,又是為開發基于J2EE企業級應用系統原型提供的一個免費的底層開發環境。
    J2EE實施指南。即BluePrints文檔,該文檔通過實例來指導開發人員如何去開發一個基于J2EE的多層企業應用系統。
    組件-容器 搭建體系架構
    J2EE規范定義了一個基于組件的多層企業應用系統開發平臺,其邏輯結構如圖1所示。圖中的橢圓形表示組件,大矩形表示容器,包含向下文字的小矩形表示API,箭頭表示訪問,箭頭線上的文字表示相應的協議。
    J2EE是一個基于組件-容器模型的系統平臺,其核心概念是容器。容器是指為特定組件提供服務的一個標準化的運行時環境,Java虛擬機就是一個典型的容器。組件是一個可以部署的程序單元,它以某種方式運行在容器中,容器封裝了J2EE底層的API,為組件提供事務處理、數據訪問、安全性、持久性等服務。在J2EE中組件和組件之間并不直接訪問,而是通過容器提供的協議和方法來相互調用。組件和容器間的關系通過“協議”來定義。容器的底層是J2EE服務器,它為容器提供J2EE中定義的各種服務和API。一個J2EE服務器(也叫J2EE應用服務器)可以支持一種或多種容器。在圖1中,你可能已經注意到每個容器的服務包括兩部分:J2SE(Java 2 Platform Standard Edition)和一組擴展的服務。這是因為J2EE是以Java標準版為基礎的,各容器在J2SE之上再根據需要提供一些擴展的服務,如目錄服務、事務管理、數據訪問、消息機制、安全性等。

    J2ee的核心——EJB
    J2EE定義了四種組件:Applet組件、Application客戶組件、Web組件及EJB(Enterprise JavaBeans)組件。其中Applet和Application客戶組件在客戶端運行,J2EE通過Java插件為Applet提供運行環境,Application客戶的容器就是本地Java虛擬機。Web及EJB組件在服務端運行。J2EE中包含兩種Web組件:JSP和Servlet。它們是Web服務器的功能擴展,都能生成動態Web頁面。不同的是JSP是將Java代碼嵌入到HTML中,服務器負責解釋執行,生成結果返回用戶(與ASP技術相似)。而Servlet是單獨的Java類,它動態生成HTML文件返回給客戶。Web組件的容器比較典型的就是基于Java的Web服務器。
    EJB是J2EE平臺的核心,也是J2EE得到業界廣泛關注和支持的主要原因。我們知道,J2EE的一個主要目的就是簡化企業應用系統的開發,使程序員將主要精力放在商業邏輯的開發上。EJB正是基于這種思想的服務器端技術,它本身也是一種規范,該規范定義了一個可重用的組件框架來實現分布式的、面向對象的商業邏輯。EJB的核心思想是將商業邏輯與底層的系統邏輯分開,使開發者只需關心商業邏輯,而由EJB容器實現目錄服務、事務處理、持久性、安全性等底層系統邏輯。
    一個可部署的EJB組件包含3個部分:
    Remote 接口 Remote接口定義EJB組件中提供的可供用戶調用的方法,也就是通常所說的實現商業邏輯的函數或過程(如計算商品價格的函數),以供遠程客戶端調用。在EJB組件部署到容器的時候,容器會自動生成Remote接口相應的實例,即EJB對象,它負責代理用戶的調用請求。
    Home接口 Home接口定義一組方法來創建新的EJB對象,查找、定位和清除已有的EJB對象。在EJB組件部署時容器也會自動生成相應的Home對象,該對象負責查找和創建EJB對象,返回EJB對象的引用給客戶;用戶利用該引用調用EJB組件的方法,得到結果;最后Home對象清除EJB對象。我們可以形象地稱Home接口為EJB對象的工廠。
    Enterprise Beans類 Enterprise Beans類是商業邏輯的具體實現類。其可供用戶調用的方法在Remote接口中定義。根據功能不同,EJB 2.0規范中定義了三種Enterprise Beans:會話Beans(Session Beans)、實體Beans(Entity Beans)和消息驅動Beans(Message-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容器由IBM的WebShpere、BEA公司的WebLogic Server、Sun公司的iPlant等應用服務器提供。EJB容器除了為EJB提供事務處理、目錄服務、持久性管理和安全性服務外,還負責EJB的部署、發布和生命周期管理。

    平臺標準服務
    服務是組件和容器之間,以及容器和J2EE服務器之間的接口,在實現層面上它就是一系列API和協議。J2EE平臺定義了一組標準的服務,其中有些服務是由J2SE提供的,有些則是J2EE對Java的擴展。
    目錄服務 JNDI(Java Name and Directory) API為應用程序提供了一個統一的接口來完成標準的目錄操作,由于JNDI是獨立于目錄協議的,應用程序可以用它訪問各種目錄服務,如LDAP、NDS、DNS等。
    數據訪問 JDBC(Java Database Connectivity) API為訪問不同類型的數據庫提供了統一的途徑,屏蔽了不同數據庫的細節,具有平臺無關性。J2EE平臺除了要求核心的JDBC API(包含在J2SE中)外,還要求擴展的JDBC API 2.0,它支持行集、連接池和分布式的事務處理。
    事務處理 JTA(Java Transaction Architecture)定義了一組標準的接口,為應用系統提供可靠的事務處理支持。JTS(Java Transaction Service)是CORBA OTS事務監控的Java實現。JTS規定了事務管理器的實現方式,該事務管理器在高層支持JTA標準,在底層實現了OMG OTS規范的Java映射。
    消息服務 JMS(Java Message Service)是一組用于和面向消息的中間件相互通信的API。
    它既支持點對點的消息通信,也支持發布/訂閱式的消息通信。 電子郵件 JavaMail API允許在應用程序中以獨立于平臺、獨立于協議的方式收發電子郵件。JAF(JavaBeans Activation Framework)負責處理MIME編碼,JavaMail利用JAF來處理MIME編碼的郵件附件。
    CORBA兼容接口 RMI(遠程方法調用)是在分布式對象間通信的Java本地方法,它使應用程序調用遠程方法像調用本地方法一樣,不需要考慮所調用對象的位置。RMI-IIOP是RMI的擴展,是符合CORBA標準的對象通信協議,也是J2EE默認的組件通信協議。Java IDL允許J2EE應用組件通過IIOP協議訪問外部的CORBA對象。
    安全服務 JAAS(Java Authentication and Authorization Service)用兩個步驟實現安全性:認證,即由用戶提供認證信息(如用戶名和密碼)來獲得系統認證,這一過程又稱之為登錄;授權,在被確認為合法用戶后,系統根據用戶的角色授予其相應的權限。J2EE的授權是基于安全角色的概念,一個安全角色是一個擁有相同權限的邏輯組。J2EE的安全角色由應用組件提供商來定義。
    Web服務支持 目前J2EE還不提供對Web服務的支持。Sun提供了一套API及其實現WSDP作為對J2EE的擴展,但目前還不是J2EE規范的內容。在WSDP中,JAXP用來解析XML文檔;JAXR向UDDI服務器注冊Web Services;JTX/RPC用基于XML的協議(如SOAP)來發送和接收XML文檔;JWSDL處理WSDL文檔。雖然J2EE不是為Web服務而生,但它現在正在努力追趕Web服務的腳步。

    多層應用模型
    從應用的角度來看,J2EE為企業應用系統的開發提供了一種多層分布式企業應用模型。在J2EE中,應用邏輯按功能不同可以劃分為不同類型的組件,各組件根據它們所在的層分布在不同的機器上,共同組成一個基于組件的分布式系統。
    如圖2所示,J2EE定義了一個典型的四層結構,分別是客戶層、Web層、商業邏輯層和企業信息系統層。
    在應用開發時,J2EE定義的四層模型可根據實際情況靈活運用。由于除了Applet外其他的組件都可以訪問數據庫、EJB組件和企業信息系統,所以通過不同層的取舍及組合,可以衍生出許多應用軟件開發模型,如基于Web的四層模型、基于桌面應用的三層模型(不包括Web層)、B2B模型(不包括客戶層)等。如果應用系統比較簡單,一般不用EJB作為邏輯層,而直接用Web組件來實現商業邏輯和數據訪問,畢竟EJB的開發和部署費用還相當高。
     

    二、.NET開發平臺留住Windows開發者

    南京郵電學院 李建忠

    .NET開發平臺一推出,就開始了與J2EE平臺的競爭。它的絕大部分是微軟Windows DNA(Distributed Network Architecture)的重寫,DNA是微軟以前開發企業應用程序的平臺。Windows DNA中包括了許多已經被證實的技術,新的.NET框架取代了這些技術,并包含了Web服務層和改良的語言支持。從戰略角度看,.NET開發平臺擔負著整合.NET戰略的重任,但它最直接的目標則是努力為微軟保留住龐大的Windows用戶基礎。
    微軟的Windows開發用戶群是微軟通過Windows操作系統獲得的最大財富。對于為什么要推出.NET開發平臺,微軟表示,主要原因之一就是由于Java向開發者承諾的硬件和操作系統無關性,可能會導致這些用戶轉向其他平臺。雖然開發平臺本身不會給微軟帶來很多收益,但Windows程序員是企業內部對微軟產品的主要支持力量,商用軟件的開發者形成了向客戶銷售微軟產品的重要渠道。如果微軟可以讓開發者在.NET開發平臺上編寫應用程序,那么就會有更多的公司購買微軟的其他產品。
    認識.NET
    認識.NET最好的方法是看它做什么。.NET戰略將互聯網本身作為構建新一代操作系統的基礎,并對互聯網和操作系統的設計思想進行合理延伸,使開發人員能夠創建出與設備無關的應用程序,以便輕松實現互聯網連接。.NET包括一個相當廣泛的產品家族,它們構建于XML和互聯網產業標準之上,為用戶提供Web服務的開發、管理、應用和體驗。圖1是對.NET戰略的總體描述。組成.NET戰略的五個方面包括:
    .NET開發平臺 這是一組用于建立Web服務應用程序和Windows桌面應用程序的軟件組件,包括 .NET Framework(框架)、.NET開發者工具和ASP.NET。于今年3月發布的Visual Studio .NET將是RAD開發工具中一個重要的產品。
    .NET服務器 能夠提供廣泛聚合和集成Web服務的服務器是搭建.NET平臺的后端基礎。 .NET基礎服務 密碼認證、日歷、文件存儲、用戶信息等基礎服務是必不可少的。微軟正在著力建設的.NET My Services等基礎性服務平臺是這方面可以借鑒的例子。
    .NET終端設備 廣泛的連接互聯網并體驗Web服務的終端設備是實現.NET的前端基礎。PC、PDA以及各種嵌入式設備將在這個廣闊的天地里發揮作用。
    .NET用戶體驗 能夠滿足人們各種各樣需求的用戶體驗是.NET的最終目標,也是.NET的價值實現。
    在這五個組成部分當中,.NET開發平臺中的 .net框架是.NET軟件構造中最具挑戰性的部分,其他四個部分則緊緊圍繞.NET框架來進行組織整合。
     
    .NET 框架內核
    .NET框架實現了語言開發、代碼編譯、組件配置、程序運行、對象交互等各個層面的功能,為Web服務及普通應用程序提供了一個托管、安全、高效的執行環境。所有在.NET平臺上創建的應用程序運行都需要兩個核心模塊:Common Language Runtime(CLR,通用語言運行時)和.NET Framework類庫。CLR是一個軟件引擎,用來加載應用程序,確認它們可以沒有錯誤地運行,并進行相應的安全許可驗證,執行應用程序,然后將被清除。
    .NET Framework類庫則向程序員提供軟件組件,來編寫在CLR的控制下運行的代碼,它們按照單一有序的分級組織提供了一個龐大的功能集,包括從文件系統到對XML功能的網訪問的每一樣功能。該類庫為開發提供了三種基本編程模板:基于ASP.NET的Web表單應用、基于ASP.NET的Web服務應用和基于傳統GUI交互的Windows應用。圖2描述了 .NET開發平臺的組成。
    CLR——.NET的虛擬機
    CLR為.NET應用程序提供了一個托管的代碼執行環境。托管意味著將原來由程序員或操作系統做的工作剝離出來交由CLR來完成,從而使程序運行獲得更高的安全性和穩定性。這些工作包括內存管理、即時編譯、組件自描述、安全管理和代碼驗證,以及其他一些系統服務。CLR提供一個技術規范,無論程序使用什么語言編寫,只要能編譯成中間語言,就可以在它的支持下運行,這樣.NET應用程序就可以獨立于語言。CLR還在應用程序運行環境中為基于組件的編程提供了直接支持,比如它支持屬性、事件、對象、繼承性、多態性、接口等組件編程特性。
    CLR中的自動垃圾收集器負責.NET應用程序運行時的內存分配、對象布局、內存釋放等內存管理問題,徹底解決了多年來困擾程序員的內存泄漏問題,大大增強了應用程序的健壯性。
    即時編譯器在運行時將中間語言以調用的對象方法為單位動態編譯成本地二進制代碼。
    中間語言是在.NET平臺下編譯器輸出PE文件(Windows可執行文件)的語言,它為.NET平臺提供了多語言支持,允許開發者使用20多種不同的編程語言。而元數據是一個內嵌于PE文件的表的集合,描述了代碼中數據類型等在代碼執行時CLR需要知道的信息。元數據使得.NET應用程序代碼具備自描述特性,提供了類型安全保障,而這在以前需要額外的類型庫或接口定義語言(IDL)。
    CLR根據托管組件的來源(如互聯網、企業局域網、本地機器)等因素確定各組件的信任度,并根據信任度來限定它們執行諸如讀取文件、修改注冊表等敏感操作的權限。此外,CLR借助通用類型系統對代碼類型進行嚴格的安全檢查,可以避免不同組件之間可能存在的類型不匹配問題。通過代碼訪問安全機制,開發人員可以為應用程序指定完成工作所必需的權限。CLR不僅規定了代碼訪問安全,還規定了基于角色的安全。基于角色的認證為互聯網上分布式組件的執行提供了安全保證。
    值得指出的是,CLR通常寄宿在其他高性能服務器的應用程序中,比如互聯網信息服務器(IIS)、SQL Server數據庫服務器等。這樣,開發者可以充分利用CLR諸多安全、高效的優點來部署自己的商業邏輯。
     
    類庫——組件和服務的家園
    .NET Framework類庫由一組廣泛的、面向對象的、可被開發者用于任何編程語言的可重用類集合組成。它提供了幾乎所有應用程序都需要的公共代碼;在此之上是許多應用程序模板,這些模板為開發網絡站點和網絡服務提供特定的高級組件和服務,不管是傳統的命令行程序還是Windows圖形界面程序,亦或是面向下一代互聯網分布式計算平臺的ASP.NET或Web服務應用。與在Windows和它的SDK中發送的代碼庫一樣,.NET框架類庫將程序員從繁重的編程細節中解放出來,而專注于程序的商業邏輯。它將核心Win32 API最常用的功能和外掛SDK的功能封裝到了一個統一的包中,并采用清晰而有條理的方式對類庫進行分組和描述,這樣開發者就能夠更方便地找到其應用程序所需要的大多數功能。下面是它所提供的一些核心服務:
    系統框架服務
    服務框架包括一套開發人員希望在標準語言庫中存在的基類庫,如集合、輸入/輸出、字符串、數據等基類。基類庫還提供訪問操作系統服務的類,如圖畫、網絡、線程、加密等類型。此外,服務框架也包括數據訪問類庫以及開發工具。
    ADO.NET組件
    ADO.NET為基于網絡的、可擴展的應用程序和服務提供數據訪問服務。它不僅支持傳統的基于鏈接指針風格的數據訪問,而且對于更適合于把數據返回到客戶端應用程序的無鏈接數據模板,它也提供高性能的訪問支持。
    XML數據組件
    通過它開發人員可以對任何數據進行XML轉換、傳輸和確認,所有數據都可以被看做是XML格式的。同時,系統也支持ADO.NET數據與XML數據之間的通用轉換。
    Windows表單組件
    Windows表單組件為開發人員提供了強大的Windows應用程序模型和豐富的Windows用戶口,包括傳統的ActiveX控件和Windows XP的新界面,如透明的、分層的浮動窗口。對CLR的強大支持也是Windows表單組件令人興奮的地方之一。
    ASP.NET應用服務
    ASP.NET的核心是其用于處理基于低級結構HTTP請求的高性能的運行語言,其編譯運行的方式大大提高了它的性能。ASP.NET使用基于構件的.NET框架配制模板,因此它獲得了諸如XCOPY配制、構件并行配制、基于XML配制之類的優點。它還支持應用程序的實時更新,同時提供高速緩沖服務,以改善性能。
    ASP.NET Web表單
    ASP.NET Web表單把VB表單高效率的優點帶到了Web應用程序的開發中。ASP.NET Web單支持傳統的將HTML內容與腳本代碼混合的ASP語法,但是它提出了一種將應用程序代碼和用戶接口內容分離的、更加結構化的方法。它提供一套映射傳統HTML用戶接口部件(包括列表框、文本框和按鈕)的ASP.NET Web表單控件和一套更加復雜的Web應用控件(如日歷和廣告轉板)。
    對Web服務的支持
    ASP.NET應用服務體系架構為用ASP.NET建立Web服務提供了一個高級的可編程模板。雖然建立Web服務并不限定使用特定的服務平臺,但是ASP.NET的許多優點將簡化其開發過程。使用這個編程模型,開發人員甚至無需理解HTTP、SOAP或其他任何網絡服務規范。ASP.NET可以利用現存的體系架構和應用程序,為在互聯網上綁定應用程序提供了一個簡單的、靈活的、基于產業標準的模型。

    Author: orangelizq
    email: orangelizq@163.com

    歡迎大家訪問我的個人網站 萌萌的IT人
    posted on 2007-07-27 22:54 桔子汁 閱讀(363) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 午夜无码A级毛片免费视频| 亚洲av永久中文无码精品| 两个人看的www高清免费视频| 成人爱做日本视频免费| 亚洲综合校园春色| 毛片免费在线播放| 亚洲国产成人九九综合| 97视频免费在线| 亚洲天堂2017无码中文| 成人免费午夜无码视频 | 亚洲国产AV无码专区亚洲AV| 成人一区二区免费视频| 亚洲精品字幕在线观看| 免费看男人j放进女人j免费看| 亚洲ⅴ国产v天堂a无码二区| 免费专区丝袜脚调教视频| 亚洲黄页网在线观看| 国产成人在线观看免费网站| 国产精品成人亚洲| 亚洲AV无码一区二区二三区入口 | 国产日产亚洲系列| 18女人腿打开无遮掩免费| 亚洲精品无码久久久久APP| 亚洲精品线路一在线观看| 男女午夜24式免费视频| 国产精品亚洲自在线播放页码| 免费在线一级毛片| 18观看免费永久视频| 黄页网站在线免费观看| 亚洲高清在线观看| www国产亚洲精品久久久日本| 99久久国产免费中文无字幕| 亚洲成av人片在www鸭子| 亚洲电影一区二区| 亚洲国产精品日韩专区AV| 免费人成在线观看69式小视频| 一级视频免费观看| 亚洲无人区码一二三码区别图片| 亚洲国产a∨无码中文777| 国产一区二区三区在线免费| 91精品视频免费|