2010-03-15 58 views
337

我完全混淆了WCF和ASMX Web服務。在我的早期階段,我使用了很多Web服務,現在引入了稱爲WCF的新事物。我仍然可以創建用作Web服務的WCF。我想WCF中會有更多的東西。WCF和ASMX網絡服務有什麼區別?

WCF和Web服務有什麼區別?什麼時候應該使用每一個?

+2

這不是一個推薦問題。 ASMX和WCF都不是產品。它們是Microsoft堆棧中的兩個Web服務迭代。問題是有什麼不同,是否值得我學習新的?這與「我應該使用Telerik控件還是Infragistics」並不是一回事。 – 2016-11-03 02:15:26

回答

358

Keith Elder在此處很好地比較了ASMX to WCF。一探究竟。

ASMX和WCF的另一個比較可以是found here - 我不完全同意所有的觀點,但它可能會給你一個想法。

WCF基本上是「ASMX on stereoids」 - 它可以是ASMX所能做的 - 再加上更多!

ASMX是:

  • 容易和簡單的編寫和配置
  • 在IIS中唯一可用的
  • 只能從HTTP

WCF可以調用的:

  • 託管在IIS中,一個Windows服務,一個Winforms應用程序,一個控制檯應用程序 - 你有完全的自由
  • 與HTTP(REST和SOAP),TCP/IP,MSMQ和多協議

總之使用:WCF是在這裏完全取代ASMX。

查看WCF Developer Center on MSDN

更新:鏈接似乎是死了 - 試試這個:What Is Windows Communication Foundation?

+14

與Visual Studio 2010 .NET 4.0 WCF是一樣容易寫作爲ASMX,沒有理由再編寫ASMX了,WCF的速度更快,更靈活,更安全,ASMX是遺留下來的,沒有人應該編寫它的時間段 – 2012-01-19 19:15:45

+13

「大多數開發人員錯誤地認爲ASMX需要IIS;畢竟,這是他們見過的唯一用例。但事實是,ASMX在IIS上沒有任何技術依賴關係。「http://msdn.microsoft.com/en-us/magazine/cc163879.aspx – MrNick 2012-05-28 21:37:40

+2

@MrNick:沒錯,但仍然只有HTTP ,並將託管ASMX的代碼與託管WCF服務的代碼進行比較。 – 2013-07-10 05:16:50

10

WCF完全取代ASMX Web服務。 ASMX是做Web服務的老方法,WCF是當前做Web服務的方式。在客戶端或服務器上開發所有新的SOAP Web服務應該使用WCF完成。

+31

問題是,雖然ASMX是一個簡單模型(意思不是非常靈活),但它是一個簡單的模型(這意味着易於使用和理解最常見Web服務需求)WCF增加了很多額外的複雜性,而MS想用WCF替換ASMX,似乎有點阻力,直到MS使用最常見的場景,像舊的[Webmethod]方式一樣簡單。 – mattmc3 2010-11-16 14:57:00

+6

WCF一點也不復雜,在兩者中都創建一個簡單的「hello world」Web服務,看看你寫了多少代碼。答案:兩者都不多,而且在WCF中只有稍微多一點。而且,順便說一句,ASMX已經_has_已經被WCF取代了。 – 2010-11-16 19:08:28

+55

「WCF一點也不復雜」。 呵呵。告訴我這是我的方式overbloated web.config。 – mattmc3 2011-07-11 01:57:25

35

ASMX Web服務只能通過HTTP(帶.asmx的傳統Web服務)來調用。雖然WCF服務或WCF組件可以由任何協議(如http,tcp等)和任何傳輸類型調用。

其次,ASMX網絡服務不靈活。但是,WCF服務非常靈活。如果你製作一個新版本的服務,那麼你只需要公開一個新的結束。因此,服務是敏捷的,而且這是一種非常實用的方法,可以查看當前的業務趨勢。

我們開發WCF作爲契約,接口,操作和數據契約。作爲開發人員,我們更關注業務邏輯服務,不必擔心通道堆棧。 WCF是用於任何類型服務的統一編程API,因此我們創建服務並使用配置信息來設置HTTP/TCP/MSMQ等通信機制。

+6

也許這只是我,但第2和第3段作爲營銷學士脫穎而出。 – Neolisk 2016-09-13 14:21:34

+0

@網絡專家你說:「如果你製作一個新版本的服務,那麼你只需要揭示一個新的結局」你想說什麼? – Mou 2016-11-25 11:14:06

+0

@Mou,他的意思是揭露一個新的'端點'我猜。像'' – 2017-05-27 19:58:56

21

