![](/img/trans.png)
[英]What is the difference between the Visual Studio Options: ASP.NET Web Service and WCF Service
[英]What is the difference between an asp.net web method and a wcf service?
我是 .Net 的新手,不明白其中的區別。 有人可以指出我正確的方向嗎?
ASP.NET Web 服務是為構建使用 HTTP 上的簡單對象訪問協議 (SOAP) 發送和接收消息的應用程序而開發的。
WCF 用於使 .NET Framework 應用程序能夠與其他軟件實體交換消息。 默認情況下使用 SOAP,但消息可以采用任何格式,並使用任何傳輸協議進行傳送。
您可以將 ASP.NET Web 服務視為 WCF 服務的子集。
這是比較兩個框架的鏈接。
很容易知道這些差異。
ASP.NET Web Method 被稱為 ASMX [因為文件擴展名](查看 4GuysFromRolla 關於這個,他們有一個很好的教程)
該技術使您可以將功能公開為 Web 服務,以便您可以從任何地方連接並使用它。 但是......你不能保護服務器和客戶端之間的數據,你可以清楚地發送大文件並知道發生了什么等等......
[注意] 您可以使用證書來保護對 Web 服務的訪問,但這很復雜但通常,在 ASMX 中我們使用用戶名/密碼。
在 WCF 中,您在 Web 服務方面處於不同的世界,這是 .NET 中暴露服務的最佳技術(您能看出區別嗎...服務!不是Web 服務),WCF 不需要 IIS 來運行,它可以在服務器上作為系統服務運行,使用控制台環境(如命令行)等,所以我們說 WCF 是服務而不是 Web 服務。 記住ASMX 需要IIS 才能運行。
使用 WCF,您可以使用 SSL 來加密通信(要在 ASMX 中執行此操作,您需要使用WSE - Web 服務增強功能),您可以安全地發送大文件(要在 ASMX 中執行此操作,您需要使用MTOM - 消息傳輸優化機制) )。
您只需更改一行代碼即可設置傳輸首選項,安全性要高得多,等等:)
希望您對此有一個更好的總體概述,但還有更多。
底線:要公開不需要保護的 Web 服務,可以使用 ASMX,完全沒問題,但是如果需要以某種方式保護通信,請在 WCF 中進行!
除了上述響應之外,還創建了 WCF 以替換 .NET 3.0 及更高版本中的 .NET Remoting。 除了 SOAP、REST、POX 等各種格式(例如 XML 和 JSON)的 Web 服務,WCF 還提供 MSMQ 和命名管道。 如上所述,ASMX 僅提供基於 SOAP 的 XML Web 服務。
對於其他類型的通信協議,您需要深入研究.NET Remoting 。 有關其他信息,您應該查看Pro C# 2008 和 .NET 3.5 Framework 。 這是一個很好的資源,您可以從以前的書籍中獲取涵蓋 .NET Remoting 和其他替換功能的章節。
這是一個新的、巨大的差異:Microsoft 現在將 ASMX Web 服務視為“遺留”技術。 請參閱“使用 ASP.NET 和 XML Web 服務客戶端創建的 XML Web 服務”。
網頁服務
周轉基金
WCF 很靈活,因為它的服務可以托管在不同類型的應用程序中。 下面列出了托管 WCF 服務的幾種常見方案:
我有同樣的問題。
我發現Microsoft Windows Communication Foundation Step by Step這本書非常好。
如果您只想使用 WCF 完成傳統的 Web 服務,那么該書的第 1 章將向您展示如何做到這一點(編寫服務、測試、部署、使用服務)。
它是為 VS2005 編寫的,但我使用的是 vs2008,發現它更容易。
WCF 還有很多內容,但那本書是一個好的開始。
它們是兩種不同的東西。 WCF 是一個更通用的框架,通過它您可以編寫一個服務類型組件並以多種方式部署它(甚至作為 Asp.Net Web 服務)。
這里有一個關於這個的簡短主題http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/
下面列出了 Web 服務和 WCF 之間的主要區別。
Web 服務:Web 服務是一種旨在通過 Internet 直接與其他應用程序交互的應用程序。
1) [WebService] 和 [WebMethod] 屬性定義了 Web 服務和方法。
2) 它只能通過 HTTP 訪問。
3) 托管在 IIS 中。
4) 支持安全服務。
5)不能是多線程的。
6) 只使用過肥皂或 XML。
7) System.Xml.serialization 命名空間用於序列化
WCF :Windows Communication Foundation(代號為 Indigo)是一個用於構建、配置和部署網絡分布式服務的編程平台和運行時系統。
1) [ServiceContract] 和 [OperationContract] 屬性定義了 Web 服務和方法。
2)通過HTTP、TCP、MSMQ、P2P、命名管道訪問
3) 托管在 IIS、自托管、WAS 和 Windows 服務中。
4) 可以通過服務行為類進行多線程。
5) System.Runtime.Serialization 命名空間用於序列化
6) 支持不同類型的綁定,如 BasicHttpBinding、WSHttpBinding、WSDualHttpBinding 等。
7) 支持安全服務、可靠消息、事務、AJAX 和 REST 支持
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.