将.NET类库(主要定义CRUD操作)公开为服务

时间:2010-07-13 08:51:16

标签: c# .net wcf service wcf-data-services

将现有(类)库(主要定义CRUD操作)作为服务 WCF服务)公开的最佳,最有效和最快捷的方式是什么? WCF数据服务),以便可以与 Silverlight Ajax 一起使用。是否有工具(代码生成器,RAD工具)可以支持吗? 提前感谢您的帮助和提示。

3 个答案:

答案 0 :(得分:2)

最好的方法是使用WCF自己创建一个包装器。

你应该这样做,而不是使用一些自动化来直接公开库,因为:

  • 安全性,您是否希望任何人随时在图书馆上调用任何内容?
  • 大多数图书馆都假设他们是直接调用而不是通过服务调用(参见fallacies of enterprise development)。
  • WCF默认是无状态的:您需要弄清楚如何管理库假设的任何状态(您将不再拥有单个客户端)。
  • 我提到过安全吗?

答案 1 :(得分:1)

如果你的类只是一个愚蠢的数据集合,只需在其上抛出一个DataContract。 (不要忘记命名空间,否则您将在以后踢自己。)然后,您可以使用Web项目公开它。

如果你班上有实际的逻辑,那你就麻烦了。没有很好的方法与Silverlight应用程序共享业务逻辑。他们尝试使用RIA服务,但它只是没有成绩。

答案 2 :(得分:1)

您应该查看WCF数据服务,尤其是在.NET 4中。虽然您必须创建数据上下文类或类以公开您的实体以及公开IQueryable并实现IUpdatable,然后您可以利用WCF数据服务提供的支持框架以及数据有效负载的标准化协议(OData)。

在.NET 4和Visual Studio 2010中,WCF数据服务正变得越来越被接受,并且被Microsoft推动为Silverlight应用程序的良好数据访问工具。

我认为至少值得一试。在MSDN上有很多关于它的信息,虽然我不认为它在某些地方组织得很好。这是MSDN中有关使用内置反射提供程序滚动您自己的WCF数据服务的部分的link。 (该示例仅显示数据检索,因为它比数据更新/插入/删除简单得多,但文章中有关于如何实现IUpdatable的链接。)

通过WCF数据服务公开IQueryable应该非常快。 IUpdatable将花费更多时间(因为您需要为每个实体实现插入/更新/删除)。但是一旦你启动并运行(这不应该花费太长时间),你就可以调整安全设置,添加自定义服务方法,并非常容易地添加其他功能和/或实体。对于你所描述的内容来说,这是一个很好的框架。

我希望这会有所帮助。