剖析 .Net 下的数据访问层技术(六)

原创 2004年05月09日 11:06:00

 

u     其它

Ø        ASTA

经常在Delphi下进行网络数据库应用开发或者曾经使用过Borland Midas技术的朋友,对ASTA应该不会陌生。

如果说基于ADO.NETO/R Mapping来实现DAL是少林、武当的正宗心法,那ASTA就有点明教“乾坤大挪移”的味道:将整个DAL中的Data Access几乎完全扔到了另一个地方(和打回原处稍有区别,但也算另一种挪移J)进行处理!

 

传统的DAL实现大都是这样的:

 

ASTA则另辟蹊径,额外加入了一个“中间层”:

      

一般来说,中间层的引入是为了提高灵活性,减少耦合度,

ASTA就是利用了这个特性设计出来的。

       上图的一个关键点就在于ASTA ClientASTA Server之间

的那个“网络连接”,ASTA技术正是利用了网络特性,间接地

屏蔽了不同数据库系统间的差别,使开发人员在设计DAL时完

全不用知道Database的存在!这种情况有点像浏览器,完全不

用知道HTML页面是来自于IIS还是Apache,只需要知道自己

是利用HTTP协议通过网络来获得HTML页面!

      

ASTA中,浏览器就是ASTA ClientHTML页面就是ASTA DataSet(与ADO.NET中的DataSet在格式上有区别,此处可以认为是另一种数据库无关的数据集合表示方式),而IISApache就是ASTA提供的不同的ASTA Server(目前支持大部分主流数据库系统,开发人员也可以撰写自己的ASTA Server),HTTP协议自然就是ASTA ClientASTA Server间的通信协议!

从技术上分析,ASTA架构的目的之一就是利用自己提供的协议来屏蔽不同数据库系统的网络通信协议,从而使客户端(DAL)完全摆脱在编写网络数据库应用时的通信难题!

