人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

Microsoft .NET 框架 FAQ

Microsoft .NET 框架 FAQ

更新時(shí)間:2022-07-02 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

Microsoft .NET 框架 FAQ


Microsoft Corporation
2001 年 7 月
摘要:本文包含有關(guān) Microsoft .NET 和 Microsoft .NET 框架的常見(jiàn)問(wèn)題。(共 15 頁(yè)打印頁(yè))

內(nèi)容


概念性問(wèn)題
運(yùn)行庫(kù)技術(shù)問(wèn)題
術(shù)語(yǔ)
程序集
應(yīng)用程序部署和隔離
垃圾回收
遠(yuǎn)程處理
互操作性
安全性

概念性問(wèn)題

  • 什么是 .NET 框架?

運(yùn)行庫(kù)技術(shù)問(wèn)題

術(shù)語(yǔ)

  • 什么是公共語(yǔ)言運(yùn)行庫(kù) (CLR)?
  • 什么是通用類(lèi)型系統(tǒng) (CTS)?
  • 什么是公共語(yǔ)言規(guī)范 (CLS)?
  • 什么是 Microsoft 中間語(yǔ)言 (MSIL)?
  • 什么是托管代碼和托管數(shù)據(jù)?

程序集

  • 什么是程序集?
  • 什么是專(zhuān)用程序集和共享程序集?
  • 如果要生成共享程序集,需要簽名和管理密鑰對(duì)的系統(tǒng)開(kāi)銷(xiāo)嗎?
  • 命名空間名稱(chēng)和程序集名稱(chēng)之間的差異是什么?

應(yīng)用程序部署和隔離

  • 哪些選項(xiàng)可用于部署 .NET 應(yīng)用程序?
  • 我已經(jīng)編寫(xiě)了要在多個(gè)應(yīng)用程序中使用的程序集。在哪里部署它?
  • 如何查看全局程序集緩存中安裝的程序集?
  • 什么是應(yīng)用程序域?

垃圾回收

  • 什么是垃圾回收?
  • 非確定性的垃圾回收如何影響代碼?
  • 可以避免使用垃圾回收堆嗎?

遠(yuǎn)程處理

  • 進(jìn)程內(nèi)和進(jìn)程間通訊在公共語(yǔ)言運(yùn)行庫(kù)中的工作機(jī)制是什么?

互操作性

  • 可以在 .NET 框架程序中使用 COM 對(duì)象嗎?
  • 可以在 COM 程序中使用 .NET 框架組件嗎?
  • 可以在 .NET 框架程序中使用 Win32 API 嗎?

安全性

  • 為使代碼適用于安全系統(tǒng),必須做哪些工作?
  • 共享驅(qū)動(dòng)器運(yùn)行代碼時(shí)收到安全性異常?網(wǎng)絡(luò)為什么在從
  • 如何使代碼在安全系統(tǒng)停止它時(shí)運(yùn)行?
  • 如何管理個(gè)人計(jì)算機(jī)的安全性?如何管理企業(yè)計(jì)算機(jī)的安全性?
  • 2000 安全性一起使用?Windows基于證據(jù)的安全性如何與

概念性問(wèn)題

什么是 .NET 框架?


Microsoft .NET 框架是生成、部署和運(yùn)行 Web 服務(wù)及應(yīng)用程序的平臺(tái)。它提供了一個(gè)生產(chǎn)率高且基于標(biāo)準(zhǔn)的多語(yǔ)言環(huán)境,用于將現(xiàn)有投資與下一代應(yīng)用程序和服務(wù)集成,同時(shí)提供了解決 Internet 規(guī)模應(yīng)用程序的部署和操作難題的靈活性。.NET 框架由三個(gè)主要部分組成:公共語(yǔ)言運(yùn)行庫(kù)、統(tǒng)一類(lèi)庫(kù)的分層集合和稱(chēng)為 ASP.NET 的 Active Server Pages 組件化版本。
返回到頂部

運(yùn)行庫(kù)技術(shù)問(wèn)題

術(shù)語(yǔ)

什么是公共語(yǔ)言運(yùn)行庫(kù) (CLR)?


