2009-11-26 39 views
4

我目前正在閱讀一個提案,其中此人建議使用WCF服務來促進Web應用程序中的AJAX調用。他們說WCF可以更有效地序列化數據。 我個人從未考慮過這種方法。我一直喜歡使用jQuery的AJAX功能調用MVC控制器,這從來都不是問題。使用WCF促進AJAX調用是否有優勢?

現在有這個建議使用WCF的AJAX,我有點懷疑。我想保持開放的心態。對我來說,似乎增加了另一層,不必要的複雜化。這值得嗎?

回答

3

作爲一個備註,ASP.Net MVC當前使用JavaScriptSerializer(即使它已被標記爲過時後.Net 3.5 )用於序列化WCF使用DataContractJsonSerializer的JSON數據。

因此,就JSON序列化效率而言,MVC將更有效,因爲JavaScriptSerializer比DataContractJsonSerializer更輕量(所有操作都很快速且很髒)。

HTH

2

+1我也有點懷疑。我不認爲普通的投注者通過Ajax/jQuery發送大量數據,如果他們是我認爲他們需要重構一點。

因此,如果是這種情況,那麼當您序列化(可能)2或3 k數據時,您可以從使用WCF的普通mvc功能獲得什麼樣的收益。我認爲即使是2k通過Ajax發送也是很多的。

在後面的代碼中使用WCF將是一個好主意,但對於Ajax的凝聚,不知道那個。

-1

WCF有它自己的序列化程序,它(IIRC)是二進制的,它處理XML序列化不能的對象圖。它也不應該有XML的詳細開銷。正如格里格斯指出的那樣,這可能是對優化的過度關注。

WCF比JSON更高效嗎?不知道,不確定這很重要。

在編碼方面,會有一個瘦服務層和ASP.NET託管,因此會增加開銷。它是否影響性能是一個單獨的問題;與處理服務的.asmx或MVC控制器開銷相比,它只是可見的開銷。

我不認爲你在這種情況下真的獲得了WCF的其他功能。使用WCF for ASP.NET託管的Web服務會限制您使用特定的綁定協議。

編輯:看看我使用WCF進行Web服務的項目,它是web HttpBinding。正如評論中指出的那樣,這將是JSON。另一方面,如果您使用的是ASP.NET ScriptManager標記,則它會動態地構建代理,其中包括解析數據,所以您真的不知道數據如何序列化。

+0

WCF通過WebHttpBinding支持JSON。 – 2009-11-26 22:26:04

+0

我不認爲如果你的公司的方向是使用協議向前移動並且你編碼到一個接口,那麼限制你自己的綁定協議是一件壞事。正如你所指出的,WCF會更有效率,但爲了幾百個字符的緣故?對我來說,就像有人研究過WCF一樣,在它的「哇」中結束了,並且沒有真正考慮如何在項目中使用它。 – griegs 2009-11-26 22:26:48

+1

不知道爲什麼這是投票。解釋或爲什麼可能會很好。 – griegs 2009-11-26 22:43:24

1

如果您將相同的服務暴露在具有不同綁定的附加端點上,但是如果您只是使用AJAX,那麼我會使用返回JsonResult的MVC控制器。您仍然可以使用操作篩選器獲取參數序列化。

除非只有WCF提供的特定功能,否則MVC控制器會更簡單。您不必擔心合同,綁定,配置,WCF的JSON格式等。

1

它的聲音在有趣的概念,但在一天結束的時候你會不會仍然可以返回Json的?也許我錯過了一些東西,但WCF如何通過WCF返回的Json比由WCF返回的Json更優化?這就像說我的XML比你的更優化?這不是像WCF可以返回二進制數據到瀏覽器 - 你將無法使用該數據...(或者它可以嗎?)我想WCF串行器可能比MVC更快,但瓶頸始終將通過電線獲取這些數據。

當然,這完全是純粹的猜測 - 我們需要您閱讀的建議以提供準確的意見。這很大程度上取決於您通過Ajax發送多少數據。

+0

該提案非常模糊,它試圖說服我們使用WCF。我無視WCF的使用,它讓我想到了,也許是第二次猜測自己,「這真的值得嗎?」。謝謝你的回答。 – 7wp 2009-11-27 14:34:52

2

我不會打擾另一層,特別是不是WCF,以促進AJAX調用。如果你已經使用MVC,JsonResult將會很好(根據上面的Jason Fox,效率更高)。

除非您需要Web服務才能進行需要Web服務的操作(即通過Web進行交互),爲什麼要麻煩呢?一個MVC控制器一直爲我完成這項工作,而沒有惱人的開銷。

相關問題