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

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

Microsoft .NET框架FAQ續

Microsoft .NET框架FAQ續

更新時間:2022-06-26 文章作者:未知 信息來源:網絡 閱讀次數:

垃圾回收

什么是垃圾回收?


垃圾回收是一種機制,它使計算機能夠檢測到對象何時不能再被訪問。然后它自動釋放該對象所使用的內存(同時調用由用戶編寫的稱為“終結程序”的清理例程)。有些垃圾回收器(如 .NET 使用的垃圾回收器)壓縮內存,從而減小程序的工作集。
返回到頂部

非確定性的垃圾回收如何影響代碼?


對于大多數程序員而言,擁有垃圾回收器(并使用垃圾回收對象)意味著即使使用復雜的數據結構,也不必擔心釋放內存或引用計數對象。但是,如果您通常在釋放對象內存的同一代碼塊中釋放系統資源(文件句柄、鎖等等),則確實需要在編碼樣式方面進行某些更改。對于垃圾回收對象,應提供一種以確定方式(即受程序的控制)釋放系統資源的方法,并使垃圾回收器可以在壓縮工作集時釋放內存。
返回到頂部

可以避免使用垃圾回收堆嗎?


所有面向運行庫的語言都允許從垃圾回收堆分配類對象。這帶來了快速分配方面的好處,并且使程序員不必計算出何時應顯式“釋放”每個對象。
CLR 還提供所謂的 ValueType。ValueType 與類相似,不同的是 ValueType 對象在運行時堆棧(而不是堆)上分配,因此當代碼退出定義了這些對象的過程時它們將被自動回收。這便是 C# 中“結構”的操作方式。
C++ 托管擴展使您可以選擇分配類對象的位置。如果由 __gc 關鍵字聲明為托管類,則它們從垃圾回收堆中分配。如果它們不包括 __gc 關鍵字,則它們的行為和常規 C++ 對象類似,都是從 C++ 堆分配,并且由“free”方法顯式釋放。
有關垃圾回收的附加信息,請參閱:
  • 垃圾回收:Microsoft .NET 框架中的自動內存管理
  • 垃圾回收(第 2 部分):Microsoft .NET 框架中的自動內存管理

返回到頂部

遠程處理

進程內和進程間通訊在公共語言運行庫中的工作機制是什么?


進程內通訊有兩個方面:單個應用程序域中的上下文之間的通訊或應用程序域之間的通訊。在同一應用程序域的上下文之間,代理用作偵聽機制。不涉及任何封送處理或序列化操作。在跨越多個應用程序域時,我們使用運行時二進制協議進行封送處理/序列化。
進程間通訊使用可插接式信道和格式化程序協議,其中每個協議適用于特定的目的。
  • 如果開發人員使用工具 soapsuds.exe 指定端點以生成元數據代理,則默認設置為具有 SOAP 格式化程序的 HTTP 信道。
  • 如果開發人員在托管環境中進行顯式的遠程處理,則必須明確要使用的信道和格式化程序。這可以表示為管理形式,通過配置文件,或通過 API 調用加載特定的信道。選項為:
    具有 SOAP 格式化程序的 HTTP 信道(HTTP 非常適合在 Internet 上使用或者通訊必須經過防火墻的情況)
    具有二進制格式化程序的 TCP 信道(TCP 是用于局域網 (LAN) 的性能更高的選項)

當在托管代碼和非托管代碼間進行轉換時,COM 結構(確切地說是 DCOM)用于遠程處理。在 CLR 的中間版本中,這通過適用于被服務的組件(使用 COM+ 服務的組件)。在最終發布時,應該可以配置任何可遠程處理的組件。
對象的分布式垃圾回收由稱為“基于租約的生存期”的系統托管。每個對象均有一個租用時間,當時間過期時,對象會與 CLR 的遠程處理結構斷開連接。對象都有默認的續訂時間,當從客戶端成功地調用了對象時續訂該租約。客戶端也可以顯式續訂租約。
返回到頂部

互操作性

可以在 .NET 框架程序中使用 COM 對象嗎?


可以。現已部署的任何 COM 組件均可通過托管代碼中使用,通常情況下,改編是完全自動的。
具體說來,自動行為是使用運行庫可調用的包裝 (RCW) 從 .NET 框架訪問 COM 組件。該包裝將 COM 組件公開的 COM 接口轉換成與 .NET 框架兼容的接口。對于 OLE 自動化接口,RCW 可以從類型庫中自動生成。而對于非 OLE 自動化接口,開發人員可以編寫自定義 RCW,并將 COM 接口公開的類型手動映射至與 .NET 框架兼容的類型。
返回到頂部

可以在 COM 程序中使用 .NET 框架組件嗎?


可以。現已生成的托管類型可通過 COM 訪問,通常情況下,配置是完全自動的。托管開發環境的某些新功能無法通過 COM 訪問。例如,靜態方法和參數化構造函數無法通過 COM 使用。通常情況下,最好提前確定給定類型的預期用戶。如果要通過 COM 使用類型,則可能只限于使用 COM 可訪問的功能。
根據用于編寫托管類型的語言,默認情況下,該類型可能是可見的,也可能是不可見的。
具體說來,自動行為是使用 COM 可調用的包裝 (CCW) 從 COM 訪問 .NET 框架組件。這與 RCW 類似(請參閱前一個問題),但工作方向相反。此外,如果 .NET 框架開發工具無法自動生成包裝,或者如果自動行為不是您所要的,則可以開發自定義 CCW。
返回到頂部