公共語(yǔ)言運(yùn)行庫(kù)是用于 .NET 框架應(yīng)用程序的執(zhí)行引擎。
它提供若干服務(wù),包括:
  • 代碼管理(加載和執(zhí)行)
  • 應(yīng)用程序內(nèi)存隔離
  • 類(lèi)型安全驗(yàn)證
  • IL 到本機(jī)代碼的轉(zhuǎn)換
  • 對(duì)元數(shù)據(jù)(增強(qiáng)型類(lèi)型信息)的訪問(wèn)
  • 托管對(duì)象內(nèi)存的管理
  • 代碼訪問(wèn)安全性的強(qiáng)制
  • 異常處理,包括語(yǔ)言間異常
  • 托管代碼、COM 對(duì)象和預(yù)先存在的 DLL(非托管代碼和數(shù)據(jù))間的相互操作
  • 對(duì)象布局的自動(dòng)化
  • 對(duì)開(kāi)發(fā)人員服務(wù)的支持(分析、調(diào)試等等)

返回到頂部

什么是通用類(lèi)型系統(tǒng) (CTS)?


通用類(lèi)型系統(tǒng)是一個(gè)內(nèi)置在公共語(yǔ)言運(yùn)行庫(kù)中的豐富的類(lèi)型系統(tǒng),它支持大多數(shù)編程語(yǔ)言中存在的類(lèi)型和操作。通用類(lèi)型系統(tǒng)支持廣泛的編程語(yǔ)言的完整實(shí)現(xiàn)。
返回到頂部

什么是公共語(yǔ)言規(guī)范 (CLS)?


公共語(yǔ)言規(guī)范是一組構(gòu)造和約束,它充當(dāng)庫(kù)編寫(xiě)器和編譯器編寫(xiě)器的向?qū)АK箮?kù)完全可通過(guò)任何支持 CLS 的語(yǔ)言使用,并使那些語(yǔ)言可以相互集成。公共語(yǔ)言規(guī)范是通用類(lèi)型系統(tǒng)的一個(gè)子集。對(duì)于正在編寫(xiě)將由其他開(kāi)發(fā)人員使用的代碼的應(yīng)用程序開(kāi)發(fā)人員,公共語(yǔ)言規(guī)范也非常重要。當(dāng)開(kāi)發(fā)人員按照 CLS 規(guī)則設(shè)計(jì)可公開(kāi)訪問(wèn)的 API 時(shí),這些 API 很容易通過(guò)面向公共語(yǔ)言運(yùn)行庫(kù)的所有其他編程語(yǔ)言使用。
返回到頂部

什么是 Microsoft 中間語(yǔ)言 (MSIL)?


MSIL 是與 CPU 無(wú)關(guān)的指令集,其中編譯進(jìn)了 .NET 框架程序。它包含在對(duì)象上加載、存儲(chǔ)、初始化和調(diào)用方法的指令。
在與元數(shù)據(jù)及公共類(lèi)型系統(tǒng)組合后,MSIL 允許真正的語(yǔ)言間集成。
在執(zhí)行之前,MSIL 將轉(zhuǎn)換成機(jī)器碼,并且不被解釋。
返回到頂部

什么是托管代碼和托管數(shù)據(jù)?


托管代碼是為面向公共語(yǔ)言運(yùn)行庫(kù)的服務(wù)編寫(xiě)的代碼(請(qǐng)參閱“什么是公共語(yǔ)言運(yùn)行庫(kù)?”)。為了面向這些服務(wù),該代碼必須向運(yùn)行庫(kù)提供最低級(jí)別的信息(元數(shù)據(jù))。默認(rèn)情況下,所有 C#、Visual Basic .NET 和 JScript .NET 代碼都受托管。默認(rèn)情況下,Visual Studio .NET C++ 代碼不受托管,但編譯器可以通過(guò)指定命令行開(kāi)關(guān) (/CLR) 來(lái)產(chǎn)生托管代碼。
與托管代碼密切相關(guān)的是托管數(shù)據(jù)(由公共語(yǔ)言運(yùn)行庫(kù)的垃圾回收器分配和釋放的數(shù)據(jù))。默認(rèn)情況下,C#、Visual Basic 和 JScript .NET 數(shù)據(jù)受托管。然而,通過(guò)使用特殊的關(guān)鍵字可以將 C# 數(shù)據(jù)標(biāo)記為非托管。默認(rèn)情況下,Visual Studio .NET C++ 數(shù)據(jù)不受托管(即使在使用 /CLR 開(kāi)關(guān)時(shí)),但在使用 C++ 托管擴(kuò)展時(shí),可以通過(guò)使用 __gc 關(guān)鍵字將類(lèi)標(biāo)記為托管。正如名稱(chēng)所暗示的,這意味著用于類(lèi)實(shí)例的內(nèi)存受垃圾回收器的托管。另外,類(lèi)成為 .NET 框架社區(qū)的一名完全參與的成員,這既帶來(lái)了好處,也帶來(lái)了限制。其中一個(gè)好處是與用其他語(yǔ)言編寫(xiě)的類(lèi)的正確互操作性(例如,托管 C++ 類(lèi)可以從 Visual Basic 類(lèi)繼承)。其中一個(gè)限制是托管類(lèi)只能從基類(lèi)繼承。
返回到頂部

