部署ASP.NET的三大技術(上) (1)

來源:互聯網
上載者:User
提綱:

一、概述

二、ASP.NET Web應用的結構

三、ASP.NET支援的部署機制

四、用XCOPY命令部署

五、用VS.NET的“複製項目”功能部署

六、用Web安裝項目部署

  6.1 Windows安裝程式

  6.2 VS.NET Web安裝項目的特點

七、建立Web安裝項目

八、安裝ASP.NET Web應用程式

九、結束語

本文:

一、概述

在深入到配置和部署ASP.NET Web應用程式的具體步驟之前,理解配置(Setup)和部署(Deployment)之間的區別是十分必要的。配置是指將應用程式套件裝成易於部署的形式,封裝好之後的應用程式可以方便地安裝到目標伺服器上。部署是一個獲得應用程式並將它安裝到另一台機器上過程,一般通過安裝程式完成。

許多使用者都曾經遇到過Windows軟體安裝技術的脆弱點——當我們安裝某個軟體的新版本時,安裝程式將新版的dll檔案複製到系統目錄,同時執行所有必要的註冊表修改操作,但是,安裝操作可能影響其他運行在同一機器上的軟體,尤其是原有的軟體和新安裝的軟體共用某一組件時,出現問題的可能性更大。如果新安裝的組件與它的早期版本向後相容,當然沒有問題,但許多情況下,完全保持向後相容難以做到,所以經常會遇到安裝了一個新軟體之後損壞原有軟體的情形,這就是臭名昭著的DLL Hell問題。

Visual Studio.NET(VS.NET)的設計目標之一就是解決安裝Windows軟體時經常遇到的問題。VS.NET應用的許多功能都依賴.NET架構類庫實現,.NET架構類庫建立了一個全新的編程模型,從而為極大地簡化安裝過程創造了條件。另外,VS.NET應用程式編譯成程式集(Assembly),程式集是由一個或多個支援程式集啟動並執行檔案構成的部署單元。微軟.NET架構引入了許多簡化應用程式部署、解決DLL Hell問題的新特性,例如,配置資訊可以儲存在web.config設定檔,web.config設定檔是一個XML格式的文字檔,可以利用XCOPY之類的命令直接複製和部署到目標伺服器。

在探討各種部署機制之前,我們首先來瞭解一下ASP.NET應用的結構,因為正是這個結構才使得應用能夠方便地部署到目標伺服器上。

二、ASP.NET Web應用的結構

ASP.NET應用程式由各種Web頁面(.aspx和HTML檔案)、處理常式、模組、執行代碼和其他檔案(例形檔案,設定檔等)構成,這些檔案都可以從Web伺服器的虛擬目錄引用。如果使用了.aspx檔案的CodeBehind機制,ASP.NET應用程式還包含編譯好的程式集,另外還有其他支援應用程式的程式集,例如,可以把應用的商務邏輯封裝成一個單獨的程式集。程式集一般位於應用程式虛擬目錄的bin子目錄下。要理解VS.NET如何簡化部署過程,必須理解程式集的結構,因為正是程式集的結構特點才使得簡化部署成為可能。程式集包含四種元素:

⑴ MSIL代碼,即微軟中繼語言代碼:編譯應用程式代碼時,原始碼被編譯成所謂的MSIL代碼。MSIL代碼是.NET通用語言執行平台環境(CLR)所理解的代碼。

⑵ 中繼資料:描述代碼中定義的類型、方法和其他元素。

⑶ Manifest:包含名稱和版本資訊,程式集中包含檔案的清單,安全資訊,等等。

⑷ 支援檔案和資源。

從這個結構可以看出,程式集包含了完整的自我描述資訊,所以VS.NET應用程式根本不必象COM組件那樣在註冊表中註冊。這就是說,只要目標機器上也安裝了.NET架構,安裝VS.NET應用程式時只要簡單地將必需的檔案複製到目標機器就可以了,這就是所謂的XCOPY部署。不過,除了XCOPY之外,還可以使用VS.NET提供的“Web安裝項目”實現自動部署。在接下來的內容中,我們將看到如何利用各種不同的部署機制部署一個Web應用。

三、ASP.NET支援的部署機制

ASP.NET Web應用程式支援下列三種部署方案:

⑴ XCOPY部署

⑵ 利用VS.NET的“複製項目”功能部署

⑶ 使用VS.NET的“Web安裝項目”部署

在接下來的內容中,我們將深入瞭解所有這三種部署機制。為便於說明,我們先要建立一個Visual C# ASP.NET Web應用程式,應用的名稱為DeploymentExampleWebApp,一所示。

圖一

我們將以這個項目為例,闡述部署Web應用的各種方法。

四、用XCOPY命令部署

.NET架構的主要目標之一就是簡化部署,例如支援XCOPY部署。在瞭解.NET如何支援XCOPY部署之前,我們先來看看XCOPY部署到底是怎麼回事。在.NET之前,安裝一個組件(例如一個COM組件)意味著不僅要把組件複製到適當的目錄,而且還要執行註冊表修改之類的操作。但現在有了.NET,安裝一個組件的全部操作就是將程式集複製到客戶應用程式的bin目錄,由於程式集包含完整的自我描述資訊,應用程式可以立即開始使用程式集。這一切之所以成為可能,是因為編譯器將標識符和中繼資料資訊嵌入到了編譯好的模組之中,而CLR利用這些資訊來裝入程式集的適當版本。標識符包含了裝入和運行模組、尋找程式集引用的其他模組所需的所有資訊。這種安裝也稱為無幹擾(Zero-Impact)安裝,因為系統不會因為修改註冊表、配置組件而受到影響;另外,無幹擾安裝也使得組件卸載操作不會對系統產生任何意外的影響,卸載組件時只要從特定的目錄刪除某些檔案就可以了。

執行XCOPY部署時,唯一要做的就是開啟一個命令視窗,用XCOPY命令將必要的檔案複製到伺服器的特定目錄。圖二顯示了如何用XCOPY部署將名為DeploymentExampleWebApp的Web應用部署到目標伺服器RemoteServer。

圖二

可以看到,XCOPY命令有許多選項:

⑴ /E:表示將源位置的目錄、子目錄和檔案都複製到目標位置,包括空目錄。

⑵ /K:保留所有現有的檔案和檔案夾的屬性。預設情況下,XCOPY命令複製檔案或目錄結構時會忽略檔案的屬性,例如,如果檔案原來有唯讀屬性,複製到目標位置後唯讀屬性丟失。要保留原來的檔案屬性,必須加上/K選項。

⑶ /R:覆蓋帶有唯讀屬性的檔案。

⑷ /O:保留檔案或檔案夾的所有與安全有關的ACL使用權限設定。

⑸ /H:隱藏檔案和系統檔案也要複製。

⑹ /I:要求XCOPY將目標位置視為一個目錄,如指定的目錄不存在,則建立它。

把檔案夾複製到目標伺服器之後,接下來在目標伺服器上用IIS管理器建立一個虛擬目錄,把虛擬目錄映射到XCOPY建立的物理目錄——這就是用XCOPY將一個ASP.NET Web應用部署到遠程伺服器所要做的全部操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.