CSDN博客

img TomHornson

Data Access Tecnique and Data-Sensitive Control

发表于2004/12/30 18:30:00  1007人阅读

数据访问技术(DataAccessTecnique)和数据感知控件(Control)


                                                  TomHornson#(at)#hotmail.com
                                                       12/29/2004
于珞珈山


 


    无疑,十多年来,无论在什么平台上,数据应用系统在软件系统中一直占据很大的比例。所以,数据访问技术自然也备受关注。在我的阅历里,可以说出的相关技术有:
1、  Window平台:ODBCDAOADOADO.NET        2、  Java平台:JDBC

另外在J2EE平台下,目前,Java数据应用系统中常用的技术有:DAOO/R MappingDAO不属于数据访问技术(DataAccessTecnique),它只是对JDBC的一种包装,它使Java数据库编程更加有效率、清爽,也使得三层结构成为可能。DAO是一种Pattern。而O/R Mapping技术是可能出于OO思潮的影响,人们企图通过更自然的对象视图(Object View)来和数据库交互,使对象访问部分和OO系统的整体风格更加融合,包括在系统分析、设计等方面。O/R Mapping技术很多,比较常见的包括蹩脚的EntityBean、如日中天的HibernateJDOIBATIS等等。特别是HibernateJDO,还有尚未完形的EJB3.0,应该会成为将来的主流。O/R MappingJ2EE的影响应该说比较深远,它不但影响了系统的数据访问部分,甚至对系统的整体架构也产生了一定的影响,当然,这些主要说的是以数据(特别是RDBMS)应用为中心的J2EE系统。

MSdotNET平台上,也有O/R Mapping技术,我不是很清楚。听说过一个nHibernate


    事实上,这篇文章,我的目标不是数据访问技术,而是数据感知控件
(control),特别是用户Web开发的数据感知控件。



一、        Windows桌面应用中的数据感知控件

我想使用VCVBDelphi编过程的都知道数据感知控件吧。譬如VCListControlVBDataList控件等。
当然,这些控件的背后也没有什么魔力。你告诉它你需要连接的数据库、表、列等信息。在
Control加载的时候,
它利用提供的信息访问数据库,取出数据、填充到
control中,就是这样而已。数据感知控件可以在简单的数据库应用中,
减轻编程的负担。


二、    ASP
ASP
中,我们是怎样显示数据的?是怎样将数据更新到数据库的?

我们首先通过
ADO或者ODBC等数据访问技术取得数据,然后,使用HTML显示数
据。
我们通过
Request来取得需要更新的数据,然后通过ADO或者ODBC数据访问技术来
更新数据库。

这里,在ASP编程的时候,你有想过,为什么ASP中不能有Windows桌面应用那样的控件、甚至数据感知控件?
你是否也希望有那样的技术、那样的控件,这样,你的
ASP编程将变的更加简单、而且有效率。


三、        JSP

但从,最普通的编程方式来说,JSPASP,差别不大。但是,我想强调的是JSPTaglibJSP中的Taglib技术的初衷是什么或者说Taglib给我们带来了什么好处?我想,无非就是复用一些java逻辑代码、使页面变得更加清爽,尽量减少JSP页面的“污染”。


  个人觉的,Taglib的功能完全可以通过<%!   %>定义函数的形式来完成。函数这样的使用方式同样可以复用、可以使页面变的更加清爽。有人,告诉我,因为Taglib采用XML的形式,所以,很多XML编辑器通过plugin可以显示它。对这种说法,我持保留太多。因为,我一直不相信,Taglib使因为这个原因而引入JSP Spec的。我的另外一个想法,是Taglib的扩展性很强,这个想法目前还没有得到任何的证实。如果,说Taglib只是为了复用、美化页面,那么我说,Taglib真的可以说是JSP引入了的复杂而没有用的东西。Taglib也没有比ASP中那种使用函数编程的方式好,反而使编程更麻烦。

                 

四、        dotNET Control

在(二、ASP)部分,我们有一个美好的愿望:ASP可以有Windows桌面应用那样的控件、甚至数据感知控件吗?
很显然
dotNET中,你的愿望实现了。谈到这里,我们接触到本文的三个核心论题了。


4.1  dotNET
封装了c/s交互,带来的Web开发新的冲击

         我以前一直觉的,JSPASP编程的繁琐很大一个原因是Http是非持久连接的,导致,server需要不断使用Request等地从client端获取信息,验证信息等等,还需要使用Session来为用户维持长周期地会话。我觉的,这些东西,真的是做起来毫无意义、而又不得不作,工作量还相当地大。Java领域有Echo这样的项目,企图用Swing编程风格来编写WebApp。明明是Web开发,却又扯上Swing,这种做法真的有意义吗?或者说,是一种好的解决方案吗?我个人是嗤之以鼻的。

dotNET出来了,你基本只需要以Windows桌面应用的视角(View)来编程就可以了。这里的magic是什么?就是它封装了client-server的信息交互、会话,而且封装的在目前能够看到的技术中,个人感觉是最完美的。

 

4.2  JSPTaglibdotNETWebControl

Taglib时代,我就思索过,为什么不可以为Taglib提供VisulEdit,并且如Windows桌面应用那样提供数据感知能力来简化开发。譬如,display taglib,我看过的一个非常好的库,如果,为它提供VisualEdit、并且提供数据感知能力,用它来快速开发应该说相当的不错。但是,为什么,我没有看到这一切的发生?

dotNET出来了,我看到了MS提供的WebControl。在我的眼里,它怎么会Taglib那么神似?但是,它是可以Visual的、可以Edit的。对于小型项目、对于快速开发,无疑,它具有绝对的竞争力。

 

4.3  dotNET Server-Side-Control的缺陷

         MS的技术,包括dotNET,比较讲求开发的简易、快速。这是MS多年的风格。所以,Server-Side-Control的设计一定程度上,受这种惯性思维的影响。我目前,能够提出的问题就是:它的数据感应控件,只能通过譬如数据库、表、列等信息来感知数据。不支持ObjectCollection等的感应,譬如ArrayList Instance。而,我知道的Java Display Taglib是可以同时感知ResultSetCollection的。不能感应ObjectCollection,那么体系结构分层的实施就会受阻。因为,你将表示层和数据库糊在一起了。


 

五、        寄希望于JSF

听说,JSF提供Visualc/s交互等的封装,和ASP.NET很像。还没有学习这东西,希

望能够给我们带来惊喜。

 

六、        JDBCADO.NETO/R Mapping

不用说,ADO.NET是新生代,不是JDBC能够比的,不过,JavavOpenSource社区的力

量,不能低估。既然,在J2EE领域,给你一个ADO.NET,我想你还是会选择Hibernate之流的O/R Mapping Tool来做开发的。



注:这篇文章的想法,基本只是一个大概的思路。因为,我对dotNET的了解比较有限。还有,到底怎样来开发TaglibVisualEdit?dotNETServerSideControl怎样才能够支持感应ListCollection等?这样做,意味着其它什么样的连带的问题会发生?即使实现了,到底意义大到什么程度?这些都还没有深入的思考和探讨。以后,有时间再说了。

 


修订记录:
第一次:12/29/2004



 

阅读全文
0 0

相关文章推荐

img
取 消
img