Windows平台上数据访问技术飞速发展,在现在的项目中该如何选择合适的技术且该技术能有比较长的持续周期呢? 通过查询和汇总了网上的一些资料,希望能够为我们在开发中架构选型提供帮助。
发展方向
微软官方的一个说明。
http://www.infoq.com/cn/news/2010/07/Top-10-Questions-on-Data
http://msdn.microsoft.com/en-us/data/bb525059.aspx
微软宣称“会继续开发这些技术”,但不会继续使用“Oslo”这个代号,而是改名为SQL Server Modeling CTP。由于与SQL相关技术的紧密联系,特别是Quadrant(译注:用来查看和修改数据库中数据的工具)和Repository(现在叫做SQL Server Modeling Services),这些技术将来会被集成到SQL Server中。
微软还解释了SQL Server Modeling和.NET之间的联系:它使得创建模型驱动的应用程序更加容易。
ADO.NET Data Services和.NET RIA Services ADO.NET Data Services变成了WCF Data Services,而.NET RIA Services则变成了WCF RIA Services,目的是使WCF成为创建服务和多层应用的一站式框架,ADO.NET Data Services和.NET RIA Services在此方面完善了WCF。
WCF Data Services / WCF RIA Services比较
http://jack.ukleja.com/wcf-data-services-vs-wcf-ria-services/
WCF Data Services vs WCF RIA Services
WCF RIA Services
http://www.silverlight.net/getstarted/riaservices/
http://www.fydir.com/Home/article/160/1.aspx?RouteExistingFiles=False&Count=26
Silverlight要操作数据库,本身却不支持ADO.NET(无法引入System.Data.SqlClient),需要Web服务(WCF+LINQ),用Web服务挺麻烦的,就有了个简化版ADO.NET数据服务(类似WCF,但简单了许多),而ADO.NET数据服务在Silverlight上还是比较繁琐,于是就有了.NET RIA Services -- 更简化版的WCF RIA Services
在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现。创建拥有良好用户体验的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 Data Services
http://msdn.microsoft.com/en-us/library/cc668792.aspx
开放数据协议(OData)是一个查询和更新数据的Web协议。OData是基于诸如HTTP和AtomPub的国际标准创建的,它提供了一个跨平台的数据通信的方案。OData应用了web技术如HTTP、Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务和存储的信息访问。SharePoint 2010, SQL Server 2008 R2, PowerPivot, Windows Azure Table Storage, 和第三方的产品像 IBM’s WebSphere eXtreme Scale都使用OData。
首先,WCF Data Services是WCF服务,所以你可以使用所有现有的WCF知识。其次,WCF Data Services已经实现了OData拓扑,于是你可以致力于你的数据格式在你的程序中的表示,而不是AtomPub/JSON这些真正在网络上传递的数据格式。再有,WCF Data Services致力于数据传输,而不是数据存储。你的数据可以存放在任何位置:本地的数据库,云端的数据库,外部的web services,xml文件,等等。无论数据是怎么来的,你都可以用同样的方式来发布/使用它们。
http://zh.wikipedia.org/zh-cn/WCF_Data_Services
WCF Data Services,旧称ADO.NET Data Services Framework(代号Astoria,以下简称WCF DS)是基于 ADO.NET Entity Framework 上的一个简单数据供应服务 (Data Provisioning Services),也是微软的 REST (Representational state transfer) 的解决方案之一。特别为 AJAX,Silverlight以及Mashup应用程序提供数据服务所设计。
Entity FrameWork
Ado.net基础上抽象的基础功能,为WCF ** Services提供支持。
RoadMap
相对而言,EF比linq to sql提供了更高层次的抽象和功能
官方建议最好使用EF
MSDN和参考
http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx
A primary goal of the upcoming version of ADO.NET is to raise the level of abstraction for data programming, thus helping to eliminate the impedance mismatch between data models and between languages that application developers would otherwise have to deal with. Two innovations that make this move possible are Language-Integrated Query and the ADO.NET Entity Framework. The Entity Framework exists as a new part of the ADO.NET family of technologies. ADO.NET will LINQ-enable many data access components: LINQ to SQL, LINQ to DataSet and LINQ to Entities.
http://www.cnblogs.com/snowdream/tag/ADO.NET+Entity+Framework/