WCF和RIA服务域服务类之间有什么区别?

14

我正在介绍 Silverlight 3 和它的前身之间的基本区别。查看 RIA 服务中的 Domain Service Class,执行似乎简化了不少。请问有人可以解释一下这个和 Windows Communication Foundation 的基本区别吗?

Domain Service Class 是否使用 WCF 或其他后台服务框架,还是从头开始新建的呢?

3个回答

17

我建议您阅读这篇博客文章,其中提到:

我们对RIA Services的思考实际上源自几年前的LINQ项目。LINQ将查询语义集成到语言(C#,VB等)中,提供了一种通用的抽象来处理数据;无论这些数据是在内存CLR对象、XML、关系型数据还是其他任何东西中。通过RIA Services,我们通过为LINQ提供一个规范模型来扩展这种模式。我们认为领域逻辑是您应用程序的那部分,它非常特定于您的领域-也就是您正在解决的特定业务问题。

因此,它对于“领域逻辑”就像LINQ对于数据一样,而WCF本质上只是一个服务提供者。

在传统的N-Tier开发中,这意味着:

…您应该将RIA服务视为ADO.NET数据服务和WCF上更敏感的层面……我们还希望最终提供对底层WCF服务的所有强大灵活性的完全访问,例如高度优化的二进制序列化。

或者您也可以选择使用新的“RIA服务模式”来:

在利用RIA服务的内置功能(如数据验证、授权等)的同时轻松构建ASP.NET应用程序。在三月份的预览版中,我们提供了一个asp:DomainDataSource控件,可以非常容易地访问您的域逻辑。在此基础上,还有一个未来版本的ASP.NET Dynamic Data,它可以根据您的域逻辑非常容易地生成通用的标准UI。这意味着RIA服务可以:1.位于WCF之上(实质上是将WCF服务包装为客户端应用程序进行使用)。2.使用替代数据源(例如ADO.NET Entity Data Model/Entity Framework,如Building A Data-Driven Expense App with Silverlight 3所述)替换WCF层。还值得一提的是Mix09:使用Silverlight 3构建惊人的业务应用程序,这是另一个例子。当我写这篇文章时,我刚刚发现Microsoft的.NET RIA Services概述,它看起来解释了RIA服务背后的很多原理(可能比上面的某些内容更清晰明了:)

很棒的回答!目前我相信RIA服务始终位于WCF之上(“使用SL3构建数据驱动的费用应用程序”文章没有说明其他情况)。您能否更新您的帖子,提供一个具体的示例,显示RIA服务不使用WCF? - James Cadd
我没有详细阅读数据驱动文章,但没有看到其中使用WCF的任何用途(只是简单提及?)。 此外,如果您查看Microsoft概述pdf的第114页,“使用ASP.NET DomainDataSource”的示例基本上只使用RIA + Linq 2 Sql。 - mundeep
Linq to Sql是一种服务器端技术 - 我认为这篇文章讨论的是ASP.NET,而不是Silverlight。 - James Cadd
从我所看到的一点来看,通过将“域服务类”添加到项目中,您可以从Silverlight应用程序访问服务器端项目的“Web服务”接口...但我没有在web.config中看到任何WCF钩子。这些服务的同步“感觉”特别有趣。 - Feckmore

2

我们使用两者的组合。对于更适合二进制序列化的大量数据,我们使用WCF,而对于CRUD实体,我们使用RIA,因为代码编写和维护速度更快。如果RIA支持二进制,我们将使用它代替WCF,但我相信当前版本中它不支持。


1

相比RIA,WCF具有更多的调试选项。域数据源设置更容易,但更难找出错误。 在许多情况下,WCF将用于创建一个互操作通信系统,该系统使用WSSE头安全性取代了较旧的WSDL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接