【发布时间】:2010-06-28 21:03:00
【问题描述】:
在阅读之前,请注意我已经阅读了所有其他关于 vanilla WCF、WCF 数据服务和 RIA 服务之间区别的帖子。我的问题特别是关于为什么 RIA 服务被视为一种专门用于 Silverlight 的特殊数据源,而让它完成一项工作似乎更有意义:充当 REST 接口后面的业务逻辑层。
看起来随着 VS2010 的发布,RIA Services 巩固了其作为位于 REST 数据访问服务后面的业务逻辑层的立场 - 这似乎通过域服务上的新“公开 OData 端点”选项得到证实Visual Studio 中的类模板,据我所知,它对您的 RIA 服务的作用与 WCFDS 对任意数据源的作用完全相同(我相信您以前可以这样做,但是添加此复选框可以清楚地表明 RIA服务可以被视为一个包含业务逻辑的层,用于增强 REST 数据端点和/或将其约束到给定的一组查询,而不一定是端点本身。
因此,如果我有一个通过 OData 公开的具有业务逻辑的 RIA 服务,我可以从 WCF 客户端应用程序添加对 OData 服务的引用。在客户端,我得到了一个 DataServiceContext 派生类,它可以让我在客户端上进行工作单元样式的工作。我可以从 Silverlight 应用程序中执行相同的操作,并获得看似相同的内容 - DataServiceContext 派生项。
如果我在我的 Silverlight 应用程序中使用“RIA 服务链接”直接将应用程序绑定到 RIA 服务而不是添加服务引用,我会得到由 Visual Studio 生成的代码,它似乎支持几乎相同的模式工作,但使用不同风格的 API。
既然如此:
- “RIA 服务链接”的优点是什么紧耦合?有人告诉我 RIA 的魔力在于代码生成,所以我想我想了解 RIA 代码生成与“添加服务引用”代码生成有何不同。
- 如果有优势,为什么这些优势专门提供给 Silverlight 而不是 WCF 客户端应用程序?纯粹将 RIA 服务作为 OData 端点后面的一个层来销售似乎有助于标准化和进一步推动 OData,使其成为任何类型客户端的通用端点类型——“从 ASP 消费,从 Silverlight 消费,从 WCF 消费……您获得几乎相同的体验,这是一次很棒的体验。”相反,我们将 Silverlight 直接绑定到具有一组特殊功能的 RIA,以及使用开放协议的所有其他客户端。
【问题讨论】:
标签: silverlight silverlight-4.0 wcf-ria-services wcf-data-services