【正文】
在您可以創(chuàng)建源代碼,而 且 無需再 為 新類 中的基本成分編寫其他的語言 。目前支持為 COBOL, Eiffel, Fortran語言, Perl, Python和 Scheme。由于公共語言規(guī)范和通用類型系統(tǒng), .NET也可以在跨模塊和跨語言的界限工作 多國語言的發(fā)展 由于許多語言對 .NET 公共語言運行庫有規(guī)范,現(xiàn)在更容易 語言應(yīng)用部分 適應(yīng)你的操作 。某些功能只提供給開發(fā)人員在低層次的語言工作,從而迫使他們設(shè)計決策。這些應(yīng)用程序 使用 XML和簡單對象訪問協(xié)議( SOAP) 進行通信,從而 使得 他們 能 在 基類 庫 中繼承 并能 在公共語言 中 運行 。 微軟的 .NET和 WINDOWS的基因 .NET 周圍 中的一些營銷 宣言聽起來很熟悉 : .NET 平臺被稱為 WINDOWS 基因的下一代。 下面來看 .NET的整體結(jié)構(gòu),它由這幾個個主要部分組成: ■ .NET框架 一個全新的應(yīng)用開發(fā)平臺。這將使你對 .NET平臺的內(nèi)部工作有一個深入的了解,并在接下來的章節(jié)中能有更多的收獲?;A(chǔ)類庫的 .NET 框架集合覆蓋了大量API。而且 .NET平臺的核心部分( Common Language Infrastructure, CLI)和 C規(guī)范都已提交給 ECMA,并通過了標(biāo)準(zhǔn)化。 Microsoft 在創(chuàng)建 .NET 上已經(jīng)投入了數(shù)十億美元進行了多年的研究。然而,這些僅僅說明了 .NET 是對 Microsoft以前技術(shù)的重大改進。有人預(yù)言, C將成為在 .NET平臺上開發(fā)應(yīng)用程序最受歡迎的語言。許多微軟的伙 伴也宣布支持 NET工具和部件——你可以瀏覽 上的供應(yīng)商表來查看。 .NET 平臺到底有幾個組成部分,每個人都會給你不同的答案。 微軟的Hailstorm實際上是一個囊括了微軟品牌的最重要網(wǎng)站某些服務(wù)的計劃。這些服務(wù)器和語言包括不同的 API 和系統(tǒng),使互操作性達到最好。 .NET的基類庫用相同的方法揭露了公共語言庫的功能,這樣, Windows API 允許 你利用的 Windows 作業(yè)系統(tǒng)的特點的共 同語言運行庫的功能。 .NET 也 不 是 隱藏 在開發(fā)這些之中,在新的網(wǎng)絡(luò)平臺上,這些概念根本不存在的。雖然它包含指示 類似的匯編代碼和移入和移出寄存器變量,它也包含了管理對象和調(diào)用它們的方法 ,操縱陣列,提高和捕獲異常的說明。 由于 IL整個翻譯的開銷 的復(fù)雜性, 無接口定義語言需要啟用跨語言的元數(shù)據(jù) 來 處理。 對應(yīng)用開發(fā)的規(guī)范下, Windows DNA的巨大挑戰(zhàn)之一是各種語言開發(fā)的應(yīng)用程序時的調(diào)試。但 2021年 6 月 27 日,微軟宣布,它已經(jīng)與 Corel 達成協(xié)議, 共同 開發(fā) 一個 C#編譯器和 .NET 框架基礎(chǔ)結(jié)構(gòu) 組件,它們 將 共享源代碼并執(zhí)行 FreeBSD版本的 UNIX。對那些 想 在 這個工作 中 花 費 一些時間來降低 棘手的代碼的人來說 ,繞過資源管理應(yīng)該是一種不錯的方法。然而,在 .NET環(huán)境下,微軟正在努力使軟件開發(fā)更加容易。 COM以前是這樣的 : 你 以前 從來沒有改變一個方法接口,你只 是 添加新的方法。程序集包含了 .NET公共語言運行時使用的版本信息,以確保應(yīng)用程序 在 加載它 時 建立 使用組 件。 配置簡單 今天,基于 Windows 的應(yīng)用程序 的 開發(fā) 和 安裝達到 了 令人難以置信的困難 。事實上, 安裝 大部分 .NET應(yīng)用程序僅僅需要將他們的文件復(fù)制到一個目錄,卸載應(yīng)用程序?qū)⒅皇莿h除這些文件。這是非常低效的重復(fù)建設(shè),并在大多數(shù)情況相當(dāng)乏味,所以在許多活動已經(jīng)形成了三個標(biāo)準(zhǔn)以簡化流程: XML, SOAP和 UDDI。 ■從 COM組件中調(diào)用 .NET服務(wù) 雖然這聽起來有點古怪,但它是可能的。 but it does offer an extensible architecture that makes it an ideal choice for developing .NET software. Features of the .NET Platform The core of the .NET platform is founded on the Common Language Runtime, Base Class Library, and the Common Language Specification. The .NET Base Class Library exposes the features of the Common Language Runtime in much the same way that the Windows API allows you to utilize the features of the Windows operating system。 在這其中的另一面,有公司出于對 .COM 技術(shù)的既得利益考慮,可能想使用 .NET平臺的一些零零碎碎的功能 之后 , 然后 才 會 采取堅持 .COM客戶端可以方便地通過 COM 非法侵占 層與 .NET組件聯(lián)系。但是,此代碼仍然是由 CLR運行 時,它只是沒有得到諸如通用類型系統(tǒng)和自動內(nèi)存管理優(yōu)勢。我們大多數(shù)人都知道,通常情況并非如此,至少在 那些 大規(guī)模的網(wǎng)站上不是這樣 的 。隨著 Windows2021的發(fā)布,微軟引入了一個新的安裝引擎幫助解決這些問題 ,但它仍然有可能是一個 不正常 的微軟安裝程序包。 SOAP 將為不同的系統(tǒng)提供容易的交換信息的方法, 而且更好的是 , SOAP允許您調(diào)用遠程系統(tǒng)的方法和返回結(jié)果。 現(xiàn)在, .NET 架構(gòu)將應(yīng)用程序組件分開,這樣應(yīng)用程序就能總是加載與它建立和測試相關(guān)的元件。但是,所有開發(fā)人員總是把每件事情都向后 100%兼容,就像您的應(yīng)用程序使用此 DLL的版本 ,新的 版本能兼容 ,對不對? 當(dāng) 新的 DLL使您的應(yīng)用程序表現(xiàn)出一些奇怪的問題或者完全停止 工作 的時候, 你要經(jīng)過大量調(diào)查找出有問題的 DLL是什么,并用新的版本替換您的軟件版本。當(dāng)內(nèi)存管理的對象不使用它們看起來 時候 的摸樣時,這些對象將始終大于零。你可以 在 ,稱為 MONO。 平臺和處理器獨立性 中間語言是與 CPU無關(guān)的,它遠高于大多數(shù)機器語言水平。 跨語言繼承的另一個特點是可以使用 IL。這些編譯器 也針對 .NET公共語言運行庫。 .NET中 ,所有的錯誤報告 都會 通過這個模型,從而大大簡化了書寫,閱讀和維護代碼。今天,一些操作系統(tǒng)的功能是通過調(diào)用 DLL的訪問使用基于 C的 API 和其他設(shè)施,通過訪問 COM 對象,從而使開發(fā)人員的工作更加 簡捷 ,使一切順利。應(yīng)用程序開發(fā)的主要類型是 Web窗體,Web 服務(wù)和 Windows 窗體應(yīng)用程序。 由 .NET框架提供的好處包括:縮短開發(fā)周期(減少代碼重用,減 少編程意外,多種編程語言的支持),更簡單的配置,由于整體式安全性而導(dǎo)致更少的數(shù)據(jù)類型相關(guān)的錯誤,由于垃圾回收器的存在而引起內(nèi)存泄漏的減少,而且,具有一般的更具可擴展性、可靠性的應(yīng)用程序。其他組件可能會要求特定的應(yīng)用,但它們不是所有 .NET 應(yīng)用程序的必要組成部分。我 們不僅介紹他們的技術(shù)和概念,而且還要用專業(yè)術(shù)語去解釋它們。 C.NET Web開發(fā)指導(dǎo)的重點不 是教你 C語言的核心內(nèi)容,而是提供代碼實例來幫助你使用 .NET 框架類庫的功能。建立 .NET平臺時, Microsoft表現(xiàn)出對開放標(biāo)準(zhǔn)極大的支持,如 XML、 SOAP 和 UDDI,而不是建立自己的標(biāo) 準(zhǔn)和技術(shù)。全球已經(jīng)有數(shù)百萬的開發(fā)者下載了 Microsoft 的 .NET 軟件開發(fā)工具包,已經(jīng)出現(xiàn)了很多有關(guān) .NET平臺及其相關(guān)技術(shù)和語言的教材、網(wǎng)站和新聞團體。其實 .NET平臺是從頭開始設(shè)計的,包括許多內(nèi)在目標(biāo),如安全性、可升級性、可靠性、靈活性和互操作性。 作為 Visual Studio IDE的下一個版本, Visual .NET戰(zhàn)略的關(guān)鍵組成部分。 .NET 平臺能提供強大的新服務(wù),新的獨立于處理器的二進制格式,新的管理語言,現(xiàn)有的語言擴展的管理語言,這樣的例子不勝枚舉。比如微軟的商務(wù)對話和結(jié)構(gòu)化查詢語言以及 .NET 中的我的服務(wù),它們中的第一個可見組件 .NET 通行證通常被視為 .NET平臺的有機組成部分。 ■公共語言庫 托管執(zhí)行環(huán)境,處理內(nèi)存分配,捕獲錯誤,并與作業(yè)系統(tǒng)服務(wù)進行交互。 .NET與其有很大的不同:它不只是一個規(guī)范。而且,它也提供了許多更高級別的功能,促進代碼重用。 另一個為 .NET開發(fā)人員帶來極大的好處是其錯誤異常處理模型。 Microsoft 公共語言規(guī)范描述了其他開發(fā)工具,作者必須為他們的編譯器輸出IL代碼,使它們能很好的融入 .NET 語言。舉例重慶大學(xué)本科生畢業(yè)論文翻譯 4 來說,一個對 IL 的定義,同樣的對象可以不管是不是能 捕獲 .NET 語言 。由 于統(tǒng)一的 Visual IL都 使用 了 .NET語言作為輸出,跨語言調(diào)試就 不 會排斥匯編語言。這個 測試版本 目前預(yù)計將在 2021年 上半年 的 某個時候 發(fā)布。 從 Visual Basic開發(fā)人員或有 COM背景與未來技術(shù)的相關(guān)的人員 的角度來說,這項技術(shù)在 只有 一個對 象 而且 沒有其他物體對其引用 的時候 會 恢復(fù)內(nèi)存,而且基本上它不再需要使用內(nèi)存。在本章 后面的內(nèi)容,我們涉及 .NET如何進行已經(jīng)經(jīng)過嚴(yán)格的引用計數(shù)或手動內(nèi)存管理方法改進的垃圾收集工作。不幸的是,軟件開發(fā)人員經(jīng)常是 玩弄 主義者, 留下 一些 ―漏洞 ‖的功能玩弄一些人。我們將在后面的章節(jié)涵蓋了更多關(guān)于配件和版本如何工作的內(nèi)容。由于這一點,大多數(shù)公司 對于 用于開發(fā)他們的安裝程序的第三方工具 很不滿意 。 分布式體系結(jié)構(gòu) 今天的分布式應(yīng)用程序與未來的 那些 仍然 有很大的不同。正如我們前面討論的,這些都是用來在 .NET并都在競爭。一個 COM客戶端可以調(diào)用 .NET組件,就好像這是一個 COM服務(wù)器一樣。 however, it also provides many higherlevel features that facilitate code reuse. This architecture gives a great number of benefits, not the mere consistent API. By virtue of writing to the Common Language Runtime and using the .NET Base Class library, all application services are available in a mon objectoriented programming model. Today some OS functions are accessed via DLL calls using the Cbased API as well as other facilities are accessed via COM objects, making the developer do the necessary legwork to make everything work together smoothly. Some features are available only to developers working in lowlevel languages, forcing to design decisions. This new programming model greatly simplifies the efforts that were required when writing Windows DNA applications, or for that matter, almost any Win32 and COM project. Developers need not to be a Windows or COM architecture guru with an indepth understanding of GUIDs, I Unknown, AddRef, Release, HRESULTS, and so on. .NET doesn’t just hide these from the developer。微軟并沒有想迫使公司放 棄現(xiàn)有的 COM組件,特別是因為現(xiàn)在微軟自己的產(chǎn)品很多是基于 COM的 .COM組件中的消息,這些消息是在 .NET運行 的時候 ,它的互操作層通過非法侵占來處理所有管理運行和 COM組件系統(tǒng)之間 翻譯時 傳遞的,就像與非托管代碼一樣。 與非托管代碼的互用 正如你可能已經(jīng)猜到了,與非托管代碼是不被 .NET 公共語言運行庫管理的代碼。例如, 現(xiàn)在, 當(dāng)用戶與門戶網(wǎng)站互動 時 ,在 他們 看來 是與一個遠程服務(wù)器 打交道。完全卸載的應(yīng)用程序幾乎是不可能的,即使他們提供卸載功能,大多數(shù)仍會遺留很多字節(jié)以及碎片。 為了 實現(xiàn) 開放的標(biāo)準(zhǔn) , .NET的建構(gòu)是基于 XML和 SOAP的, 它將使你 可以通過 Inter 激活 應(yīng)用程序,而不論其背后依托標(biāo)準(zhǔn)的信息基礎(chǔ)是什么設(shè)施。 不過它也有解決方法, 由于 COM對象是被加載在注冊表中的信息,所以只需替代該 DLL或應(yīng)用程序目錄,那么這個問題便不會發(fā)生。對于外行,當(dāng)客戶使用您的應(yīng)用程序相同的 D