熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#體驗Microsoft.NET平台基礎構造

2022-06-13   來源: .NET編程 
拋開MicrosoftNET平台去談C#是沒有意義的C#之Sharp也正在其後端強大的平台僅僅拘泥於語法層面是體驗不了C#的銳利之處的C#程序很多詭秘之處必須依靠MicrosoftNET平台才能深度的掌握和運用簡單的講MicrosoftNET平台是一個建立在開放互聯網絡協議和標准之上采用新的工具和服務來滿足人們的計算和通信需求的革命性的新型XML Web智能計算服務平台它允許應用程序在因特網上方便快捷地互相通信而不必關心使用何種操作系統和編程語言   從技術層面具體來說MicrosoftNET平台主要包括兩個內核即通用語言運行時(Common Language Runtime簡稱CLR)和MicrosoftNET框架類庫它們為MicrosoftNET平台的實現提供了底層技術支持通用語言運行時是建立在操作系統最底層的服務為MicrosoftNET平台的執行引擎MicrosoftNET框架包括一套可被用於任何編程語言的類庫其目的是使得程序員更容易地建立基於網絡的應用和服務在此之上是許多應用程序模板這些模板為開發網絡應用和服務提供高級的組件和服務MicrosoftNET平台之浩瀚絕非這裡的幾千字能夠廓清我們下面將著重體驗那些對我們用C#開發應用程序至關重要的平台基礎構造 通用語言運行時(CLR)   通用語言運行時是整個MicrosoftNET框架賴以建構的基礎它為MicrosoftNET應用程序提供了一個托管的代碼執行環境它實際上是駐留在內存裡的一段代理代碼負責應用程序在整個執行期間的代碼管理工作比較典型的有內存管理線程管理安全管理遠程管理即時編譯代碼強制安全類型檢查等這些都可稱得上MicrosoftNET框架的生命線   實際上我們可以看出來CLR代理了一部分傳統操作系統的管理功能在CLR下的代碼稱之為托管代碼否則稱為非托管代碼我們也可將CLR看作一個技術規范無論程序使用什麼語言編寫只要能編譯成微軟中間語言 (MSIL)就可以在它的支持下運行這使得應用程序得以獨立於語言目前支持CLR的編程語言多達二三十種微軟中間語言是我們在MicrosoftNET平台下編譯器輸出的PE文件的語言它是MicrosoftNET平台最完整的語言集非常類似於PC機上的匯編語言即時編譯器在運行時將中間語言編譯成本地二進制代碼它為MicrosoftNET平台提供了多語言的底層技術支持另外根據需要MicrosoftNET即時編譯器提供了特殊情況下的經濟型即時編譯和安裝時編譯技術   CLR的設計目的便是直接在應用程序運行環境中為基於組件的編程提供第一等的支持正如在Windows中添加了對窗口控件圖形和菜單的直接支持為基於消息的編程添加了底層結構為支持設備無關性添加了抽象內容一樣CLR直接支持組件(包括屬性和事件)對象繼承性多態性和接口對屬性和事件的直接支持使得基於組件的編程變得更簡單而不需要特殊的接口和適配設計模式在組件運行時CLR負責管理內存分配啟動和中止線程和進程強化安全系數同時還調整任何該組件涉及到的其他組件的附屬配置序列化支持允許以多種格式操作存儲在磁盤上的組件包括基於業界標准XML的SOAPCLR提供了處理錯誤條件的有力協調的方式每個模塊都具有內置的完整的元數據這意味著諸如動態創建和方法調用之類的功能更容易也更安全映射甚至允許我們靈活地創建和執行代碼我們可以控制應用程序使用的組件的版本這使應用程序更加可靠組件代碼是與處理器無關的和易於驗證的中間語言 ( IL)而不是某一種特定的機器語言這意味著組件不但可以在多種計算機上運行而且可以確保組件不會覆蓋它們不使用的內存也不會潛在地導致系統崩潰CLR根據托管組件的來源(例如來自因特網企業局域網本地機)等因素對他們判定以適當的信任度這樣CLR會根據他們的信任度來限定他們執行如讀取文件修改注冊表等某些敏感操作的權限借助通用類型系統(Common Type System簡稱CTS)對代碼類型進行嚴格的安全檢查避免了不同組件之間可能存在的類型不匹配的問題CLR下的編程全部是圍繞組件進行的   值得指出的是CLR通常寄宿在其他高性能的服務器應用程序中比如因特網信息服務器(IIS)Microsoft SQL Server這使得我們可以充分利用通用語言運行時諸多的安全高效的優點來部署自己的商業邏輯 內存管理   CLR對程序員影響最大的就是它的內存管理功能以至於我們很有必要單獨把它列出來闡述它為應用程序提供了高性能的垃圾收集環境垃圾收集器自動追蹤應用程序操作的對象程序員再也用不著和復雜的內存管理打交道這在某些喜歡張口閉口底層編程的所謂的高手來說自動內存管理從來都是他們嘲笑的對象的確為通用軟件環境設計的自動化內存管理器永遠都抵不上自己為特定程序量身訂制的手工制作但現代軟件業早已不再是幾百行代碼的作坊作業動辄成千上萬行的代碼大量的商業邏輯凸現的已不再是算法的靈巧而是可管理性可維護性的工程代碼NET/C#不是為那樣的作坊高手准備的C語言才是他們的尤物在MicrosoftNET托管環境下CLR負責處理對象的內存布局管理對象的引用釋放系統不再使用的內存(自動垃圾收集)這從根本上解決了長期以來困擾軟件的內存洩漏和無效內存引用問題大大減輕了程序員的開發負擔提高了程序的健壯性實際上我們在托管環境下根本找不到關於內存操作或釋放的語言指令值得指出的是MicrosoftNET應用程序可以使用托管數據也可以使用非托管數據但CLR並不能判斷托管數據與非托管數據   垃圾收集器負責管理NET應用程序內存的分配和釋放當用new操作符創建新的對象時垃圾收集器在托管堆(Managed Heap)中為對象分配內存資源只要托管堆內的內存空間可用垃圾收集器就為每一個新創建的對象分配內存當應用程序不再持有某個對象的引用垃圾收集器將會探測到並釋放該對象值得注意的是垃圾收集器並不是在對象引用無效時就立即開始釋放工作而是根據一定算法來決定什麼時候進行收集和對什麼對象進行收集任何一個機器的內存資源總是有限的當托管堆內的內存空間不夠用時垃圾收集器啟動收集線程來釋放系統內存垃圾收集器根據對象的存活時間對象歷經的收集次數等來決定對哪些對象的內存進行釋放宏觀的看我們並不知道垃圾收集的確切行為但MicrosoftNET類庫為我們提供了控制垃圾收集行為的部分功能在某些特殊情況下我們有必要進行一些受限的操作   垃圾收集器並不意味著程序員從此可以一勞永逸如果正在操作一個包裝了如文件網絡連接Windows句柄位圖等底層操作系統資源的對象我們還是需要明確地釋放這些非托管資源的這在第五講 構造器與析構器裡有詳細的闡述 MicrosoftNET框架類庫   MicrosoftNET框架類庫是一組廣泛的面向對象的可重用類的集合為應用程序提供各種高級的組件和服務它將程序員從繁重的編程細節中解放出來專注於程序的商業邏輯為應用程序提供各種開發支持不管是傳統的命令行程序還是Windows圖形界面程序擬或是面向下一代因特網分布式計算平台的ASPNET或XML Web服務下面是對這些組件和服務的一個概括
系統框架服務
服務框架包括一套開發人員希望在標准語言庫中存在的基類庫例如集合輸入/輸出字符串及數據類另外基類庫提供訪問操作系統服務如圖畫網絡線程全球化和加密的類服務框架也包括數據訪問類庫及開發工具如調試和剖析服務能夠使用的類

