[ASP.NET]Web網站與Web應用程序區別
前言:在項目開發中,我們都會用到web網站與Web應用程序,那么這兩者有什么區別呢?下面和大家分享一下。
(一)是否需要重新生成
1.web網站
項目就是一個應用程序。在VS中查看的時候,項目中建立的一般處理程序,有兩個文件,網站只有一個。在代碼層次上沒有什么區別。
項目中的一般處理程序有命名空間,而網站中的沒有。WEB網站每一個頁面(ashx頁面)都是一個獨立的程序,【一個頁面出錯了不會影響到另外一個頁面(演示)】。
2.Web應用程序
項目中建立完一個文件(或修改了一個文件),一定要【重新生成】。
目的:將項目生成對應的dll文件放在bin/Debug目錄下(並且所有的類放在了該程序集中。),如果項目中的一個文件出錯了,是沒有辦法生成成功的。
(二)名稱是否隨機
1.web網站
網站中每個頁面(aspx,ashx)都生成對應的程序集,名稱是隨機的,當文件建立保存以后,請求會自動保存一下。如果你對文件中的代碼改動了,Assembly.GetExecutingAssembly().Location
會重新編譯生成一個新的程序集,如果沒有改動,則不會生成新的.(在Web網站中的一個一般處理程序中獲取當前一般處理程序文件所生成的dll文件。
2.Web應用程序
一般處理程序中的代碼改變了那么重新生成,沒有變化則不會重新生成。
所在Web應用程序中修改了代碼以后一定要重新生成,不然修改后的代碼不會生成到程序集中,程序集中可能還是舊的內容
為什么網站不需要命名空間?命名空間就是為了區分類同名的情況,而網站一個文件就是一個獨立的程序,所以不會出現類重名的情況.
(三)SqlHelper放置的位置
在網站中寫SqlHelper(定義普通的類)必須放在App_Code文件夾中,而應用程序直接建就行了,不要建立App_Code文件夾,因為該類最終會生成到程序集中。但是在網站就必須放在App_Code文件夾下,原因是,我們請求網站的一個一般處理程序時會自動編譯,但是一個不同的類是不同被請求的,所以也就沒法編譯。但是放在app_code文件夾中會在請求某個一般處理程序時自動被編譯。但是項目不需要了,因為最終會生成到一個程序集中。
小網站可以用Web網站,因為文件比較少,請求的時候出現錯誤,直接修改。不關心其它頁面。但是大項目中用到的文件特別多,如果建成WEB網站那么維護起來很痛苦,但是建成WEB項目可以統一生成,這時如果出錯了,也很容易知道哪個文件出錯了,當所有的文件都編譯通過了才能進行訪問,這是與WEB網站不同的地方
總結:大網站比較適合用WebApplication項目,小網站比較適合用WebSite項目