2010-03-24 168 views
7

微軟已經完成了一項精明的工作,不在SOA/Web dev精彩世界中概述數據服務的實際位置。WCF數據服務實施策略

所以我的問題是WCF數據服務旨在通過外部客戶端使用?有沒有人聽說過有人在服務器端使用它們(即Web服務的數據庫訪問)?

簡單的場景,一般的分層體系結構使用BO業務對象(括號註明層之間正在傳遞什麼)

(XML)WCF服務 - >(BO)業務邏輯 - >(BO)道 - >實體框架

或者使用數據服務,它將是DS BO是在數據服務中使用的建模業務實體的位置。

(XML)WCF服務 - >(BO)業務邏輯 - >(BO)WCF數據服務 - >(DS BO)服務器

我無法看到使用了以後,除非會有很多人會通過數據服務層和服務層來訪問您的數據?

想到任何人,任何類型的參考文檔,將有助於它。

我在尋找優點/缺點,以幫助像我這樣的其他人定義何時/在哪裏使用數據服務。

+0

EF性能較差,因此對於高性能服務來說這是一個糟糕的解決方案。 – garik 2010-03-24 14:35:36

+2

EF將在這兩種情況下使用,並且性能對於我們的吞吐量是可以接受的。 – Nix 2010-03-24 15:09:46

回答

3

這裏是我試圖概述我在這個問題上找到的一切。

數據服務的目的是通過Web URI公開某種類型的資源。所有數據都通過標準HTTP動詞(GET,POST,PUT,DELETE)進行訪問/更改。

DS(完全可配置)的標準響應是JSON/Atom。

開箱即用的數據服務風格旨在成爲需要通過Web訪問其數據的任何類型客戶端的後端訪問層。

數據服務支持添加額外的業務邏輯(通過服務操作/攔截器),但通常用於業務邏輯有限的情況。

總之Data Services被設計成面向客戶端,您公開的是您的數據,因此可以通過網絡從其他機構訪問它。雖然可以強制數據服務適合後端服務器數據訪問層,但只有在找到合理的理由時才應該這樣做。數據服務帶來了大量不必要的開銷性能和編碼。

我還沒有找到任何資源(博客或文章),這些資源(博客或文章)暗示這些資源可用作服務器端應用程序的dao層。

案件而言,在服務器端使用數據服務:

1)更容易版本數據服務。我可以發佈不同版本的實體模型,而不會影響所有使用它的人(可以爭辯說,只需使用ADO.NET實體模型,您可以做更多的工作)

2)想要訪問數據在較低的水平。您允許後門進入您的數據庫。在高層次中,您展示了業務服務和後門數據訪問服務。可能存在其他域在其數據模型中僅包含共享數據的子集並需要過濾模型中的某些內容的情況。數據服務將允許您通過uris全方位地討論VIA。

資源

White Paper Using Microsoft ADO.NET Data Services

ADO.NET Data Services Overview

Simplifying our n-tier development platform: making 3 things 1 thing

Data Services for the Web

3

不要做第二個。

WCF數據服務接口基於Atom Pub,它基於面向客戶端的REST。

這是一個關鍵原因。您不能通過WCF數據服務接口進行兩階段提交事務,我希望WCF團隊永遠不會嘗試啓用它。

WCF數據服務是關於向遠程客戶端公開數據,而不是作爲架構中的一個層。

+0

你能詳細說明兩階段提交事務限制嗎?你只是在談論以編程方式控制兩階段提交或內部問題? – Nix 2010-03-24 15:08:04

+0

如果您在此處搜索REST Transactions,您會看到很多關於此的討論。關於這個問題的答案在這裏http://stackoverflow.com/questions/2346964/if-transactions-over-rest-are-unachievable-how-can-rest-ever-be-really-useful – 2010-03-24 17:30:28

-3

所以我的問題很簡單,是WCF數據 服務旨在通過 客戶端使用?還是有人聽說有人在服務器端使用它們?

請記住,術語「客戶」具有廣泛的含義,並且可以特別包括後端系統,所以從這個意義上來說,簡短答案是肯定的。我沒有聽說有人使用它們,但沒有理由不這樣做。 RSS用於聯合系統間的數據,WCF數據服務將是另一種方式。

也許您從技術中心的角度來看待這個問題,當真的需要更全面地思考時? WCF數據服務只是一個工具 - 在適當的地方使用它們。

看一些high-level overview docs它看起來像WCF數據服務有一個相當廣泛的可能的應用程序。

+0

請更好地照顧你的答案(拼寫檢查),以及閱讀問題。這沒有任何答案。 我在我的問題中說過:「如果由於某種原因,您暴露了兩個接口,我不能在後面看到一個用途,除非會有很多情況會有人通過您的數據服務層訪問您的數據一個業務服務和一個數據服務我可以看到這種架構的需求/用途,但除此之外,爲什麼任何人都會經歷使用數據服務訪問數據庫的所有麻煩? 爲什麼在你釘上一顆釘子時拔出釘槍? – Nix 2010-03-29 21:16:55

+0

在這種情況下,不要說你的問題是一個簡單的問題;我特意給你了我的想法(第一部分) - 如果這不是你想要的,你完全有權投票。我承認,我發現你的第二個問題/例子有點難以完全理解 - 但是,試圖通過書面文本來溝通這種事情並不容易。我爲可憐的拼寫道歉,但我親愛的說我看到更糟;我假設當人們在這裏提出問題時,他們主要是在信息不完美的情況下使用英語。 – 2010-03-30 20:52:51

+0

我試圖重新說明問題,使其更清楚我在找什麼。投票的主要原因是它沒有解決我的問題,這似乎是一個通用的答案。我會說我已經閱讀了你發送的鏈接,它顯示了我爲什麼感到困惑,MS真的把這件東西當作雲來銷售......它可以做所有事情......;( – Nix 2010-03-31 12:09:47

0

設置你的數據訪問層上的數據服務是自殺。 WCF數據服務用於遠程客戶端。而已。