我是.NET中的新手。今天我正在學習Web服務。我找到了兩種創建Web服務的方法。ASP.NET Web服務應用程序vs ASP.NET Web服務
第一個是 - 右擊解決方案< <添加新項目< < ASP.NET Web服務應用程序
第二個是 - 右擊解決方案< <添加新網站< < ASP .NET Web服務
他們之間有什麼區別?
我是.NET中的新手。今天我正在學習Web服務。我找到了兩種創建Web服務的方法。ASP.NET Web服務應用程序vs ASP.NET Web服務
第一個是 - 右擊解決方案< <添加新項目< < ASP.NET Web服務應用程序
第二個是 - 右擊解決方案< <添加新網站< < ASP .NET Web服務
他們之間有什麼區別?
Web服務應用程序將所有代碼預編譯爲將放在bin中的單個.dll文件。因此,如果您在其中的每一箇中都有多個Web服務文件和代碼,則它們都將被編譯爲一個通用的dll。每次調用任何服務時都會加載該庫。
Web服務網站會將代碼文件保存在App_Code目錄中,並且每個服務都將自己的代碼編譯到Temporary Asp.Net文件夾內的自己分離的庫中。這允許每個庫獨立加載到內存中。
它們都有其優點和缺點。單個庫比網站模型更容易移動/更新,但網站模型允許隔離內存使用,防止一個服務中的問題影響單獨的服務。
編輯:
我的意思內存使用的隔離是每個.dll文件加載依賴於必要完成交易的過程。控制線程的w3wp.exe進程將根據需要將各個.dll後臺打包以完成請求/響應。在一個應用程序中,這些.dll永遠不會改變。無論他們是否需要,他們都會加載進程。在網站中,每個頁面或服務都被編譯爲獨立的庫。因此,如果w3wp.exe需要加載App_Code/MyService_as33fweqs.dll
(動態生成的編譯後dll的臨時名稱)來完成一項任務,它會更小,並且可能更快,因爲它只承載它所需的任務。這允許w3wp.exe獨立地生成不同複雜度/內存需求的線程。
你不應該使用其中任何一個。他們使用傳統的「ASMX」技術。所有新的服務開發應該在WCF中。
使用「WCF服務應用程序」或「WCF服務庫」,或更具體的版本之一。
我也建議不要使用「新網站」。這是微軟在嘗試適應習慣了PHP和類似技術的人的過程中犯的一個錯誤。它不同於其他類型的.NET項目,並且以其他人無法想象的方式行事。幾乎沒有什麼理由將它用於任何非平凡的事情。
順便說一句,我認爲Web服務是非平凡的,所以永遠不會使用Web服務的網站「項目」。
在ASP.NET中,術語「應用程序」意味着它是預編譯的,而「站點」意味着它不是。我會選擇前者。
感謝您的回覆Joel.請您詳細說明「內存使用隔離」嗎? – 2011-06-06 13:04:34
@Mohit Kumar:我在答案中加了一點點,以便更全面地描述它。但是,我不確定我是否增加了清晰度或泥漿。 – 2011-06-06 13:16:34
謝謝Joel .. :) – 2011-06-07 04:44:39