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

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

【问题讨论】:

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


    【解决方案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 将花费更多时间(因为您需要为每个实体实现插入/更新/删除)。但是一旦你启动并运行它(应该不会花太长时间),你就可以调整安全设置,添加自定义服务方法,并很容易地添加额外的功能和/或实体。对于您所描述的内容,这是一个很好的框架。

        我希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2013-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-22
          • 2015-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多