簡體   English   中英

ASP.NET Web 服務應用 vs ASP.NET ZC6E190B284633C48E39E55049DA3CCE8

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM