[英]ASP.NET Web Service Application vs ASP.NET Web Service
我是 .NET 的新手。 今天學習Web服務。 我找到了兩種創建 web 服務的方法。
第一個是- 右鍵單擊解決方案 << 添加新項目 << ASP.NET Web 服務應用程序
第二個是-右鍵單擊解決方案<<添加新的Web站點<< ASP.NET Web服務
它們之間有什么區別?
Web 服務應用程序將您的所有代碼預編譯成一個單獨的.dll,該文件將被放置在 bin 中。 所以如果你有幾個 web 服務文件和代碼,它們都將被編譯成一個通用的 dll。 每次調用任何服務時都會加載此庫。
web 服務網站將代碼文件保存在 App_Code 目錄中,每個服務都將自己的代碼編譯到臨時 Asp.Net 文件夾中自己的獨立庫中。 這允許將每個庫獨立加載到 memory 中。
他們都有自己的優點和缺點。 單個庫比網站 model 更容易移動/更新,但網站 model 允許隔離 memory 的使用,從而防止一個服務中的問題影響單獨的服務。
編輯:
我所說的 memory 使用隔離的意思是 each.dll 的加載取決於完成交易所需的流程。 控制線程的 w3wp.exe 進程將在必要時假脫機處理 individual.dll 以完成請求/響應。 在應用程序中,這些.dll 永遠不會改變。 無論是否需要,它們都加載了該過程。 在網站中,每個頁面或服務都被編譯為一個單獨的庫。 因此,如果 w3wp.exe 需要加載App_Code/MyService_as33fweqs.dll
(已編譯 dll 的動態生成的臨時名稱)來完成任務,它會更小並且可能更快,因為它只攜帶它需要的東西。 這允許 w3wp.exe 獨立生成不同復雜度/內存需求的線程。
你不應該使用其中任何一個。 他們使用傳統的“ASMX”技術。 所有新的服務開發都應該在 WCF 中。
使用“WCF 服務應用程序”或“WCF 服務庫”,或更具體的版本之一。
我還建議不要使用“新 Web 站點”。 這是微軟在試圖適應習慣於 PHP 和類似技術的人們的過程中犯的一個錯誤。 它不同於其他所有類型的 .NET 項目,並且其行為方式是其他人無法預料的。 幾乎沒有理由將它用於任何重要的事情。
順便說一句,我認為 web 服務並不重要,因此永遠不會為 web 服務使用 web 站點“項目”。
在 ASP.NET 中,術語“應用程序”意味着它是預編譯的,而“站點”意味着它不是。 我會選擇前者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.