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

來源:互聯網
上載者:User
五、用VS.NET的“複製項目”功能部署

VS.NET的“複製項目”功能使我們能夠非常輕鬆地把ASP.NET Web應用部署到目標伺服器。這個功能既可以把Web項目複製到同一伺服器,也可以複製到不同的伺服器。

如果你用VS.NET開發Web應用程式,發布Web應用之前要做的第一件事情是把“活動的解決方案配置”從Debug改成Release,三所示,這個選項不僅使編譯器最佳化代碼,而且刪除所有與調試有關的符號資訊,使代碼運行速度更快。開啟組態管理員的步驟是:在“方案總管”中選擇Web應用項目,選擇菜單“項目”→“XXXX項目屬性”,其中XXXX是項目名稱,再點擊“組態管理員”。在“活動的解決方案配置”中選擇“Release”。

圖三

要把Web項目複製到目標伺服器,在VS.NET中選擇菜單“項目”→“複製項目...”,VS.NET顯示出圖四的對話方塊。

圖四

“複製項目”對話方塊提供了下列選項:

㈠ 目標專案檔夾:用來指定複製項目的目標位置。目標位置可以在同一個伺服器上,也可以在一個遠程伺服器上。

㈡ Web存取方法:將Web項目複製到目標檔案夾時所用的方法,可供選擇的Web存取方法有兩種。首先是“檔案分享權限設定”,即通過檔案分享權限設定機制直接存取Web伺服器上的檔案系統,不要求Web伺服器上安裝有FrontPage伺服器擴充;其次是“FrontPage”,即通過基於HTTP協議的FrontPage伺服器擴充把Web項目的檔案傳輸到伺服器,使用該選項要求Web伺服器上必須安裝了FrontPage伺服器擴充,這種Web存取方法能夠在目標伺服器上自動建立必要的虛擬目錄。

㈢ 複製:包含三個選項,分別是:① 僅限於運行該應用程式所需的檔案,即只複製“產生”功能輸出的檔案(bin檔案夾中的 DLL 和引用)以及內容檔案(例如.aspx和.asmx檔案),大多數情況下,我們可以用該預設選項部署應用程式;② 所有專案檔,即複製“產生”功能輸出的檔案(bin檔案夾中的DLL和引用)和項目中的所有檔案,包括專案檔和來源程式檔案,③ 源專案檔夾中的所有檔案,即專案檔夾(或子檔案夾)中的所有專案檔和任何其他檔案。

根據實際情況選擇圖四對話方塊的選項,點擊“確定”,即可把Web項目部署到伺服器。

六、用Web安裝項目部署

XCOPY部署和VS.NET的“複製功能”簡單易用,但不能夠滿足所有的部署需要。例如,如果應用程式有更加複雜的配置和部署要求,VS.NET的“Web安裝項目”才是最佳的選擇。

雖然我們可以用一大堆的產生輸出、安裝類、資料庫建立指令碼來發布Web應用,但對於複雜的Web應用項目,通常不如使用Windows安裝程式來得方便。為支援Web應用部署,VS.NET專門提供了一種“Web安裝項目”。Web安裝項目與普通的安裝項目不同,Web安裝項目把Web應用安裝到Web伺服器的虛擬根資料夾上,而普通安裝項目一般把應用程式安裝到Program Files目錄。

由於VS.NET安裝程式建立在Windows安裝程式的基礎上,所以能夠利用Windows安裝程式的優勢。在開始探討VS.NET Web安裝項目之前,我們先來瞭解一下Windows安裝程式的主要特點,因為它是VS.NET Web安裝項目的核心基礎。

6.1 Windows安裝程式

Windows安裝程式是一個軟體安裝和佈建服務,Windows 2000和Windows XP作業系統都帶有Windows安裝程式,而且微軟為所有Win 9x和NT 4平台也提供了功能相似的免費版本。在Win2K/XP中,Windows安裝程式的核心是一個Windows Installer服務,Windows Installer服務記錄了它安裝的每一個應用程式,當我們刪除一個應用軟體時,Windows Installer檢查安裝記錄,在刪除應用的組件之前確保其他應用不依賴於這些組件。

Windows Installer將應用劃分成以下三個等級:

⑴ 產品:使用者可以安裝的一個單元。例如,MS Word就是一個使用者可以安裝的產品。

⑵ 功能:產品由多種功能組成,功能是產品用途的最小單位。例如,自動校正就是Word的一項功能。

⑶ 組件:組件可以看作能夠在多個功能和組件之間共用的最小單元。必須注意的是,Windows Installer術語中的組件不同於.NET架構中組件的概念。一個Windows Installer的組件是一個或者多個邏輯上密切相關的檔案,它可以是一個執行檔案,一個DLL檔案,也可以是一個簡單的文字檔。一項功能可以由多個組件結合在一起提供,同時,一個組件也可以由多項功能共用。功能總是針對特定的產品而言,且功能的名稱只在特定的產品範圍內唯一;相比之下,組件是全域性的,其作用範圍是一台機器上安裝的所有產品。例如,Word的拼字檢查組件可以在所有想要實現拼字檢查功能的組件之間共用。

與產品有關的資訊,包括功能、組件的描述等,都在一個安裝資料庫中集中儲存。安裝資料庫其實只是一個帶.msi副檔名的檔案,它不僅包含了產品的功能、組件的資訊,而且還定義了安裝產品期間各個使用者介面的顯示次序。由於Windows Installer註冊成了.msi檔案的服務程式,當使用者開啟.msi檔案時,作業系統會自動調用Windows Installer。按照這種方式啟動Windows Installer時,Installer從安裝資料庫讀取產品資訊,判斷該產品是否已經安裝。如果尚未安裝,Installer按照安裝資料庫的描述開始安裝操作;如果產品已經安裝,可能執行其他處理,例如添加/刪除某項功能,或者卸載整個產品。

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

