更强悍的Silverlight: WCF RIA Services

如果你安装了 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也提供了LinqToEntitiesDomainServiceLinqToSqlDomainService两个继承自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感兴趣可以参考以下资源:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是业余自学C/C++的

Mac部分按键失灵问题解决

35640
来自专栏*坤的Blog

KMS激活工具

43330
来自专栏FreeBuf

【漏洞预警】Discuz! 任意文件删除漏洞

Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的开源的社区论坛软件系统。采用 PHP 和 My...

26950
来自专栏python学习之旅

Python Django框架笔记(五):模型

20760
来自专栏程序员叨叨叨

【转】从零开始手敲次世代游戏引擎(二)

上一篇我们写了一个最基本的Hello Engine,并用Visual Studio的命令行工具,cl.exe进行了编译。

19320
来自专栏bboysoul

如何使用metasploit挖掘邮箱地址

打开metasploit ./msfconsole use gather/search_email_collector 显示配置选项 show opti...

14410
来自专栏racaljk

Core Erlang:Erlang的Core中间表示

随着erlang的不断发展,它的语法越来越复杂,不便于诸如分析器,调试器此类程序在源码层次直接进行解析,而CORE Erlang旨在为Erlang提供一个人类可...

11840
来自专栏磨磨谈

Ceph用户邮件列表Vol45-Issue3

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=af5e5...

13520
来自专栏皮振伟的专栏

[virt][clock]steal time技术分析

前言: 在《clocksource的管理和虚拟化》中,大概分析了kvm clock,tsc,hpet等clock source。其中尤其是kvm clock计算...

38960
来自专栏Jerry的SAP技术分享

在Windows 10 系统上启用Hyper V遇到的错误:0x800f0831

Hyper-V是微软的一款虚拟化技术,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。

21010

扫码关注云+社区

领取腾讯云代金券