【问题标题】:RIA Services versus WCF ServicesRIA 服务与 WCF 服务
【发布时间】:2009-10-29 23:46:44
【问题描述】:

我正在重写一个 LOB 应用程序,它的架构是这样的:

Silverlight && Windows Mobile -> WCF -> 实体框架 -> 数据库。

移动应用程序应该能够像 silverlight 应用程序那样做某些事情。在这里使用 RIA 服务可以获得什么好处? RIA 服务相对于 WCF 的优缺点是什么?

【问题讨论】:

    标签: silverlight wcf wcf-ria-services


    【解决方案1】:

    .NET RIA 服务是为在浏览器中运行的 Silverlight 创建的。 Silverlight 正在运行一个特殊版本的 .NET 框架,并且在 N 层应用程序中,Silverlight 无法与服务器端共享程序集。通过使用一些智能代码生成,.NET RIA 服务使开发人员几乎看不到这一差距。类似于域类的类是在客户端生成的代码,并且还提供了在客户端和服务器之间来回移动对象的方法。

    您可能能够从 Windows Mobile 调用 .NET RIA 服务,但我认为这并不容易,目前您实际上可能必须对在线发送的内容进行逆向工程(使用 JSON) .另一方面,WCF 具有更广泛的范围,但不像 .NET RIA 服务那样支持 Silverlight 开发。

    如果您正在编写仅 Silverlight 的 N 层应用程序,.NET RIA 服务非常强大。然而,如果 Silverlight 只是多个客户端之一,WCF 可能是更好的选择。

    请注意 .NET RIA 服务尚未发布,但预览版可供下载。

    【讨论】:

    • 这样的架构会运作良好吗? 1) silverlight -> RIA 服务 -> WCF -> 实体框架 2) 移动应用 -> WCF -> 实体框架
    • 具有编辑权限的人能否更改此答案以反映 RIA 的当前状态(现在可用)。挑剔的问题,我知道,但 StackOverflow 最好的一点是能够阅读仍然相关的旧答案:)
    【解决方案2】:

    WCF RIA 服务为您在使用 Silverlight 的 WCF 时遇到的挑战引入了几种解决方案。例如,使用 EntityQuery<T> 异步加载查询比 WCF 提供的 Begin..End 解决方案要容易得多。此外,RIA 提供来自您的客户的集成更改跟踪,允许将多个更改作为一个更改集提交或拒绝。 RIA 会将所有这些更改捆绑到一个请求中,但是从您的域服务中,它的行为就像是单独的调用一样。作为一名长期的 WCF 开发人员,我可以告诉您,这很容易。

    【讨论】:

      【解决方案3】:

      创建 Ria 服务只是为了与 Silverlight 一起使用。它们基本上是可供 Silverlight 使用的标准“包”。优点是您无需编写代码即可拥有很多服务,即:

      1. 支持数据注释
      2. 支持会员提供者和登录
      3. 支持转移到 silverlight 服务器端生成异常。 silverlight 有一个难点,就是很难通过 FaultContract 进行异常的正常错误传递。关键是浏览器无法处理所有错误代码。 Ria 服务通过一个技巧解决了这个问题

      Ria 所做的所有事情都可以使用 WCF 和其他可用软件,特别是使用 Wcf 数据服务来完成。例如,对于数据注释,我发现this library 比 Ria 服务做得更好,对成员资格的支持只需要激活 WCF 服务的现有成员资格端点,最后通过编写 WCF 行为可以轻松解决异常问题。代码可在此处获得:http://www.silverlightshow.net/Storage/10Tips.zip 关键是,使用 Ria Service,您只需单击鼠标即可完成所有这些!另一方面,Ria 服务真的很难定制......所以如果您不喜欢他们提供的标准解决方案,您根本无法使用它们

      【讨论】:

      • 您可以将 RIA 服务用作普通 WCF 服务,也可以用作 OData 和 JSON 端点
      【解决方案4】:

      RIA 服务建立在 WCF 之上。随着 PDC 的发布,这将更加明显。 RIA Services 简化了客户端编程模型,使其与您的服务器端 DomainService 和实体非常匹配。

      【讨论】:

        【解决方案5】:

        不管答案:

        RIA 服务建立在 WCF 之上。 随着 PDC 的发布,这将是 更明显。 RIA 服务 简化客户端编程 模型,使其非常匹配 使用您的服务器端 DomainService 和实体。

        对我来说(我猜对主题作者来说)除了访问 DomainService(与 WCF 提供的相同)之外,还不清楚 RIA 服务还提供什么?

        谢谢。

        【讨论】:

          【解决方案6】:

          在正式发布 WCF RIA 服务之前,我认为这个问题没有明确的答案。在当前的 Beta 版中(对于 VS 2008,SL 3),RIA 服务不会隐藏服务调用的异步性质;你仍然需要提供一个回调方法。此外,RIA 服务当前不支持用户定义的类(或用户定义的类的集合)作为 RIA 服务调用的参数或返回值。通过 RIA 服务提供不可编辑的实体类时,我也遇到了麻烦。 (错误说实体集合不可编辑。是的,这实际上是我想要的......)

          此时,我需要回过头来重新审视一下如何让普通的旧 WCF 正常工作。考虑到我们正在开发的应用程序的大小,这并不是那么简单,但它似乎是可行的解决方案,直到 MS 解决了 RIA 服务的一些当前问题。

          【讨论】:

            【解决方案7】:

            .NET RIA Services 在 2009 年 11 月举行的 PDC 上被命名为 WCF RIA Services。由于它是建立在 WCF 之上的,因此得名 WCF RIA Services

            您需要使用 WCF RIA 服务来构建涉及数据库的 N 层应用程序(或任何需要沿层携带的信息)。

            【讨论】:

            • 您不需要使用 WCF RIA 服务来构建 N 层应用程序。普通的旧 WCF 工作,也有 WCF 数据服务的选项。在它们之间进行选择有点困难。
            • 第二 - RIA 是使用 Silverlight 构建 N 层应用程序的一种方法。
            猜你喜欢
            • 2012-01-14
            • 2011-01-29
            • 1970-01-01
            • 2011-04-22
            • 2011-02-01
            • 2011-03-26
            • 1970-01-01
            • 1970-01-01
            • 2011-03-14
            相关资源
            最近更新 更多