(作者还记得,.NET出来前,每次在编写面向Internet SQL Server应用程序时,除了需要配置连接字符串,还要在客户端特别安装SQL Server Client Network Utility以配置Internet连接,不说SQL Server暴露端口引起的安全问题,就是这么一番折腾也让人够呛的J

 

ASTA下编写程序非常舒服,只要知道ASTA Server的地址和端口,再提供一定权限的用户名、口令(ASTA自带的认证系统,开发人员也可以撰写自己的Authentication/Authorization模块,甚至直接利用数据库系统提供的验证机制),立刻就能得到任何数据库的任何数据信息!而且,一旦数据库系统有所变动(如从SQL Server切换到Oracle,但不包括数据库结构的改动),客户端根本无须任何修改!

                                   ASTA技术不足处也是很明显的:由于引入了在某些情况下

(如一次返回数据量很大时)足以致命的“网络中间层”,使开

发人员在开发大型应用(尤其是面向Internet的企业级应用)时

需要特别小心,毕竟,舒服在某些时候是需要付出一定代价的!

      

       有兴趣的朋友不妨去这个网站看看:

       http://www.astatech.com

      

Ø        .NET Remoting / WebServices

原来不准备将.NET Remoting / WebServies拿出来凑热闹,毕竟,这两种技术不是为DAL度身定做的。

无奈,偏偏就是看到有朋友这么用过,后来细想,发现也颇有一些道理,就拿出来与大家一起参详参详。

其实,虽然微软大肆宣传XML WebServices,但就技术来看,其实只要论述.NET Remoting一种就可以了,XML WebServices无非就是在.NET Remoting中使用了HTTP + SOAP通信协议的一种特例而已。

 

.NET Remoting应用到DAL中可能出于两种目的:

(1)    希望实现跨平台数据访问,因为ADO.NET中的DataSet是可以被序列化的,通过RemotingWebServices可以在客户端恢复现场;

 

(2)    减轻服务器压力,增加系统灵活性。

这有点类似于上面的ASTA技术,只不过这里的协议

换成了.NET Remoting Protocal。但即使用这种方式,

还是和ASTA的灵活性有区别,毕竟,Remoting

求在客户端注册每一个DAL的访问接口,一旦接口

变化,接口必须重新注册!

                                  

                                所以,作者的建议是:尽量避免使用.NET Remoting

构建应用程序的DAL模块(如果是Business Logic Layer,则不

存在这个问题),除非真的是“迫不得已”(例如:必须在DAL

层实现分布式计算或者客户坚持使用.NET Remoting J)!

                                  

                                  

以下部分因时间限制,正在撰写中 !

l       我的方案(未完,撰写中……

u     综合现有的技术

Ø        DAL之上添加一个新的DAF LayerData Access Facade

n        使用DataSet / DataTable / DataView + Cache Management

n        使用ObjectSpaces / ECO + ADO.NET + Stored Procedure

Ø        ……

u     使用现成的框架

Ø        开源项目推荐使用OPF(国外)

Ø        商业产品推荐使用Grove(国内)

Ø        ……

u     设计自己的持久层

Ø        如果希望自己设计轮子,那么,最好的参考资料莫过于这篇文章:http://www.ambysoft.com/persistenceLayer.pdf

Ø        ……

 

l       小结(未完,撰写中……

l       参考(未完,撰写中……

 

 

特别说明:

“我的方案”已完成,请参考如下链接:

http://www.csdn.net/develop/Read_Article.asp?id=27542

 

 

作者简介:

本文作者张雪峰  微软(中国)有限公司 的咨询顾问。他目前在中国上海 顾问咨询部门工作,从事 .NET 技术的研究以及相关项目的开发。可以通过 xfzhang@microsoft.com 与他联系。

 

剖析 .Net 下的数据访问层技术

自从 .NET 真正走入开发人员那天起,“效率”两个字就一直成为众多程序员津津乐道的话题。无论是从开发模式(Cross Language)、系统框架(.NET Framework),还是各种使用方便的...
  • mlks_2008
  • mlks_2008
  • 2007年11月06日 23:56
  • 858

剖析 .Net 下的数据访问层技术

自从 .NET 真正走入开发人员那天起,“效率”两个字就一直成为众多程序员津津乐道的话题。无论是从开发模式(Cross Language)、系统框架(.NET Framework),还是各种使用方便的...
  • jianzi1943
  • jianzi1943
  • 2006年12月21日 09:43
  • 1141

剖析 .Net 下的数据访问层技术(三)

 u     O/R MappingO/R Mapping的全称是:Object Relational Mapping,主要目的是在传统RDBMS与OO Language之间建映射关系,从而使开发人员...
  • zhangxuefeng
  • zhangxuefeng
  • 2004年04月12日 13:02
  • 1470

剖析 .Net 下的数据访问层技术(二)

其它      结束ADO.NET剖析前,不得不提提DataReader与DataSet间的兄弟之争。      就作者所看过的资料,几乎所有的都建议实际情况具体分析,剩下很少很少的则全凭个人习惯决定...
  • zhangxuefeng
  • zhangxuefeng
  • 2004年04月12日 13:36
  • 1329

剖析 .Net 下的数据访问层技术(四)

 Ø        Microsoft ObjectSpaces这是一个在几年前就让众多.NET guy伸长脖子激动不已的技术。就作者来说,那个时候,只要一提起这个话题,一般都是在J2EE guy的嘲...
  • zhangxuefeng
  • zhangxuefeng
  • 2004年04月12日 13:02
  • 969

剖析 .Net 下的数据访问层技术(五)

 Ø        Borland ECO素以提供“多快好省”组件著称的Borland公司在微软发布ObjectSpaces之前率先推出了一套新的开发框架:ECO(Enterprise Core Ob...
  • zhangxuefeng
  • zhangxuefeng
  • 2004年04月12日 13:36
  • 1029

剖析 .Net 下的数据访问层技术(一)

 l       引言自从 .NET 真正走入开发人员那天起,“效率”两个字就一直成为众多程序员津津乐道的话题。无论是从开发模式(Cross Language)、系统框架(.NET Framework...
  • zhangxuefeng
  • zhangxuefeng
  • 2004年04月12日 13:02
  • 1593

.net中的数据访问层的封装

当年.net项目中自己封装的数据访问层,个人感觉使用非常方便
  • kevin_xf
  • kevin_xf
  • 2016年12月05日 15:53
  • 811

Asp.net mvc 数据访问层

理解了一些概念,本节开始尝试创建属于自己的数据访问层,说道数据访问层那必须有数据库咯(数据集合也算,此处以数据库为例),没有数据库就没有数据访问层。 1、先创建属于自己的数据库       打开已...
  • u013108485
  • u013108485
  • 2016年04月14日 16:19
  • 4941

.NET 数据访问架构指南(转)

 Alex Mackman, Chris Brooks, Steve Busby, 和 Ed Jezierski 微软公司 2001年10月 概述:本文提供了在多层.NET应用程序中实施基于ADO.N...
  • ycl111
  • ycl111
  • 2004年12月06日 13:07
  • 1198
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剖析 .Net 下的数据访问层技术(六)
举报原因:
原因补充:

(最多只允许输入30个字)