本文提出一些部署ASP.NET程序的最佳實踐,你可以跟着部署你的應用程序。這些實踐可以幫助你避免部署期間和部署之後的一些問題。
1. 您程序集的版本
確保制定一個版本控制策略。你可以在編譯時使用版本戳AssemblyVersion屬性,例如:
[assembly: AssemblyVersion("1.0.12.34")]
通常,最好在生成期間,對所有程序集應用相同的版本號。
2. 給程序集強命名
程序集是.NET中安全、部署、版本控制和代碼重用的最小單元。每個程序集包含:
1) AssemblyIdentity information (name, version, etc.)
2) Manifestand metadata information
3) MSILcode
4) Typeand security information
5) Resources
一個具有強名稱的程序集可以被其程序集的版本、文化信息和數字簽名的結合來唯一標識。確定其集版本,文化信息(culture information)和數字簽名結合(digital signature)。
您可以通過.NET框架提供的強命名實用工具(Sn.exe)爲您的程序集創建一個強命名。該實用工具要求您提供一個強命名密鑰文件作爲參數。生成的文件稱爲“強名稱”文件。您可以使用命令行Sn.exe工具來創建一個強命名密鑰文件,如下:
sn--k MyCompany.snk
當您在 VS 中創建一個項目時,您會看到一個名爲AssemblyInfo.cs默認文件,用它來指定相關屬性。下面是你在AssemblyInfo.cs文件指定的強命名信息。
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyKeyFile("MyCompany.snk")]
3. 混亂您的程序集(Obfuscate)
在發佈前,混亂您的程序集是一個很好的實踐。混亂使程序集更難反編譯,並阻止了方向工程的嘗試,這樣,保護您的源代碼。另外,混亂減少了你的程序集的大小,從而提高了應用程序的性能。
4. 部署共享程序集到 GAC
你應該把多個應用程序都使用的程序集部署到全局程序集緩存區(Global Assembly Cache,GAC)中,這使得程序集被所有使用該程序集的應用程序共享。與不在GAC中的程序集相比,把程序集部署到GAC中,可以改善程序集的裝載性能。強命名的程序集從GAC裝載得更快,因爲他們在安裝時驗證,而不是在運行時——.NET框架對於GAC裝載的程序集在運行時跳過驗證。運行時總是檢查強命名程序集,以驗證其完整性。.NET的拒絕加載不受信任的或可能已被篡改的程序集。請注意,您必須要爲安裝到GAC的程序集提供一個強命名。
可以使用 Gacutil 工具將一個程序集放入GAC中。下面的命令把 MyProject.dll 放入GAC,這樣,使該程序集全局可訪問。
GacUtil /i MyProject.dll
從GAC卸載程序集,可以使用:
GacUtil /u MyProject.dll
請注意,你甚至可以使強命名程序集全局可訪問,即便它不在GAC中。對於這一點,您需要使用XCOPY命令來部署程序集。
5、6和8. 用適當的部署策略部署、預編譯您的站點和Click Once
作者在5、6和8分別介紹 了Copy Web Site Tool、XCopy和Click-Once Deployment,以及預編譯站點。本文寫於2008年,部署站點時,我更喜歡用Web Deployment 工具,因此,此處內容略過。
參考:http://blog.csdn.net/liuning800203/category/737128.aspx
7. 減小文件大小
通常,從網頁、腳本和CSS中清除額外的空格和其他不必要的字符,減少響應文件的大小是一個很好的做法。您還使用 IIS compression來壓縮響應以便降低網絡帶寬,改進性能。雖然使用IIS compression(壓縮需要額外的處理)存在很小的性能損失,但它仍然是一個很好的做法,因爲,性能損失與你從中得到的巨大利益相比可以忽略不計。壓縮可以減少近一半的網絡帶寬!這篇文章提供了有關文件大小減少和IISHTTP壓縮的更多信息。
最後要點
在你部署應用程序之前,確保web.config 文件的編譯屬性設置爲false。當設置爲true 時,您的應用程序會消耗更多的內存和處理時間,並且,從Web 服務器下載的腳本和圖片不會放在本地緩存。
在把應用程序部署到產品服務器之前,以Release模式構建您的程序集。
通過設置Web 服務擴展爲“enabled”,確保IIS 能夠處理動態內容。
確保加密您應用程序使用的所有配置數據,例如數據庫鏈接等等。
請記住,使用IIShttp compression 來壓縮響應文件大小,來提高整個應用程序的性能。
最後,準備一份清單,列出您所選擇的部署步驟。你就可以交叉檢查,以確保沒有跳過任何步驟。
將ASP.NET應用程序部署到產品服務器有很多策略。通過體會這些選擇,選擇最好的部署方式,準備檢查列表,並用它來驗證是否是最好的實踐,你會發現產品部署可以很順利地進行。