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

Posted

技术标签:

【中文标题】将 .NET 类库(主要定义 CRUD 操作)公开为服务【英文标题】:Exposing a .NET class library (which primarily defines CRUD operations) as a service 【发布时间】:2011-03-15 05:06:10 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

保安,你想让任何人随时拨打图书馆的任何电话吗? 大多数库都假定它们是直接调用的,而不是通过服务调用的(请参阅fallacies of enterprise development)。 WCF 默认是无状态的:您需要弄清楚如何管理库假定的任何状态(您将不再拥有单个客户端)。 我提到了安全性吗?

【讨论】:

【参考方案2】:

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

如果你的课堂上有实际的逻辑,那么你就有麻烦了。没有与 Silverlight 应用程序共享业务逻辑的好方法。他们尝试使用 RIA 服务,但效果不佳。

【讨论】:

【参考方案3】:

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

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

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

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

我希望这会有所帮助。

【讨论】:

以上是关于将 .NET 类库(主要定义 CRUD 操作)公开为服务的主要内容,如果未能解决你的问题,请参考以下文章

在 VB6 中通过 COM 处理在 .NET 类上公开的事件

探索Rx的主要接口

fastadmin 一键生成CRUD-特殊字符-关联字段

为 dotnet core asp.net 运行 CRUD 脚手架时出错

EF的CRUD

Excel类库