程序集

什么是程序集?


程序集是 .NET 框架應(yīng)用程序的主要構(gòu)造塊。它是一個(gè)功能集合,并以單個(gè)實(shí)現(xiàn)單元(一個(gè)或多個(gè)文件)的形式生成、版本化和部署。所有托管類(lèi)型和資源或者只在其實(shí)現(xiàn)單元中標(biāo)記為可訪問(wèn),或者在該單元外由代碼標(biāo)記為可訪問(wèn)。
程序集通過(guò)其清單(每個(gè)程序集不可缺少的部分)進(jìn)行自我描述。清單可以:
  • 建立程序集標(biāo)識(shí)(以文本名稱(chēng)的形式)、版本、區(qū)域性和數(shù)字簽名(如果程序集將在應(yīng)用程序間共享)。
  • 定義組成程序集實(shí)現(xiàn)的文件(按名稱(chēng)和文件散列)。
  • 指定組成程序集的類(lèi)型和資源,包括從程序集導(dǎo)出的類(lèi)型和資源。
  • 逐條列出其他程序集上的編譯時(shí)依賴(lài)項(xiàng)。
  • 指定程序集正確運(yùn)行所需的權(quán)限集。

該信息在運(yùn)行時(shí)用于解析引用、強(qiáng)制版本綁定策略和驗(yàn)證加載程序集的完整性。運(yùn)行庫(kù)可以確定和定位任何運(yùn)行對(duì)象的程序集,因?yàn)槊總(gè)類(lèi)型均加載在程序集的上下文中。程序集也是應(yīng)用代碼訪問(wèn)安全權(quán)限的單元。在確定給程序集包含的代碼授予什么權(quán)限時(shí),分別考慮每個(gè)程序集的標(biāo)識(shí)證據(jù)。
程序集自我描述的特性也有助于使無(wú)影響安裝和 XCOPY 部署可行。
返回到頂部

什么是專(zhuān)用程序集和共享程序集?


專(zhuān)用程序集僅由單個(gè)應(yīng)用程序使用,并存儲(chǔ)在該應(yīng)用程序的安裝目錄中(或其中的子目錄中)。共享程序集是一個(gè)可以由多個(gè)應(yīng)用程序引用的程序集。為了共享程序集,必須給予該程序集一個(gè)加密的強(qiáng)名稱(chēng)(有時(shí)又稱(chēng)強(qiáng)名稱(chēng)),為此目的顯式生成程序集。相比之下,專(zhuān)用程序集名稱(chēng)只需在使用它的應(yīng)用程序中是唯一的。
通過(guò)區(qū)分專(zhuān)用程序集和共享程序集,我們以顯式?jīng)Q策的形式引入共享概念。只需將專(zhuān)用程序集部署到應(yīng)用程序目錄,即可保證該應(yīng)用程序只與用來(lái)生成和部署它的位一起運(yùn)行。對(duì)專(zhuān)用程序集的引用只被本地解析到專(zhuān)用應(yīng)用程序目錄。
可以舉出多個(gè)生成和使用共享程序集的理由,如表示版本策略的能力。共享程序集有一個(gè)加密的強(qiáng)名稱(chēng),這意味著只有此程序集的作者具有產(chǎn)生程序集新版本的密鑰。因此,如果您生成一個(gè)策略語(yǔ)句,表明自己希望接受程序集的新版本,則應(yīng)確信版本更新將受作者的控制和驗(yàn)證。否則,您不必接受它們。
對(duì)于本地安裝的應(yīng)用程序,共享程序集通常被顯式安裝到全局程序集緩存中(由 .NET 框架維護(hù)的程序集的本地緩存)。.NET 框架版本管理功能的關(guān)鍵是:下載的代碼不影響本地安裝的應(yīng)用程序的執(zhí)行。下載的代碼放置在特殊的下載緩存中,并且在計(jì)算機(jī)上不是全局可用的,即使以共享程序集的形式生成了某些下載組件。
.NET 框架隨附的類(lèi)均以共享程序集的形式生成。
返回到頂部