這是一個非常古老的問題,但我不認爲ASMX的好處已經相當描繪。雖然不是非常靈活,但ASMX網絡服務的使用和理解非常簡單。雖然WCF更靈活,但站起來和配置也更復雜。

ASMX Web服務準備站起來,只要你添加的文件添加爲一個Web服務的參考。 (假設你的項目建立)

對於 create webservice簡單的開發流程 - >run webservice - >add webservice reference,一個ASMX web服務具有非常小的,可以去錯了,不是多,你可以錯誤地配置,那就是它的實力。

針對那些斷言WCF取代ASMX,我會回答WCF需要添加一個精簡K.I.S.S.配置模式才能完全取代ASMX。

例的web.config一個ASMX web服務:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings /> 
    <system.web> 
    <compilation targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
    </system.web> 
</configuration> 
+0

我不認爲WCF需要使用asmx webservices完成的工作的更多配置,而y ou還可以在客戶端爲WCF服務添加引用,WCF比asmx更強大,它可以執行asmx所做的任務,並且它會像asmx – Coder1409 2015-04-07 12:48:52

+6

@ Coder1409一樣簡單,當然它的配置更多,因爲有些東西需要配置。綁定,可發現性等asmx中不需要。服務合同,運營合同,數據合同,數據成員。 asmx中不需要。當然,這些都是爲什麼wcf更優越,更強大的原因,但是否認這增加了複雜性,而不是誠實。它意味着沒有缺點。 – 2015-04-07 16:40:07

+0

Andrew,您應該嘗試在.NET 4.0或4.5中創建一個簡單的「hello,world」WCF服務。幾乎沒有配置。配置在4.0中進行了更改,以便默認生成的配置文件不會配置默認值,並且存在不同綁定的默認值集。所以,如果你創建一個'basicHttpBinding'服務,你幾乎在配置文件中找不到任何東西。 – 2015-08-04 19:34:03

2

有很多的談判正在進行關於ASMX Web服務在WCF簡單的。讓我在這裏澄清幾點。

  • 這是真的,新手的Web服務開發人員將輕鬆入門asmx Web服務。 Visual Studio爲他們完成所有工作,並隨時創建一個Hello World項目。
  • 但如果你可以學習WCF(其中關閉過程不會花太多時間),那麼你可以看到,WCF也很簡單,你可以很容易地繼續。
  • 其重要的是要記住,在WCF這些複雜說實際上歸因於它所帶來沿着美麗的特點。有地址,綁定,合同和端點,服務&客戶都在配置文件中提到。美是你的商業邏輯是分離和保持安全。明天,如果你需要從basicHttpBinding的更改綁定到NetTcpBinding的您可以輕鬆創建一個綁定的配置文件,並使用它。因此,所有與客戶端,通信渠道,綁定等有關的更改都將在配置中完成,使業務邏輯完好無損,這非常合理。
  • WCF「Web服務」是通過WCF啓用的更廣泛的遠程通信範圍的一部分。與傳統的ASMX相比,您將在WCF中獲得更高程度的靈活性和可移植性,因爲WCF從頭開始設計以總結Microsoft提供的所有不同分佈式編程基礎架構。 WCF中的一個端點可以通過SOAP/XML輕鬆進行通信,因爲它可以通過TCP /二進制進行通信,並且更改此介質只是一個配置文件mod。從理論上講,這會降低移植或不斷變化的業務需求,目標等
  • Web服務只能通過HTTP &它工作在無狀態的環境中,WCF是靈活的,因爲它的服務可以託管在被訪問時所需的新代碼量在不同類型的應用程序中。您可以在控制檯,Windows服務,IIS & WAS中託管您的WCF服務,這也是在Visual Studio中創建新項目的不同方式。
  • ASMX比WCF舊,並且任何ASMX都可以這樣做可以WCF(和更多)。基本上你可以看到WCF試圖從邏輯上將所有兩種應用程序在Microsoft世界中進行通信的不同方式組合在一起; ASMX只是這些方法中的一種,所以現在歸入WCF的能力範圍之內。
  • 您將始終喜歡使用Visual Studio for .NET 4.0或4.5,因爲它可以在創建WCF服務時輕鬆實現。
  • 主要區別在於Web服務使用XmlSerializer。但是,與XmlSerializer相比,WCF使用性能更好的DataContractSerializer。這就是爲什麼WCF從像ASMX .NET執行方法比其他通信技術技高一籌,.NET遠程等

不要忘了我是誰喜歡ASMX服務比WCF更受歡迎的一個,但那個時候我不太瞭解WCF服務及其功能。我害怕WCF配置。但我敢於嘗試編寫自己的WCF服務,並且當我學到更多WCF時,現在我對WCF沒有任何限制,並且我推薦他們給任何人以每個人&。 快樂編碼!

相關問題