當 ASP 第一次發布時,Web 編程還比較困難,因為需要 IIS 來處理 ASP 頁。後來,ASP.NET 2.0 和 Visual Studio® 2005 通過引入網站開發模型使一切工作都變得容易了。藉助該網站模型,您不必在 Visual Studio 中建立新項目,而是可以指向一個目錄並開始編寫網頁和代碼。此外,您還可以使用內建的 ASP.NET Development Server 快速測試網站,ASP.NET Development Server 將 ASP.NET 寄宿在一個本地進程中,並消除了必須安裝 IIS 才能進行開發這一先決條件。該網站模型的魅力在於您在開發 Web 應用程式時無需考慮打包和部署。需要其他類時怎麼辦?向 App_Code 目錄添加一個 .cs 檔案即可開始編寫。希望將可本地化的字串儲存在資源檔中時怎麼辦?向 App_GlobalResources 目錄添加一個 .resx 檔案並鍵入字串。一切都順順噹噹;您根本就不必考慮編譯和部署方面的事情。
在準備進行部署時,您有多種可選方案。最簡單的方案是將檔案複製到主運行伺服器並按要求編譯每一個檔案(和在測試環境中一樣)。第二種方案是使用 aspnet_compiler.exe 工具 + 生產力將應用程式先行編譯為二進位版本,之後將只剩下要放到伺服器上的一組程式集、靜態內容和設定檔。第三種方案也使用 aspnet_compiler.exe,但要建立一個可更新的二進位部署,其中 .as*x 檔案保持不變(並且可修改),而所有代碼檔案都編譯為二進位程式集。
這似乎涵蓋了每一種可能的情況,開發人員可以一心一意地編寫 Web 應用程式,而在以後實際部署時再作打包和部署決定。不過,此模型也遭到了相當大的反對,特別是那些習慣了自己開發的 Web 項目是在實際專案檔中指定的實際項目的開發人員的反對,這些項目允許注入產生前和產生後函數、從產生過程排除檔案以及使用命令列開關在調試和發布版本之間進行切換等操作。有鑒於此,Microsoft 迅速推出了 Web 應用程式項目(即 WAP),最初它是作為 Visual Studio 2005 的外掛程式發布的,現在包含在 Visual Studio 2005 Service Pack 1 (SP1) 中,Visual Studio 2005 Service Pack 1 (SP1) 可從 msdn.microsoft.com/vstudio/support/vs2005sp1 下載。
WAP 可替代與 Visual Studio .NET 2003 Web 項目模型非常接近的網站模型。新的 WAP 模型會在產生過程中編譯所有原始碼檔案,並在本地的 /bin 目錄中產生一個用於部署的程式集。WAP 還使得增量採用 ASP.NET 2.0 引入的新的部分類別程式碼後置模型變得更加容易,因為現在您可以開啟 Visual Studio .NET 2003 項目,並且在轉換過程中只修改 .sln 和 .csproj(或 .vbproj)檔案。然後可將每個檔案及其程式碼後置類別轉換為與項目中任何其他檔案都無關的新的部分類別模型(操作方法是:在方案總管中按右鍵各個檔案並選擇“轉換為 Web 應用程式”),也可以讓它們仍然使用舊模型。這與將 Visual Studio .NET 2003 Web 項目轉換為網站模型大不相同,轉換為網站模型會同時轉換所有檔案,並且不支援增量採用。
最後,還有一個稱為“Web 部署項目”(本專欄的主題)的新項目類型,它引入了許多既針對網站項目又針對 Web 應用程式項目的附加部署選項。 Web 部署項目彌補了既針對網站應用程式程式又針對 Web 應用程式項目的部署選項中的遺留漏洞,並且可以簡單而又可擴充地實現幾乎任何部署方案。 為確切瞭解這一新項目類型增加了哪些內容,我們先來回顧一下在 Web 部署項目推出之前的情況。
在 ASP.NET 2.0 中部署
使用網站模型產生應用程式時,您可以選擇對部署網站進行先行編譯。通過 Visual Studio 2005 中的“產生”|“發布”菜單或直接通過命令列工具 + 生產力 aspnet_compiler.exe,您可以訪問先行編譯工具 + 生產力。圖 1 顯示了 Visual Studio 所顯示的此工具的介面。
圖 1 網站發布工具 + 生產力