2009-09-18 38 views
0

KISS principle通信,我突然意識到如下:KISS:簡單的C#應用​​程序與RESTful Web服務

  • 在.NET中,可以使用實體模型框架環繞的數據庫。
  • 該模型可以通過WCF作爲Web服務公開。
  • 此Web服務將有一個非常標準化的定義。
  • 可能會創建一個客戶端應用程序,它可能會使用任何此類RESTful Web服務。

我不想重新發明輪子,如果有人已經做到了這一點,所以我的問題很簡單,它不會讓我感到吃驚:有沒有人已經創建了一個簡單(臺式機,不是web)客戶端應用程序可以使用基於Entity Framework的RESTful服務,並允許用戶直接讀取和寫入數據到此服務?

否則,我只需要自己「發明」這個。 :-)


問題是,數據庫層和RESTful服務已經完成。 RESTful服務只會在開發階段留在項目中,因爲我們可以直接使用圍繞它構建的Web應用程序來使用數據庫層組件。在部署Web應用程序時,RESTful服務僅保留在部署之外。

但是數據庫有大量的數據要管理近50個表。在針對本地數據庫進行開發時,我們可以直接訪問數據庫,因此我不需要此工具。部署完成後,Web應用程序將成爲訪問數據的唯一方式,因此我無法使用此工具。但是我們也有一個測試階段,其中數據庫存儲在本地域之外的另一個系統上,並且此數據庫不適用於開發人員。只有管​​理員可以直接訪問這個數據庫,使測試更復雜一些。

但是,通過RESTful服務,我仍然可以直接訪問數據。因此,當某些測試出錯時,我可以通過此連接修復數據,或者僅在本地系統上創建測試數據的副本。還有很多其他功能,甚至可以直接在Excel或XMLSpy中打開表格服務的URL以查看內容。但是當我想回寫一些東西時,我必須編寫特殊的代碼才能做到這一點。使我能夠訪問數據並對其進行修改的通用工具將更容易。由於它是圍繞ADO.NET數據服務的通用設置,因此這也應該很容易。

因此,我可以做到這一點,但希望別人已經做了類似的事情。但看起來目前還沒有這樣的工具...

回答

5

你指的是ADO.Net Data Services。它基本上創建了一個實體數據庫模型,並使用ASMX將一個REST前端添加到該服務。有關如何使用.Net使用服務的MSDN here的文章。過去我也使用.Net中的通常WebClient類來完成同樣的任務。

如果您想基於Entity Framework推出自己的產品,還可以查看WCF REST Starter Kit。入門套件還包含一個便捷的新WebClient類,可用於與REST服務進行通信。

澄清

有,我知道這關會跟這些服務,因爲他們使用的Web服務幾乎訪問數據的預編譯應用程序客戶端。有最有可能是我工作過的最接近的工廠Microsoft Smart Client工廠。

我提到了上述2個選項,因爲他們已經有.Net中的庫直接與它們一起工作,或者作爲引用的Web服務,或者更加冒險,包括我自己在內,使用WebClient庫或者新的HTTPClient庫在WCF REST入門工具包中。

我在Windows,Web,Silverlight和WCF中都使用了這兩個。後者是最簡單的,因爲它們專注於REST。

我們目前正在調查Prism,它強烈傾向於在使用WCF進行前端開發時使用此方法。

假設

至於這個問題,你是一個普通的假設,即包裝ADO實體框架與WCF服務這將是通用的。 ADO.Net Data Services是最接近你的,但是數據庫的結構將從根本上改變你與之交互的方式。以「通用」方式提高水平會很危險,因爲這兩種技術單獨或一起已經儘可能通用。

+0

客戶端不應該知道有關數據庫結構的任何信息。 dataservices返回一個atom feed,它列出了所有表格,可以顯示在組合框中。選擇一個表格,它會從這個表格中返回數據,這可以通過網格顯示,只需要從「d」命名空間中取出元素即可。其他功能不應該那麼難,因爲數據服務已經將其大部分推廣了。危險嗎?是。但作爲一個內部工具仍然實用。 (安全問題需要在服務中處理,而不是在應用程序中處理。) – 2009-09-18 10:00:02

+0

儘管您的示例有效,並且應用程序可以工作,但在商業環境中幾乎沒有什麼意義。現實是你永遠不會向最終用戶顯示錶格的所有字段。另外,這將是非常通用的。所以我支持我的回答。在您的**環境**中,它可能是實用的,但除了創建CodePlex項目之外,我還沒有看到任何此類客戶端。 – BinaryMisfit 2009-09-18 10:21:52

+0

在商業環境中,沒有。但在開發環境中,您希望快速瀏覽數據,這種工具非常實用。 – 2009-09-18 10:35:49

2

除了數據服務(+1)之外,請考慮RIA服務。它就像是Silverlight或WPF客戶端的特定於域的數據服務版本。比數據服務更不靈活,但更容易。

+0

不幸的是,實體模型已經完成。圍繞它的RESTful服務也很容易添加和部署。現在,我將不得不處理部署的內容,並且無法調整服務器體系結構。 (好吧,直到下一次更新。)測試需要一個月的時間,所以如果不存在,我有一個月的時間來構建我自己的解決方案。 (我認爲應該花兩天時間。) – 2009-09-18 13:56:21

+1

數據服務和RIA服務都可以與您現有的實體模型一起工作。 – 2009-09-18 13:59:55

+0

+1我還沒有和RIA一起工作過,雖然我應該進入它。我要老去跟上。 – BinaryMisfit 2009-09-18 14:01:40