應用程序的執行歷史演變:
通過編譯、鏈接生成單一的本地的可執行文件.exe
基於動態鏈接庫DLL的形式
基於虛擬機的程序執行模式(如JVM或.Net Framework)
托管(受控的)執行
硬件->操作系統->運行時環境->應用程序
運行時環境
Java: jvm jcl
.Net: clr fxcl
設計上的權衡:
可移植性
安全性(內存管理)
速度
受控代碼:受.Net framework運行和管理的代碼
cil中間語言 ildasm app.exe 反匯編
受控代碼也就是中間語言的代碼
基於組件的設計
front-end ->object(業務邏輯)->object(數據邏輯)->db
assembly分析
assembly是對.Net組件的稱呼
一個或多個源文件的編譯結果 assembly
fxcl assembly存儲於GAC中
應用程序搜索assembly的算法:
GAC->.config配置文件制定的位置->可執行文件所在的路徑
manifest存儲了版本,相關信息(應用程序引用的assembly及其版本信息都放在manifest文件中)
總之,應用程序在以上所述三個位置裡按照manifest記錄的引用的assembly信息來找到該assembly
部署
可以將exe文件和相應的dll等文件直接拷貝到客戶機上
通過自定義配置文件部署
通過url安裝部署
clickonce部署