VS.NET中的部署項目以Windows Installer的功能為基礎,允許我們執行如下操作:

⑴ 讀取、寫入註冊鍵。

⑵ 在目標伺服器的Windows檔案系統中建立目錄。

⑶ 提供註冊組件的機制。

⑷ 提供安裝期間從使用者收集資訊的機制。

⑸ 允許設定啟動條件,例如檢查使用者名稱字、電腦名稱字、當前的作業系統、已經安裝的軟體、是否已經安裝了.NET CLR,等等。

⑹ 允許在安裝結束後運行自訂的配置程式或指令碼。

在下面一節中,我們將瞭解如何用VS.NET Web安裝項目來部署DeploymentExampleWebApp。

七、建立Web安裝項目

首先我們在DeploymentExampleApp ASP.NET Web應用程式解決方案中建立一個Web安裝程式項目:選擇菜單“檔案”→“建立”→“項目”,在“建立項目”對話方塊中,指定項目類型“安裝和部署項目”,指定模板“Web安裝項目”,五所示。

圖五

建立項目之後,接下來要把ASP.NET Web應用程式的程式集和內容檔案加入到安裝項目。在方案總管中右擊DeploymentExampleWebAppSetup項目,選擇菜單“添加”→“項目輸出”,在“添加項目輸出組”對話方塊中,“項目”一欄選擇DeploymentExampleWebApp,再從列表選擇“主輸出”,六。

圖六

加入了項目輸出之後,接下來要把相關的內容檔案(包括.aspx檔案、圖形檔案等)加入到項目。再次開啟“添加項目輸出組”對話方塊,這一次從列表選擇“內容檔案”,七。

圖七

在Web安裝項目中加入了“主輸出”和“內容檔案”之後,方案總管應該類八所示。

圖八

通過Web安裝項目的屬性視窗可以設定許多屬性,這些屬性決定了Windows安裝檔案運行時顯示的內容和行為方式。在解決方案管理器中右擊DeploymentExampleWebAppSetup,選擇菜單“屬性”,就可以開啟圖九的屬性設定視窗。

圖九

從圖九可以看出,屬性視窗允許設定作者、產品描述、廠商、支援電話等資訊,這些資訊對於應用的終端使用者來說可能非常有用。

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

建立好Windows安裝檔案(.msi檔案)之後,再到目標伺服器上安裝ASP.NET應用就很方便了,只要在Windows資源管理員中雙擊.msi檔案即可,這時安裝嚮導啟動,引導使用者完成安裝過程。圖十顯示了安裝期間顯示的第一個對話方塊。

圖十

點擊圖十對話方塊的“下一步”按鈕,出現圖十一的對話方塊,在這裡可以指定Web應用要安裝到哪一個虛擬目錄。這是VS.NET的Web安裝項目最方便的特性之一,虛擬目錄建立已完全自動化,根本不需要使用者手工操作。在本文的第二部分中,我們將看到如何在安裝過程中設定虛擬目錄的特殊屬性,例如目錄安全性等。

圖十一

在圖十一的對話方塊中,我們可以點擊“磁碟開銷”按鈕瞭解安裝該Web應用程式所需的磁碟空間。點擊“下一步”,出現圖十二的對話方塊,嚮導要求我們確認安裝。

圖十二

如果在圖十二的對話方塊中點擊“下一步”,安裝操作正式開始,應用程式被安裝到Web伺服器上。如果應用程式安裝成功,出現圖十三的對話方塊。

圖十三

安裝好應用程式後,從控制台的“添加或刪除程式”視窗可以看到剛才安裝的ASP.NET應用程式,以後,我們可以隨時從這裡卸載剛才安裝的ASP.NET Web應用。

九、結束語

XCOPY和“複製項目”都是不錯的部署技術,主要的特點是簡單,但需要一些手工操作。它們非常適合安裝過程比較簡單的應用,但在有些情況下,我們需要在安裝過程中執行更加複雜的操作,這時最好利用Windows Installer技術來部署應用。用Windows Installer來部署ASP.NET Web應用具有下列優點:

⑴ 如果用Windows Installer安裝的應用被損壞,可以通過Windows安裝包的修複功能自我修複。如果採用其他部署方式,損壞的組件必須手工替換。

⑵ 使用Windows Installer技術時,我們還可以利用自動回退功能的優勢。當安裝過程失敗時,自動回退功能不僅確保已安裝的組件被正確刪除,而且保證了機器能夠恢複到安裝程式啟動之前的狀態。

⑶ 由於Windows Installer用一個.msi安裝資料庫儲存所有的安裝資訊,所以有可能擷取複製了哪些檔案、建立了哪些註冊鍵之類的資訊。

⑷ 如果ASP.NET應用要分發給多個使用者使用(或者將軟體打包銷售),一種方便、自動化的部署機制是必不可少的,象XCOPY部署這樣的手工操作顯然是不合適的。如果使用Windows Installer這種成熟、強大的安裝技術,整個安裝過程都可以自動化,極大地簡化應用部署。

這一部分文章示範了封裝和部署ASP.NET Web應用的各種方式,介紹了如何利用Windows Installer技術的優勢,以及建立.msi的具體過程。在本文的下一部分中,我們將在前面Windows Installer樣本的基礎上,增添各種進階功能,諸如定製安裝對話方塊及其出現次序,以及安裝過程中如何加入註冊鍵、建立定製檔案夾,等等。

下載本文的代碼:DeployingAspnet_code1.zip。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.