如果要生成共享程序集,需要簽名和管理密鑰對(duì)的系統(tǒng)開(kāi)銷(xiāo)嗎?


生成共享程序集的確涉及使用加密密鑰。在生成程序集時(shí),只有公鑰是確實(shí)需要的。面向 .NET 框架的編譯器在生成程序集時(shí)提供命令行選項(xiàng)(或使用自定義屬性)來(lái)提供公鑰。常見(jiàn)的做法是在源數(shù)據(jù)庫(kù)中保留通用公鑰的一個(gè)副本,并將生成腳本指向該密鑰。在交付程序集前,必須用相應(yīng)的私鑰完全簽名程序集。用稱(chēng)為 SN.exe(強(qiáng)名稱(chēng))的 SDK 工具來(lái)完成此工作。
與 Authenticode 不同,強(qiáng)名稱(chēng)簽名不涉及證書(shū)。不涉及第三方單位,沒(méi)有要支付的費(fèi)用,也沒(méi)有證書(shū)鏈。另外,驗(yàn)證強(qiáng)名稱(chēng)比驗(yàn)證 Authenticode 的系統(tǒng)開(kāi)銷(xiāo)低得多。然而,強(qiáng)名稱(chēng)不就是否信任特定的發(fā)布者做出任何聲明。強(qiáng)名稱(chēng)使您可以確保給定程序集的內(nèi)容沒(méi)有被篡改,并且在運(yùn)行時(shí)以您的名義加載的程序集來(lái)自您開(kāi)發(fā)時(shí)所針對(duì)的同一發(fā)布者。但它不就是否可以信任此發(fā)布者的標(biāo)識(shí)做出任何聲明。
返回到頂部

命名空間名稱(chēng)和程序集名稱(chēng)之間的差異是什么?


命名空間是類(lèi)型的邏輯命名方案,此方案中簡(jiǎn)單的類(lèi)型名稱(chēng)(如 MyType)用以點(diǎn)分隔的分層名稱(chēng)開(kāi)頭。這樣的命名方案完全受開(kāi)發(fā)人員控制。例如,類(lèi)型 MyCompany.FileAccess.A 和 MyCompany.FileAccess.B 可能在邏輯上應(yīng)具有與文件訪問(wèn)相關(guān)的功能。.NET 框架使用分層命名方案將類(lèi)型分為相關(guān)功能(例如 ASP.NET 應(yīng)用程序框架)或遠(yuǎn)程處理功能的邏輯類(lèi)別。設(shè)計(jì)工具可以利用命名空間使開(kāi)發(fā)人員在代碼中瀏覽和引用類(lèi)型更容易。命名空間的概念與程序集的概念無(wú)關(guān)。單個(gè)程序集可以包含分層名稱(chēng)具有不同命名空間根的類(lèi)型,而邏輯命名空間根可以跨越多個(gè)程序集。在 .NET 框架中,命名空間是邏輯設(shè)計(jì)時(shí)命名便利,而程序集在運(yùn)行時(shí)建立類(lèi)型的名稱(chēng)范圍。
返回到頂部

應(yīng)用程序部署和隔離

哪些選項(xiàng)可用于部署 .NET 應(yīng)用程序?


