如果你安装了 VS 2010 的 Silverlight 4 开发工具,会发现一项重量级的安装项目,WCF RIA Services,用于Silverlight数据访问服务,比WCF和ADO.NET Data Service和Web服务都要简单.
在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现。创建拥有良好用户体验的RIA应用,你需要客户端和服务端有着相同的业务规则,因此在客户端和服务端保证同步的中间层变得至关重要。WCF RIA Services可以让你在中间层用.NET框架编写逻辑应用,下面将讲述如何使用Domain Services以共享代码、数据实体来创建中间层。
DomainService类是所有服务端domain services类的基类,另外WCF RIA Services也提供了LinqToEntitiesDomainService和LinqToSqlDomainService两个继承自DomainService的抽象类。
为什么WCF RIA Service 对于 Silverlight 如此重要,最主要的原因在于,Silverlight 是一种客户端执行的环境,它无法如同 ASP.NET一样,直接与后端数据源进行沟通,数据存读取和保存全都必须跨越网络,我们就必须使用N-tier架构才能让 Silverlight 顺利的存取远程数据,这是一种很好的实践,在技术层面让开发者遵守现代软件开发的最佳实践,但是对于小项目来说并不是一项简单的事,微软一贯的作风就是为开发者提供开发者傻瓜式的开发模式,WCF RIA Services 让整个Silverlight 平台能够拥有如同 Web Form 或是 Win Form 一般同等级的数据库应用程序开发能力。
WCF RIA Service 让开发多层式架构的过程就如同传统 2 层式架构应用程序一般自然。因为 WCF RIA Service 的导入,让这第 4 版的 Silverlight 足以成为相关技术发展的一个重大里程碑,而这也是我们跳过 Silverlight 2 与 Silverlight 3,全心等待 Silverlight 4 来临最重要的原因之一。
在 Silverlight 3,我们通过WCF 或是ADO.NET Data Service 来实践所需的功能,WCF RIA Service 则是完全为了解决这一方面的问题而发展出来的相关服务,也是基于WCF服务,WCF支持各种通讯协议,目前WCF RIA Service只使用HTTP的绑定,而且Silverlight 4支持tcp绑定,参见InfoQ Silverlight 4中的高速通信,对于企业业务系统来说我会选择tcp的绑定。当然这只是beta版本,之后的版本肯定会改变,WCF RIA Services不仅仅是支持Silverlight,将来还会支持asp.net/ajax等等。
我们知道WCF 使用EndPoint(Address, Binding 和 Contract),可以通过配置文件和编程方式进行配置,WCF RIA Service默认使用自己的ServiceHost,叫DomainServiceHost,DomainServiceHost 通过编程方式添加了三种EndPoint,用于REST接口的WebHttpBinding, BasicHttpBinding 和 BinaryHttpBinding,所有的绑定都设置了MaxReceivedMessageSize 为 ”2147483647”。缺省的Address的三种Binding如下:
绑定 | Address | 说明 |
WebHttpBinding | baseAddress | REST with JSON Endpoint |
BasicHttpBinding | baseAddress” + “/soap“ | SOAP with XML Endpoint |
BinaryHttpBinding | baseAddress” + “/binary” | SOAP with Binary Endpoint |
基于WCF的高度灵活性,可以自定义DomainServiceHost的来更改相关的配置来满足自己的需要,如果这些是微软来做的话会更加有影响力。期望WCF RIA Service能够继承WCF的灵活性为我们的提供强大的解决方案。
如果你对WCF RIA Service感兴趣可以参考以下资源:
-
WCF RIA Services Code Gallery
-
WCF RIA Services
-
Building N-Tier business applications with .NET RIA Services – Part I
-
Building N-Tier business applications with WCF RIA Services – Part II
-
WCF NET.TCP Protocol in Silverlight 4
-
http://weblogs.asp.net/fredriknormen/default.aspx
-
Understanding the WCF in ‘WCF RIA Services
-
Silverlight 4 WCF RIA Services LOB Application Hands-On Lab
-
Using WCF RIA Services with your POCO, Part 1: Creating a WCF RIA Service Library
Using WCF RIA Services with your POCO, Part 2: Creating a Simple Domain Service
Using WCF RIA Services with your POCO, Part 3: Calling the Domain Service form a Silverlight Client
Using WCF RIA Services with your POCO, Part 4: Returning a Simple POCO from RIA
Using WCF RIA Services with your POCO, Part 5: Returning a POCO in another Assembly from the Domain Service -
http://blogs.msdn.com/brada/archive/2010/03/16/silverlight-4-ria-services-ready-for-business-updating-data-in-the-client.aspx