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


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


          一、群力所至的J2EE

          中南大學(xué) 羅新星 畢文杰

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

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

          J2ee的核心——EJB
          J2EE定義了四種組件:Applet組件、Application客戶組件、Web組件及EJB(Enterprise JavaBeans)組件。其中Applet和Application客戶組件在客戶端運行,J2EE通過Java插件為Applet提供運行環(huán)境,Application客戶的容器就是本地Java虛擬機。Web及EJB組件在服務(wù)端運行。J2EE中包含兩種Web組件:JSP和Servlet。它們是Web服務(wù)器的功能擴展,都能生成動態(tài)Web頁面。不同的是JSP是將Java代碼嵌入到HTML中,服務(wù)器負責解釋執(zhí)行,生成結(jié)果返回用戶(與ASP技術(shù)相似)。而Servlet是單獨的Java類,它動態(tài)生成HTML文件返回給客戶。Web組件的容器比較典型的就是基于Java的Web服務(wù)器。
          EJB是J2EE平臺的核心,也是J2EE得到業(yè)界廣泛關(guān)注和支持的主要原因。我們知道,J2EE的一個主要目的就是簡化企業(yè)應(yīng)用系統(tǒng)的開發(fā),使程序員將主要精力放在商業(yè)邏輯的開發(fā)上。EJB正是基于這種思想的服務(wù)器端技術(shù),它本身也是一種規(guī)范,該規(guī)范定義了一個可重用的組件框架來實現(xiàn)分布式的、面向?qū)ο蟮纳虡I(yè)邏輯。EJB的核心思想是將商業(yè)邏輯與底層的系統(tǒng)邏輯分開,使開發(fā)者只需關(guān)心商業(yè)邏輯,而由EJB容器實現(xiàn)目錄服務(wù)、事務(wù)處理、持久性、安全性等底層系統(tǒng)邏輯。
          一個可部署的EJB組件包含3個部分:
          Remote 接口 Remote接口定義EJB組件中提供的可供用戶調(diào)用的方法,也就是通常所說的實現(xiàn)商業(yè)邏輯的函數(shù)或過程(如計算商品價格的函數(shù)),以供遠程客戶端調(diào)用。在EJB組件部署到容器的時候,容器會自動生成Remote接口相應(yīng)的實例,即EJB對象,它負責代理用戶的調(diào)用請求。
          Home接口 Home接口定義一組方法來創(chuàng)建新的EJB對象,查找、定位和清除已有的EJB對象。在EJB組件部署時容器也會自動生成相應(yīng)的Home對象,該對象負責查找和創(chuàng)建EJB對象,返回EJB對象的引用給客戶;用戶利用該引用調(diào)用EJB組件的方法,得到結(jié)果;最后Home對象清除EJB對象。我們可以形象地稱Home接口為EJB對象的工廠。
          Enterprise Beans類 Enterprise Beans類是商業(yè)邏輯的具體實現(xiàn)類。其可供用戶調(diào)用的方法在Remote接口中定義。根據(jù)功能不同,EJB 2.0規(guī)范中定義了三種Enterprise Beans:會話Beans(Session Beans)、實體Beans(Entity Beans)和消息驅(qū)動Beans(Message-driven Beans)。
          會話Beans分無狀態(tài)和有狀態(tài)兩種。一般無狀態(tài)的會話Beans模擬商業(yè)邏輯,比如計算價格等。有狀態(tài)的會話Beans通常模擬一個客戶會話,它會臨時保存客戶信息,根據(jù)客戶要求調(diào)用其他Beans來存取數(shù)據(jù)。兩種會話Beans都不保存狀態(tài)信息或數(shù)據(jù),當客戶斷開連接或服務(wù)器關(guān)閉時,會話Beans也隨之消失。一個會話Beans的典型例子是網(wǎng)站上的購物車。
          實體Beans模擬商業(yè)數(shù)據(jù),它表示一個數(shù)據(jù)存儲,可以是狀態(tài)信息或數(shù)據(jù)庫中的一條紀錄。實體Beans在客戶斷開連接或服務(wù)器關(guān)閉后,仍有服務(wù)保證其數(shù)據(jù)得以保存。一個實體Beans的典型例子就是客戶賬號信息。
          消息驅(qū)動Beans在行為上很像會話Beans。不同的是僅在需要向這些Beans發(fā)送消息時才調(diào)用消息驅(qū)動Beans,比如在需要的時候發(fā)送用戶確認信息等。
          另外,在提交和部署EJB組件時,還需要兩個文件:部署描述文件,容器根據(jù)該文件來部署Enterprise Beans,提供所要求的服務(wù);EJB jar文件,它是提交給EJB容器的一個部署單元,容器(應(yīng)用服務(wù)器)在部署時解開它,裝入Enterprise Beans。
          EJB容器非常復(fù)雜,一般由專業(yè)的J2EE應(yīng)用服務(wù)器開發(fā)商提供,比較流行的EJB容器由IBM的WebShpere、BEA公司的WebLogic Server、Sun公司的iPlant等應(yīng)用服務(wù)器提供。EJB容器除了為EJB提供事務(wù)處理、目錄服務(wù)、持久性管理和安全性服務(wù)外,還負責EJB的部署、發(fā)布和生命周期管理。

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

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

          二、.NET開發(fā)平臺留住Windows開發(fā)者

          南京郵電學(xué)院 李建忠

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

          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人
          posted on 2007-07-27 22:54 桔子汁 閱讀(370) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 宁德市| 锦州市| 武城县| 山阳县| 梧州市| 札达县| 太湖县| 金堂县| 阳西县| 黄龙县| 建水县| 江安县| 大冶市| 平度市| 大同县| 瑞丽市| 丰顺县| 乌审旗| 庆阳市| 蕲春县| 客服| 永善县| 缙云县| 自贡市| 乡宁县| 桃源县| 衡水市| 阜南县| 苍梧县| 华亭县| 河津市| 芦溪县| 西平县| 陇西县| 霍城县| 青铜峡市| 鸡泽县| 墨江| 报价| 洛川县| 潮安县|