在阅读之前,请知道我已阅读关于vanilla WCF,WCF Data Services和RIA Services之间差异的所有其他文章。我的问题特别是关于为什么RIA Services被认为是专门用于Silverlight的特殊类型的数据源,因为它似乎更有意义,因为它只需完成一项工作:作为REST界面背后的业务逻辑层。为什么使用“RIA Services Link”而不是仅仅是一个OData端点?
它看起来像VS2010,RIA服务的发布巩固了其作为坐着一个REST数据访问服务背后的商业逻辑层的立场 - 这似乎被新确认“揭露的OData端点”上域选项Visual Studio中的服务类模板,据我所知,它基本上可以为您的RIA服务确实做到WCFDS对于任意数据源所做的事情(我相信您之前可以这样做,但是添加此复选框会清楚地表明RIA服务可以被看作是一个包含业务逻辑的层,用于增强REST数据端点和/或将其约束到给定的一组查询,而不一定是端点本身)。因此,如果我有通过OData公开的商业逻辑的RIA服务,我可以从WCF客户端应用程序添加对OData服务的引用。在客户端上,我得到一个DataServiceContext派生类,它允许我在客户端上完成单元工作风格的工作。我可以从Silverlight应用程序做同样的事情,并得到看起来是相同的东西 - 一个DataServiceContext派生。
如果我在我的Silverlight应用程序中使用“RIA Service Link”来直接将应用程序绑定到RIA服务而不是添加服务引用,那么我得到的Visual Studio生成的代码似乎支持几乎相同的模式的工作,但使用不同风格的API。
既然如此:
- 什么是其中一个Silverlight应用程序是直接关系到RIA服务“RIA Services链接”的优势,而不是仅仅增加一个服务裁判的OData的端点可以被任何类型的客户端使用而不会产生紧密耦合?我被告知RIA的魔力在于代码生成,所以我想我正在试图理解RIA代码生成与“添加服务引用”代码生成的差异。
- 如果有优势,为什么这些优势专门针对Silverlight而不是WCF客户端应用程序?纯粹将RIA服务作为OData端点背后的一层来销售似乎有助于将OData进一步标准化并推动OData进一步发展成为任何类型客户端的通用类型端点 - “从ASP消费,从Silverlight消费,从WCF消费...”你可以获得几乎相同的体验,而且这是一个很棒的体验。“相反,我们将Silverlight直接绑定到RIA并提供了一组特殊的功能,而所有其他客户端都使用开放协议。