KISS:简单的C#应用​​程序,它与RESTful Web服务进行通信

时间:2009-09-18 09:21:31

标签: c# entity-framework wcf-rest

KISS principle之后,我突然意识到以下情况:

  • 在.NET中,您可以使用实体模型框架来包装数据库。
  • 此模型可以通过WCF公开为Web服务。
  • 此Web服务的定义非常标准化。
  • 可以创建一个可以使用任何此类RESTful Web服务的客户端应用程序。

我不想重新发明轮子,如果有人已经这样做,我不会感到惊讶,所以我的问题很简单:有没有人已经创建了一个简单的(桌面,而不是网络)客户端应用程序可以使用基于实体框架的RESTful服务,并允许用户直接读取和写入此服务数据?

否则,我只需要自己“发明”这个。 : - )


问题是,数据库层和RESTful服务已经完成。 RESTful服务只会在开发阶段留在项目中,因为我们可以直接从围绕它构建的Web应用程序中使用数据库层组件。部署Web应用程序时,RESTful服务将不在部署之外。

但是数据库有大量数据需要管理近50个表。在针对本地数据库进行开发时,我们可以直接访问数据库,因此我不需要此工具。部署后,Web应用程序将是访问数据的唯一方法,因此我无法使用此工具。但是我们还有一个测试阶段,数据库存储在本地域之外的另一个系统上,而这个数据库不适用于开发人员。只有管​​理员才能直接访问此数据库,从而使测试更加复杂。

但是,通过RESTful服务,我仍然可以直接访问数据。因此,当某些测试出错时,我可以通过此连接修复数据,或者只是为我本地系统上的测试创建数据副本。还有很多其他功能,甚至可以直接在Excel或XMLSpy中打开表服务的URL来查看内容。但是当我想要写回东西时,我必须编写特殊代码才能做到这一点。允许我访问数据并对其进行修改的通用工具会更容易。由于它是围绕ADO.NET数据服务的通用设置,因此这也应该是合理的。

因此,我可以这样做,但希望其他人已经做过类似的事情。但似乎还没有这样的工具......

2 个答案:

答案 0 :(得分:5)

您指的是ADO.Net Data Services。它基本上创建了一个实体数据库模型,并使用ASMX向服务添加了一个REST前端。有关使用.Net消费服务的MSDN here中有一篇How To文章。我在过去使用.Net中的常规WebClient类也做了同样的事情。

如果您想根据Entity Framework推出自己的WCF REST Starter Kit,也可以查看Microsoft Smart Client。入门工具包还包含一个方便的新WebClient类,可用于与REST服务进行通信。

<强>澄清

我知道没有预先构建的应用程序客户端将与这些服务进行通信,因为它们几乎都是使用Web服务访问数据。 WebClient工厂很可能是我最接近的工厂。

我提到了上面两个选项,因为他们已经在.Net中有了直接使用它们的库,可以作为引用的Web服务,也可以使用HTTPClient库或者使用Prism库包含更多的adventurious。 WCF REST Starter工具包中的新{{3}}库。

我在Windows,Web,Silverlight和WCF中都使用了它们。后者是最简单的,因为他们专注于REST。

我们目前正在调查{{3}},它强烈倾向于在使用WCF进行前端开发时使用此方法。

<强>假设

关于这个问题,您正在做出一个通用的假设,即使用WCF服务包装ADO实体框架它将是通用的。 ADO.Net数据服务是您最接近的,但数据库的结构将从根本上改变您与之交互的方式。以“通用”方式提高水平将是危险的,因为这两种技术单独或一起已尽可能通用。

答案 1 :(得分:2)

除数据服务(+1)外,请考虑RIA服务。它类似于Silverlight或WPF客户端的特定于域的数据服务版本。比数据服务更灵活,但更容易。