我只是向自己介绍 Silverlight 3 和它的前身之间的基本区别。查看 RIA 服务中的域服务类,执行似乎相当简化。有人可以解释这与 Windows Communication Foundation 之间的基本区别吗?
域服务类是否在后台使用 WCF 或其他一些服务框架,或者这是全新的?
我只是向自己介绍 Silverlight 3 和它的前身之间的基本区别。查看 RIA 服务中的域服务类,执行似乎相当简化。有人可以解释这与 Windows Communication Foundation 之间的基本区别吗?
域服务类是否在后台使用 WCF 或其他一些服务框架,或者这是全新的?
我建议您阅读这篇博客文章,其中提到:
我们对 RIA 服务工作的思考确实源于几年前的 LINQ 项目。LINQ 将查询语义集成到语言(C#、VB 等)中,为处理数据提供通用抽象;该数据是否在内存中的 CLR 对象、XML、关系数据或其他任何东西中。借助 RIA 服务,我们通过提供一个规范的模型来扩展这种模式,用于在 LINQ 上公开您的域逻辑。我们将领域逻辑视为您的应用程序中非常特定于您的领域的那部分——这是您正在解决的特定业务问题。
因此,对于“域逻辑”而言,LINQ 对于数据而言,而 WCF 本质上只是一个服务提供者。
在传统的 N 层开发中,这意味着:
...您应该将 RIA 服务视为 ADO.NET 数据服务和 WCF 之上的更具感知力的层...我们还期望最终提供对底层 WCF 服务的所有功能和灵活性的完全访问,例如高度优化二进制序列化。
或者您也可以选择使用新的“RIA 服务模式”来:
...轻松构建 ASP.NET 应用程序,同时利用 RIA 服务的所有内置功能,例如数据验证、授权等。在 3 月预览版中,我们提供了一个 asp:DomainDataSource 控件,它可以非常轻松地实现 ASP.NET WebForms 访问您的域逻辑。在此之上构建的是 ASP.NET 动态数据的未来版本,它可以非常容易地根据您的域逻辑生成通用的标准 UI。
这一点意味着 RIA 服务可以:
另一个示例也值得查看Mix09:使用 Silverlight 3 构建惊人的业务应用程序。
在我写这篇文章时,我刚刚发现了微软的 .NET RIA 服务概述,它看起来解释了 RIA 服务背后的许多理性(并且可能比上面的一些更清楚:)
我们使用两者的组合。WCF 处理大容量数据,更适合二进制序列化,RIA 处理 CRUD 实体,因为代码的编写和维护速度要快得多。如果 RIA 支持二进制,我们将使用它而不是 WCF,但我很确定它在当前版本中不支持。
WCF 有更多的调试选项,就像在 RIA 中一样。域数据源更容易设置,但更难找出错误。在许多情况下,WCF 将用于创建一个互操作性通信系统,该系统使用 WSSE 标头安全性解除旧的 WSDL。