.NET框架

 .NET開發框架的幾個主要組成部分:首先是整個開發框架的基礎,即通用語言運行時以及它所提供的一組基礎類庫;在開發技術方面,.NET提供了全新的數據庫訪問技術ADO .NET,以及網絡應用開發技術ASP .NET和Windows編程技術Win Forms;在開發語言方面,.NET提供了VB,VC++,C#, Jscript等多種語言支持;而Visual Studio .NET則是全面支持.NET的開發工具。下面就讓我們來一步步的來了解它們:
    通用語言運行時,即Common Language Runtime 。Microsoft .NET 給開發人員帶來了一種全新的開發框架,而通用語言運行時則處於這個框架的最低層,是這個框架的基礎。開發人員對於所謂的C運行時、VB運行時、Jave虛擬機這些概念已經非常熟悉了,而通用語言運行時則爲多種語言提供了一種統一的運行環境。另外它還提供了更多的功能和特性,比如統一和簡化的編程模型,用戶不必迷惑於Win32 API和COM;避免了DLL的版本和更新問題(常稱爲DLL地獄),從而大大簡化了應用程序的發佈和升級;多種語言之間的交互,例如我們甚至可以在VB中使用C++編寫的類;自動的內存和資源管理等等。Microsoft .NET正是基於通用語言運行時,實現了這些開發人員夢寐以求的功能。
    基於通用語言運行時開發的代碼稱爲受控代碼,它的運行步驟大體如下:首先使用一種通用語言運行時支持的編程語言編寫源代碼,然後使用針對通用語言運行時的編譯器生成獨立於機器的微軟中間語言(Microsoft Intermediate Language),同時產生運行所需的元數據,在代碼運行時再使用即時編譯器(Just In Time Compiler)生成相應的機器代碼來執行。
    當然對於開發者而言,他們除了關心通用語言運行時提供那麼多新特性外,它究竟給開發者提供了什麼樣的編程接口,這就是基礎類庫(Base Class Library)。這組基礎類庫包括了從輸入輸出到數據訪問等各方面,提供了一個統一的面向對象的、層次化的、可擴展的編程接口。它使用一種點號分隔的方法,使得查找和使用類庫非常容易。例如基礎類庫中的根,它的命名空間是System,提供數據訪問的類庫的命名空間是System.Data。在使用時,開發者只需在自己的應用中添加所需的基礎類庫的引用,然後就可以使用這個類庫中的所有方法、屬性等等。跟傳統的Windows編程相比,使用和擴展基礎類庫都非常容易,這使得開發者能夠高效、快速的構建基於下一代互聯網的網絡應用。
    幾乎所有的應用程序都需要訪問從簡單的文本文件到大型的關係型數據庫等各種不同類型的數據 。在Microsoft .NET中訪問數據庫的技術是ADO .NET。ADO .NET提供了一組用來連接到數據庫,運行命令,返回記錄集的類庫,與從前的ADO(ActiveX Data Object)相比,Connection和Command對象很類似,而ADO .NET的革新主要體現在如下幾個方面:
    首先,ADO .NET提供了對XML的強大支持,這也是ADO .NET的一個主要設計目標。在ADO .NET中通過XMLReader,XMLWriter, XMLNavigator, XMLDocument等可以方便的創建和使用XML數據,並且支持W3C 的 XSLT、DTD、XDR等標準。ADO .NET對XML的支持也爲XML成爲Microsoft .NET中數據交換的統一格式提供了基礎。
    其次,ADO .NET引入了DataSet的概念,這是一個駐於內存的數據緩衝區,它提供了數據的關係型視圖。不管數據來源於一個關係型的數據庫,還是來源於一個XML文檔,我們都可以用一個統一的編程模型來創建和使用它。它替代了原有的Recordset的對象,提高了程序的交互性和可擴展性,尤其適合於分佈式的應用場合。
    另外,ADO .NET中還引入了一些新的對象,例如DataReader可以用來高效率的讀取數據,產生一個只讀的記錄集等等。簡而言之,ADO .NET通過一系列新的對象和編程模型,並與XML緊密結合,使得在Microsoft .NET中的數據操作十分方便和高效。 ASP .NET是Microsoft .NET中的網絡編程結構,它使得建造、運行和發佈網絡應用非常方便和高效。我們可以從以下幾個方面來了解ASP .NET:
   1. ASP .NET網絡表單
    ASP .NET網絡表單的設計目的就是使得開發者能夠非常容易的創建網絡表單,它把VB中的快速開發模型引入到網絡開發中來,從而大大簡化了網絡應用的開發。具體的說:在ASP .NET中可以支持多種語言,不僅僅支持腳本語言,通用語言運行時支持的所有語言在ASP .NET中都可以使用;代碼和內容分開,在現在的ASP(Active Server Pages)開發中,內容和腳本交錯,維護和升級很困難,將他們分開可以使得開發人員和設計人員能夠更好的分工合作,提高開發效率;另外在ASP .NET中通過引入服務器端控件,將類似VB的快速開發應用到了網絡開發中來,這樣大大提高了構建網絡表單效率,並且服務器端控件是可擴展的,開發者可以建造自己需要的的服務器端控件。
   2. ASP .NET網絡服務
    網絡服務(Web Service)是下一代可編程網絡的核心,它實際上就是一個可命名的網絡資源,可用來在Internet 範圍內方便的表現和使用對象,就像使用今天的 COM對象一樣,不同的是使用和表現網絡服務是通過SOAP(簡單對象訪問協議)甚至HTTP來實現的。在ASP .NET中,建造和使用網絡服務都非常方便:
