2009-01-05 100 views

回答

2

我認爲WCF替代ASMX和遠程處理是公平的。 您可以使用ASMX和遠程處理以及WCF實現更多功能,但是您擁有更多的功能,並且通常可以更好地控制正在發生的事情。

所以我相信,如果可以的話,你應該使用WCF。

4

WCF是通信庫,它是.NET遠程處理和「舊」ASMX Web服務以及這兩個庫的後繼者的超集。

WCF Web服務對WS- *標準提供了更好的支持,並且互操作性問題更少。

基本上,你應該使用WCF,因爲.NET Remoting的和ASMX可能被視爲legecy(如果我沒有記錯,一些.NET遠程漏洞只固定於WCF和從未在.NET遠程本身)

10

WCF是一個通信堆棧,允許通過HTTP(如ASMX)和TCP(如Remoting)以及命名管道(這實際上是一個機器內跨進程調用),MSMQ以及.NET 3.5 REST公開服務。

它允許這樣做,因爲它將服務的通信部分從業務邏輯中分離出來。所有你需要做的就是用合適的契約屬性([SeriviceContract],[OperationContract]和[DataContract]裝飾你的服務類,方法和DTO。)

這有一個能夠寫一次服務的好處,並允許許多不同類型的客戶端使用相同的服務(即Java客戶端可以使用HTTP,.NET客戶端可以使用TCP,傳統可以使用MSMQ等)。

WCF仍然會允許您使用每個傳輸的所有功能,包括安全性,事務處理,可靠的消息傳遞等,但是您需要謹慎使用。並非所有功能都適用於所有傳輸,您需要相應地進行設計。 WCF允許您在合同中指定哪些功能是必需的。這樣可以防止somone嘗試以不支持所需功能集的方式公開您的服務(即,如果您的服務需要事務處理,則WCF運行時將不允許通過基本HTTP端點訪問該服務)。

WCF也是可擴展通過自定義行爲(這影響WCF運行時是如何工作的)和自定義渠道(控制服務如何WCF與外界溝通。)

WCF有一個學習曲線相比, ASMX,但ABSOLUTLY的好處在於減輕這種學習曲線。

希望有所幫助。

+1

在WCF中,DataContractSerializer可以訪問非公共成員,因此它需要完全信任,而XML序列化器(在Web服務中)則不需要。由於完全可信的代碼訪問機器上的所有資源,因此應謹慎使用。 – Adeel 2010-01-29 10:30:40

相關問題