一千萬個為什麽

搜索

基於OData的WCF服務或Silverlight應用程序的常規WCF服務


我剛剛開始評估是否應該使用受OData影響的wcf數據服務或標準WCF服務應用程序作為Silverlight應用程序的主要數據源。我希望你的想法在哪種情況/情況下更好的方式。什麽是電線更輕,更容易維護等。

到目前為止我收集的是:

  • 我知道VS2010中沒有Wcf數據服務模板,我需要首先創建一個asp.net web項目,然後添加一個wcf數據服務,這將影響我構建項目的方式。/LI>
  • WCF數據服務通過服務公開實際的表名。我不知道有什麽辦法可以為他們起到別名,我不確定讓世界了解我的桌面結構是個好主意
  • 在標準的wcf服務中,我需要針對服務端的EF或Domain服務類編寫linq查詢,而在數據服務中,我可以將該處理邏輯移動到客戶端。
  • 乍一看,檢查由wcf數據服務公開的類似乎比EF公開的類更容易閱讀和理解

請添加你的想法..

謝謝你的時間。

最佳答案

沒有Wcf數據服務   我所知道的VS2010中的模板,

不是項目模板 - 只是一個項目模板(用於ASP.NET網站或Web應用程序)。 WCF DataServices與HTTP緊密耦合,因此它們只在網站/應用程序中有意義。

WCF數據服務公開實際表   服務上的名字。

NO ! At least not necessarily. The whole point of EF is that you can decouple the actual physical structure of your database from the (conceptual) model that gets exposed. You can totally rename entities, you can map several entities onto a single table, split up an entity over several tables, you can leave out attributes - anything you like!

乍一看檢查班級   似乎是由wcf數據服務公開的   比閱讀和理解更容易   那些暴露於EF的人

我對此表示懷疑 - 因為默認情況下,WCF數據服務將使用Linq-to-SQL或EF模型作為其基礎。您可以根據自己的喜好進行簡單或復雜的操作。

在公司內部使用Silverlight 4應用程序時,使用“常規”WCF服務可以使用 netTcpBinding 以獲得更快的性能(感謝二進制消息編碼與其他綁定的文本消息)網絡(不適用於互聯網場景) - 不是你可以用WCF DataServices做的事情。

我認為的主要區別是SOAP與REST的區別:

  • SOAP(傳統的WCF)面向方法 - 您根據方法思考和設計系統 - 您可以做的事情( GetCustomerSaveOrder 等。)

  • REST(WCF DataServices方法)完全是關於資源,例如你擁有自己的資源和資源集合(例如 Customers ),並使用標準的HTTP謂詞( GET,POST,PUT,DELETE )代替單獨定義的特定方法

所以這兩種方法各有利弊。我想最重要的問題是:您創建的應用程序類型以及您要定位的用戶類型是什麽類型?

Update:

  • 對於Intranet /內部應用程序,我認為 netTcpBinding (二進制編碼)的優勢將證明使用經典WCF服務是合理的 - 對於數據密集型應用程序,我個人認為基於方法的方法( GetCustomer,SaveCustomer )更易於使用和理解

  • 對於面向公眾的應用程序,使用HTTP並盡可能實現互操作可能是您的主要關註點,因此在這種情況下,我可能更喜歡WCF數據服務 - 易於使用,易於理解的URL對於用戶

轉載註明原文: 基於OData的WCF服務或Silverlight應用程序的常規WCF服務

猜你喜歡