在ASP .NET中建造網絡服務就是編寫一個後綴爲.ASMX的文件,在這個文件中加入想要表現出來的方法就可以了,網絡服務的建造者不需要了解SOAP,XML的細節,只需要把精力集中在自己的服務本身,這也爲獨立軟件服務開發商提供了很好的機會;使用網絡服務最簡單的方式就是使用HTTP協議(HTTP GET 或HTTP POST),用戶只需要直接訪問網絡服務(.ASMX文件)的URL即可;當然用戶還可以通過SOAP在自己的應用中更靈活的使用網絡服務。
   3. ASP .NET應用框架
    ASP .NET應用不再是解釋腳本,而是編譯運行,再加上靈活的緩衝技術,從根本上提高了性能;由於ASP .NET的應用框架基於通用語言運行時,發佈一個網絡應用,僅僅是一個拷貝文件的過程,即使是組件的發佈也是如此,更新和刪除網絡應用,可以直接替換/刪除文件;開發者可以將應用的配置信息存放XML格式的文件中,管理員和開發者對應用程序的管理可以分開進行;提供了更多樣的認證和安全管理方式;在可靠性等多方面都有很大提高。
    傳統的基於Windows的應用(Win Forms),它仍然是Microsoft .NET戰略中不可或缺的一部分。在Microsoft .NET中開發傳統的基於Windows的應用程序時,除了可以利用現有的技術例如ActiveX控件以及豐富的Windows接口外,還可以基於通用語言運行時開發,可以使用ADO .NET、網絡服務等,這樣也可以實現諸如避免DLL地獄、多語言支持等.NET的新特性。從上面的介紹中我們已經知道Microsoft .NET開發框架支持多種語言,在目前的測試版中已經支持 VB,C++,C#和Jscript四種語言以及它們之間的深層次交互。而且微軟支持第三方生產針對Microsoft .NET的編譯器和開發工具,這也就是說幾乎所有市場上的編程語言都有可能應用於Microsoft .NET開發框架。這樣開發者可以任意選擇自己喜愛的語言,這種開放和交互的特性正是開發者所熱愛的。
    需要特別指出的是,微軟在Microsoft .NET中推出了全新的C#語言,這種全新的面向對象的語言使得開發者可以快速的構建從底層系統級到高層商業組件的不同應用。C#在保證了強大的功能和靈活性的同時,給C和C++帶來了類似於VB的快速開發,並且它還針對.NET作了特別設計,比如C#允許XML數據直接映射爲它的數據類型等等,這些特性結合起來使得C#成爲優秀的下一代網絡編程語言。
    與此同時Microsoft .NET對原有的VB和C++也做了很大的改進,使得它們更加適應Microsoft .NET開發框架的需求。例如在Visual Basic .NET中增加了繼承等面向對象的特性,結構化的出錯處理等等;可管理的C++擴展,大大提高了利用C++來開發Microsoft .NET應用的效率等。
    Visual Studio .NET作爲微軟的下一代開發工具,它和.NET 開發框架緊密結合,是構建下一代互聯網應用的優秀工具,目前已經有Beta測試版面世。Visual Studio .NET通過提供一個統一的集成開發環境及工具,大大提高了開發者的效率;集成了多種語言支持;簡化了服務器端的開發;提供了高效地創建和使用網絡服務的方法等等。 .NET框架的一個主要目的是使COM開發變得更加容易。COM開發過程中最難的一件事是處理COM基本結構。因此,爲了簡化COM開發,.NET框架實際上已自動處理了所有在開發人員看來是與“COM”緊密相關的任務,包括引用計算、接口描述以及註冊。必須認識到,這並不意味着.NET框架組件不是COM組件。事實上,使用Visual Studio 6.0的COM開發人員可以調用.NET框架組件,並且在他們看來,後者更像是擁有iUnknown數據的COM組件。相反,使用Visual Studio.NET的.NET框架開發人員則將COM組件視作.NET框架組件。
    爲了避免引起誤解,這裏需對這種關係加以特別說明:COM開發人員必須手動去做大多數.NET框架開發人員可以在運行時自動執行的事情。例如,必須手寫COM組件的安全性模塊,且無法自動管理模塊佔用的內存,而在安裝COM組件時,註冊條目必須放進Windows註冊表中。對.NET框架而言,運行時實現了這些功能的自動化。例如,組件本身是自我描述型的,因而無需註冊到Windows註冊表中便能安裝。
    當把COM與Microsoft事務服務器(MTS)和分佈式COM(DCOM)結合在一起時,就變成了COM+。COM+提供了一組面向中間層的服務。特別是COM+提供了進程管理功能和數據庫與對象連接池處理功能。在將來的版本中,它還將提供一種稱爲分區的功能——專門爲應用程序服務提供商設計的更強大的進程隔離功能。
    COM+服務主要面向中間層應用程序開發,並主要爲大型分佈式應用程序提供可靠性和可擴展性。這些服務是對.NET框架所提供服務的補充;通過.NET框架類,可以直接訪問這些服務。 .NET框架有幾個要素值得一提。首先是它的安全系統和配置系統。這兩個系統協同工作,有力地遏止了運行不安全代碼的可能性,並大幅度減少了號稱“DLL Hell”的對應用程序進行配置時所面臨的挑戰。
    安全系統是一個高度細化、基於事實的系統,它賦予開發人員和管理員多種代碼處理權限(而不僅僅是“on”或“off”)。將來,還會根據代碼本身的核心要素來決定如何實施上述權限。
    例如,當.NET框架應用程序被下載到某一系統中時,它會申請一組權限(諸如對臨時目錄的寫入權限)。運行時將收集有關應用程序的事實信息(諸如:它是從何處下載的、是否用了有效簽名、甚至它訪問系統的準確程度),並按管理策略決定是否允許應用程序運行。運行時甚至還可告之應用程序它無法授權申請的所有權限,並允許應用程序自行決定是否繼續運行。
    有這種安全系統作保障,許多應用程序配置問題便會迎刃而解。開發人員和管理員(最終是用戶)所面臨的最大挑戰之一是版本的管理問題。如果在您新裝了某個應用程序之後,一切都限於癱瘓狀態,而在這之前系統一直運行得非常良好,那麼最大的可能是新安裝的應用程序重寫了一些共享庫,並極有可能修正了現有應用程序正使用的程序錯誤。這種情況出現的頻率很高,以致人們將它稱爲:“DLL Hell”。
    .NET框架擁有的幾項高級功能可以徹底消除“DLL Hell”現象。首先,它有一個非常強大的內部命名系統,能夠有效地防止兩個庫因互相重名而被錯當爲對方的情況發生。除此之外,它還提供一項被稱作“並行”配置的新功能。如果前例中新安裝的應用程序確實重寫了共享庫,現有應用程序可對該庫進行修復。等現有應用程序再次啓動時,它會檢查所有的共享文件。如果發現文件被更改,同時這些更改又是不兼容的,則它可以請求運行時提取一個它可以使用的版本。得益於強大的安全系統,運行時可以安全地執行該操作,這樣應用程序就完成了本身的修復工作。
    總之,Microsoft .NET開發框架在通用語言運行時的基礎上,給開發者提供了完善的基礎類庫、下一代的數據庫訪問技術ADO .NET、網絡開發技術ASP .NET,開發者可以使用多種語言及Visual Studio .NET來快速構建下一代的網絡應用。隨着相關的互聯網標準及技術的普及,可以預言將會有越來越多的開發者採用這種開發結構,開發出豐富多樣的下一代互聯網應用來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章