可以在 .NET 框架程序中使用 Win32 API 嗎?


可以。使用平臺調用,.NET 框架程序可以通過靜態 DLL 入口點訪問本機代碼庫。
下面是一個調用 Win32 MessageBox 函數的 C# 示例:
using System; using System.Runtime.InteropServices;class MainApp { [DllImport("user32.dll", EntryPoint="MessageBox")] public static extern int MessageBox(int hWnd, String strMessage, String strCaption, uint uiType);public static void Main() { MessageBox( 0, "Hello, this is PInvoke in operation!", ".NET", 0 ); } }

返回到頂部

安全性

為使代碼適用于安全系統,必須做哪些工作?


這通常不是問題,大多數應用程序將安全運行,并且不會被惡意攻擊所利用。只需使用標準的類庫訪問資源(如文件)或執行受保護的操作(如類型的私有成員反射),安全性便由這些庫得到加強。開發人員可能需要做的一件簡單的事是包括權限請求(聲明安全性的形式),以限制代碼可以接收的權限(限制為它需要的權限)。這還可確保在允許代碼運行的情況下,只有具備了所需的所有權限才能這樣做。
只有編寫新基類庫公開新的資源類型的開發人員才需要直接使用安全系統。不是使所有的代碼都有潛在的安全危險,代碼訪問安全性將危險限制在顯式重寫安全系統的極少量代碼上。
返回到頂部

為什么在從網絡共享驅動器運行代碼時收到安全性異常?


默認的安全策略只向來自本地 Intranet 區域的代碼授予一組有限的權限。該區域由 Internet Explorer 安全設置定義,并且應配置為與企業中的本地網絡匹配。由于由 UNC 或映射驅動器命名(如用 NET USE 命令)的文件通過該本地網絡發送,這些文件也在本地 Intranet 區域中。
默認值是針對不安全 Intranet 的最壞情況設置的。如果您的 Intranet 比較安全,則可以修改安全策略(用 .NET 框架配置工具或 CASPol 工具),向本地 Intranet 或它的各部分(例如特定的計算機共享名稱)授予更多權限。
返回到頂部

如何使代碼在安全系統停止它時運行?


當代碼試圖執行無權執行的操作時會發生安全性異常。權限的授予基于已知的代碼情況,尤其是它的位置。例如,從 Internet 運行的代碼比從本地計算機運行的代碼獲得的權限少,因為經驗證明前者通常不如后者可靠。因此,為了使因安全性異常而失敗的代碼運行,必須增加授予它的權限。這樣做的一個簡單方法是將代碼移至更受信任的位置(如本地文件系統)。但這并不適用于所有情況(Web 應用程序便是一個很好的例子,公司網絡上的 Intranet 應用程序是另一個例子)。因此,如果不改變代碼的位置,還可以更改安全策略,向該位置授予更多權限。使用 .NET 框架配置工具或代碼訪問安全策略實用工具(caspol.exe)都可以做到這一點。如果您是代碼開發人員或發布者,則還可以為代碼加上數字簽名,然后修改安全策略,向帶該簽名的代碼授予更多權限。但是,在采用上述任何操作時,請記住給代碼授予的權限要少些,這是因為它不是來自可識別的可靠源。在將代碼移至本地計算機或更改安全策略前,應確保信任代碼不會執行惡意的或損害性操作。
返回到頂部

如何管理個人計算機的安全性?如何管理企業計算機的安全性?


.NET 框架包括 .NET 框架配置工具——MMC 管理單元(mscorcfg.msc)以配置包括安全策略在內的 CLR 的若干方面。該管理單元不僅支持在本地計算機上管理安全策略,而且還創建與系統管理服務器和組策略兼容的企業策略部署包。命令行實用工具 CASPol.exe 也可用于計算機上的腳本策略更改。為了在命令提示中運行任一種工具,請將當前目錄更改為 .NET 框架的安裝目錄(位于 %windir%\Microsoft.Net\Framework\v1.0.2914.16\)并鍵入 mscorcfg.msc 或 caspol.exe。
返回到頂部

基于證據的安全性如何與 Windows 2000 安全性一起使用?


基于證據的安全性(它授權代碼)與 Windows 2000 安全性(它基于登錄標識)一起使用。例如,為訪問文件,托管代碼必須既有代碼訪問安全性文件權限,還必須在具有 NTFS 文件訪問權的登錄標識下運行。.NET 框架中包含的托管庫還為基于角色的安全性提供了類。這些類使應用程序可以使用 Windows 登錄標識和用戶組。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 新泰市| 积石山| 图片| 琼结县| 新干县| 专栏| 赤城县| 甘孜县| 固始县| 临城县| 昭觉县| 灌云县| 江孜县| 额尔古纳市| 内乡县| 文登市| 大关县| 洞头县| 林芝县| 宁强县| 喀喇沁旗| 思茅市| 铜梁县| 介休市| 乌拉特后旗| 西平县| 宣恩县| 印江| 镇宁| 南郑县| 平武县| 永泰县| 嘉鱼县| 临汾市| 山东省| 延边| 梁平县| 长乐市| 眉山市| 湟源县| 凤城市|