.NET 框架通過(guò)使應(yīng)用程序的無(wú)影響安裝和 XCOPY 部署切實(shí)可行來(lái)簡(jiǎn)化部署。由于所有請(qǐng)求均首先解析到專(zhuān)用應(yīng)用程序目錄,只需將應(yīng)用程序的目錄文件復(fù)制到磁盤(pán)便可運(yùn)行該應(yīng)用程序。不需要任何注冊(cè)。
該方案對(duì) Web 應(yīng)用程序、Web 服務(wù)和獨(dú)立的桌面應(yīng)用程序尤為迫切。然而,在某些情況下,XCOPY 作為分發(fā)機(jī)制是不充分的。應(yīng)用程序只有很少的專(zhuān)用代碼并且依賴(lài)于共享程序集的可用性,或者應(yīng)用程序不是在本地安裝的(而是按需下載的)便屬于這種情況。在上述情況下,.NET 框架提供大量的代碼下載服務(wù)以及與 Windows 安裝程序的集成。相對(duì)于當(dāng)前平臺(tái),.NET 框架提供的代碼下載支持提供了一些優(yōu)點(diǎn),包括增量下載、代碼訪問(wèn)安全性(沒(méi)有其他 Authenticode 對(duì)話(huà)框)和應(yīng)用程序隔離(代表一個(gè)應(yīng)用程序下載的代碼不影響其他應(yīng)用程序)。Windows 安裝程序是另一個(gè)可用于 .NET 應(yīng)用程序的功能強(qiáng)大的部署機(jī)制。Windows 安裝程序的所有功能(包括發(fā)布、公布和應(yīng)用程序修復(fù))均適用于 Windows 安裝程序 2.0 中的 .NET 應(yīng)用程序。
返回到頂部

我已經(jīng)編寫(xiě)了要在多個(gè)應(yīng)用程序中使用的程序集。在哪里部署它?


將要由多個(gè)應(yīng)用程序使用的程序集(如共享程序集)被部署到全局程序集緩存中。在預(yù)發(fā)布版和 Beta 版中,使用 GACUtil SDK 工具的 /i 選項(xiàng)將程序集安裝到緩存中:
gacutil /i myDll.dll

Windows Installer 2.0(隨附在 Windows XP 和 Visual Studio .NET 中)能夠?qū)⒊绦蚣惭b到全局程序集緩存。
返回到頂部

如何查看全局程序集緩存中安裝的程序集?


.NET 框架提供了一個(gè)用于查看程序集緩存的 Windows 外殼程序擴(kuò)展。通過(guò) Windows 資源管理器導(dǎo)航至 % windir%\assembly 將激活查看器。
返回到頂部

什么是應(yīng)用程序域?


應(yīng)用程序域(通常為 AppDomain)是一個(gè)用于隔離應(yīng)用程序的虛擬進(jìn)程。在同一應(yīng)用程序范圍內(nèi)(換句話(huà)說(shuō),以應(yīng)用程序入口點(diǎn)開(kāi)頭的對(duì)象激活序列中的任何位置)創(chuàng)建的所有對(duì)象都創(chuàng)建在同一應(yīng)用程序域中。多個(gè)應(yīng)用程序域可以存在于單個(gè)操作系統(tǒng)進(jìn)程中,這使它們成為應(yīng)用程序隔離的輕量方法。
操作系統(tǒng)進(jìn)程通過(guò)提供一個(gè)獨(dú)特的內(nèi)存地址空間來(lái)提供隔離。雖然這很有效,但成本很高,而且不能擴(kuò)展到大型 Web 服務(wù)器所需的數(shù)目。另一方面,公共語(yǔ)言運(yùn)行庫(kù)通過(guò)管理運(yùn)行在應(yīng)用程序域中的代碼的內(nèi)存使用來(lái)強(qiáng)制應(yīng)用程序隔離。這可確保它不會(huì)訪問(wèn)域邊界以外的內(nèi)存。注意只有類(lèi)型安全代碼才能以這種方式進(jìn)行管理(運(yùn)行庫(kù)在不安全代碼加載到應(yīng)用程序域中時(shí)無(wú)法保證隔離)很重要。

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 金坛市| 南丰县| 承德市| 安阳县| 交口县| 奇台县| 恭城| 桐乡市| 老河口市| 宁陵县| 依兰县| 怀仁县| 金乡县| 远安县| 石景山区| 文山县| 连云港市| 滨州市| 安平县| 芦溪县| 阿克陶县| 淳安县| 壤塘县| 南汇区| 扎赉特旗| 沐川县| 四子王旗| 博兴县| 论坛| 循化| 樟树市| 镇平县| 北碚区| 马关县| 呼图壁县| 镇康县| 民乐县| 四川省| 江山市| 通榆县| 宝应县|