ADONET組件
ADONET為基於網絡的可擴展的應用程序和服務提供數據訪問服務ADONET不僅支持傳統的基於連接指針風格的數據訪問同時也為更適合於把數據返回到客戶端應用程序的無連接的數據模板提供高性能的訪問支持

XML數據組件
所有的數據都可被看作XML開發人員可以通過XML為任何數據使用轉換傳輸和確認服務系統框架對XML數據提供第一等的操作支持系統也支持ADONET數據與XML數據之間的通用轉換

Windows表單組件
Windows表單組件為開發人員提供了強大的Windows應用程序模型和豐富的Windows用戶接口包括傳統的ActiveX控件和Windows XP的新界面如透明的分層的浮動窗口對設計時的強大支持也是Windows表單組件令人興奮的地方

ASPNET應用服務
ASPNET的核心是高性能的用於處理基於低級結構的HTTP請求的運行語言編譯運行方式大大提高了它的性能ASPNET使用基於構件的Microsoft NET框架配制模板因此它獲得了如XCOPY配制構件並行配制基於XML配制等優點它支持應用程序的實時更新提供高速緩沖服務改善性能

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

XML Web服務
ASPNET應用服務體系架構為用ASPNET建立XML Web服務提供了一個高級的可編程模板雖然建立XML Web服務並不限定使用特定的服務平台但是它提供許多的優點將簡化開發過程使用這個編程模型開發人員甚至不需要理解HTTPSOAP或其它任何網絡服務規范 ASPNET XML Web服務為在Internet上綁定應用程序提供了一個利用現存體系架構和應用程序的簡單的靈活的基於產業標准的模型
From:http://tw.wingwit.com/Article/program/net/201311/12503.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.