发信人: leisang(我自飘零)
整理人: dongbao(2002-04-19 16:48:56), 站内信件
|
数据环境对象模型在Web数据库网页开发中的妙用
漫话Web网站应用开发技术之面向对象
往事还会再提……
记得大学教我们“汇编语言”课的老师长得特象葛优,说话的动作也有几分神似,再加上他深厚的汇编功底,他竟把看似单调枯燥的汇编语言讲得别提有多幽默风趣了。
因此,他成了我们最崇敬的老师之一。但后来,我听一个留校的师弟说:“他只是汇编厉害。”
94年,我跟着一擅用Borland C++3.1for dos编制C语言程序的高手同事,用
PCTOOL5.0查看研究了UCDOS3.0码表文件的机器码,自编了一个类似UCDOS的汉字系统。当我们正查阅C库函数中图形方式的象素控制函数,准备完善我们的汉字系统的图形界面时,市面上出现了Borland C++4.0。
Borland C++4.0带来一个崭新的编程世界:你必须理解窗口,事件,类,对象等时髦的概念才能自如地使用它。而这之前,我们大都是在BC++3.1强大的集成化环境下编制仅仅是C语言文本方式的应用程序。
就象我们的前辈迷恋汇编的中断调用一样,我们这代科班出身的程序员对C语言的结构化编程思想也有种说不出的依恋之情。我们甚至宁愿自己编制排序函数也不愿直接调用库函数中已有的快速排序函数。我们常常从一行一行地编写程序代码中获得一种快感,这种快感可以使我们把打电子游戏的时间用来一步一步地跟踪调试代码,看着程序一步一步地按着自己意愿行进,一个个的逻辑bug被排除,而满足一种指挥感并逐渐实现一种成就感。
所以BC++4.0引入的事件激发概念完全打破了我们顺序流程编程的思维惯性。而仅填对象的几个属性值就能很容易地实现我们要花很多精力编制许多函数才能实现的能大能小能开能闭能滚动能移动并包括许多菜单的类window3.1窗口也让我们非常沮丧和难于接受----它是如何一步一步地实现的呢?
这些困惑一直缠绕着我们很长一段时间以至我们一直愚蠢固执地仍使用printf函数而迟迟不愿改进到cout方法。
我想当时我们的这种做法就象当年我的老师一样,姑且称之为程序员的“代码情结”
吧。
但面向对象、图形化开发软件的潮流汹涌澎湃,不可逆转。
网坛偏多风雨……
小雨来得正是时候----CGI
就在编程语言从第三代(结构化编程)向第四代(面向对象和可视化编程)方向的进化带给软件工程师们的巨大震撼和惊喜,逼得顽固的“代码情结”者们慢慢开始习惯可视化、类及对象等的概念时,Internet的突然火暴,让Web站点的制作者们无奈中改装了结构化编程时代的代表C语言,仓促推出CGI来应付日益复杂的Web服务器上的应用软件开发。然而CGI从编程思想方法上来说,只是第四代向第三代的“返祖”。
为什么这么说呢?有必要回顾一下Internet应用技术的发展历史。
Internet的飞速发展有赖于WWW技术的广泛应用,而WWW的灵魂就是HTML语言。HTML只是一种编排网页显示格式的标志性语言而不是程序开发语言。所以,
Frontpage2000及Dreamwaver所擅长的大都是些美工工具的活路。而早期的
JavaScript语言也只是在浏览器端(客户端)做些动态效果的小打小闹。Java语言虽然作为最早的网站开发语言曾风靡一时,但其为了遵守其跨平台诺言而限制了自身的性能。另外,在网速不高的今天,下载运行奇慢的Java小程序无疑是在已被折磨得失去耐性的用户心头上火上浇油。
CGI乘虚而入。它能在服务器端(Web网站端)编制动态网页,大大节省了手工编写静态网页的工作量。由于是在服务器端编程,所以它还可以调用服务器端的各种资源。
但CGI必须为每个连接建立进程而耗费宝贵的服务器CPU和内存资源,另外,在数据库连接和操作方面的复杂性也让人望而却步,因此有人说:从编程的角度来看,CGI的实质就是C语言,毫无新技术可言。只不过它把原来从屏幕或文件接受输入改为从浏览器接受输入;原来输出到打印机、屏幕或文件改到输出到网络上即浏览器罢了。所以,在面向对象开发技术已经成熟的今天,用CGI开发网站应用程序是编程思想和方法的倒退,只是一种应急之举、权宜之计。
在雨中,我吻过你----纯ASP脚本
微软致力于改进CGI,于97年推出了具有划时代意义的ASP(Active Server
Page),使网页编程朝着面向对象的方向跨了一大步。准确地说,ASP是一个方便服务器端网页程序开发的对象模型,包含了Request、Response、Server、
Application、Session五个基本对象,采用流行的VBScript、JavaScript作为基本的脚本编程语言。它除了把CGI接口对象化,使得解析浏览器传来的数据更容易外,最伟大的功绩就是引入了方便存取Web数据库的ADO对象群。
数据库在Web网站应用程序开发中的地位越来越重要,而ADO就是微软专为适应Web数据库存取而设计的。它使用户对数据库的连接和操作变得非常的简单容易,特别是其中的Recordset对象更是让人得心应手。
另外,原来我们用CGI或API在应用程序中集成服务器端的逻辑时,不得不用与网页开发过程不同的方法在服务器上生成一个可执行的应用程序,但ASP却可把HTML和服务器中的脚本代码合并起来,按照与开发网页相同的过程,创建动态、高效的交互式Web页。这一特性深受小型网站开发者和个人ASP爱好者的欢迎。“网易”虚拟社区ASP讨论区的内容大都涉及于此。我个人把这类方法取名为“纯ASP脚本法”,但这种方法的实质还是CGI的结构化编程思想,只不过在程序中调用了几个对象而已。
其实ASP还有一个非常厉害的特性:可以使用ActiveX对象。也就是说,除了ASP本身提供的对象外,凡是Windows环境下的ActiveX对象(包括第三方开发的)也都是ASP网页制作中可以引用的系统资源。ADO就是其中之一。关于这方面问题的讨论可去“中国ASP联盟”(http://www.chinaasp.com),但也就仅此而已。
雨夜的浪漫----Visual InterDev6.0
如今,虽然微软陷入招人怨恨和惨遭支解的窘境,但作为世界上最大、最成功的软件公司,它所遵循的方便易用性原则和其自身的技术先进性,使它一直领导着软件业的发展方向,吸引着众多的追随者。ASP就是它又一成功的杰作,而于98年秋推出的Visual InterDev6.0作为专业的网站开发工具,在大家熟悉的ASP对象模型的基础之上又提出了Document Object Model(文档对象模型,简称DOM)、Scripting
Object Model(脚本对象模型,简称SOM)以及Data Environment Object Model
(数据环境对象模型,简称DEOM)。另外,它还提供了一个把各种创建Web应用程序的技术融合在一起的集成化开发环境,提出为对象间通信提供公用方法的COM
(Component Object Model组件对象模型)/DCOM(Distributed Component
Object Model分布式组件对象模型),力图把网站的编程方法也纳入以Visual C++和Visual Basic为代表的第四代面向对象编程以及可视化编程体系中。
VI6最精彩的地方我以为有以下几个方面:
一、脚本对象模型(Scripting Object Model)。
Scripting Object Model定义了一组对象,我们可以使用这些对象的事件、属性以及方法更加方便而且快速地在其ASP应用程序中编写脚本程序。Scripting Object Model对事件进行了抽象,这样我们就可以用一种面向对象的方式编写客户端或服务器端脚本,而不必使用标准的HTML方式编写脚本。
二、可视化编程。
其实可视化编程并非VI6独有,只是它相对于“纯ASP脚本编程”高效了许多,比如:
用Query Designer可视化地设计SQL语句。不知从何时起,微软的软件都带有Visual字头,因为“可视化”是现代开发工具的共同特点。君不见,流行的VB、VC++、
PowerBuilder、C++Builder等等哪一样不是可视化的。
三、设计时控件(Design-Time Control)。
它是一个激动人心的新概念,是专门开发用于Web设计中的一组全新的特殊类型的ActiveX控件。它最显著的特点就是在应用程序运行时,控件不会导致额外的内存开销。因为控件的属性和特点信息都存放在Web页的文档环境中,当应用程序运行时,通过控件中的一些特殊指令展开成运行时文本,从而指导Web页如何展开及如何动作。
四、网页对象概念。
传统的网页对象是建立在 Document Object Model(文挡对象模型)基础之上的,是专给客户端的浏览器设计的,它所有功能的实现只能在一张单独的网页内打转。当越来越多的应用在服务器端完成的时候,一种新的基于服务器端的网页对象思想被微软提了出来。它把网站内所有的ASP或HTML网页通过用户指定而看成一个一个的网页对象。如果用户在其网页中的服务器端脚本中组织了一些子程序和函数,那么用户就可以把这些子程序以及函数称为该网页对象的方法。这样,某网页不必传送隐含变量或者查询字符串至另外一个网页就可以十分便利地执行该页面中的特殊脚本了;用户还能定义网页对象属性(变量)的生存期;能直接在浏览器调用服务器端某网页对象的方法等等。
当然VI6为Web开发者提供的一个能够支持现今所有Web技术的集成式开发环境也是其一个非常值得骄傲的特点。另外,RDS对象、DHTML的数据绑定特性、DEOM对象模型等等新技术无不独步天下;其它如强大的集成调试功能、小组开发(隔离开发者工作模式)以及与SourceSafe源代码控制产品的集成等等,因篇幅关系,不再赘述(参见http://www.microsoft.com/vinterdev)。
可见,可视化的面向对象技术与构建靓丽网页的HTML语言在当今的网站应用开发中,关系越来越密切,如雨中翩翩起舞的恋人,相携相依,交相辉映。
风中雨中,我们有梦----Windows DNA
也许最让微软得意的还不是上述那些琳琅满目的新技术,而是一个正在逐步创建和完善的美丽新世界:Windows DNA!
微软提出的DNA概念是借助生命科学中脱氧核糖核酸(DNA Deoxyribonucleic
Acid)的寓意来诠释现代企业信息结构的真谛。比尔.盖茨称之为数字神经系统,寓示信息系统可以灵活适应外界环境因素的变化,作出相应的反应。那些能灵活适应客观环境变化,调节系统功能并可有效重用的软件单位应当像神经细胞一样充满生命的活力,而这些软件的细胞就是组件对象模型COM(Component Object Model)的各种衍生物。现在,有经验的编程人员都在利用COM组件集成各种桌面应用系统。随着
Internet技术的飞速发展,COM组件又被用于Web应用系统,进行事务逻辑处理,以实现更为复杂的商务应用。可见,COM既是一种技术,也是一种极富想象力的创意。
Windows DNA(Windows Distributed InterNet Applications Architecture)即
分布式互连网应用结构是以“表现层/事务逻辑层/数据服务层”三层体系结构(区别于传统的“客户/服务”二层体系结构)为构架的。其核心是一组应用服务的集合,包括组件、DHTML、Web浏览器和服务器、脚本描述、事务服务、数据库和数据访问、系统管理以及用户接口等,所有这些服务都通过COM统一提供。它能帮助开发者从复杂的分布式应用基础设施的构建中解脱出来,集中精力考虑关于业务的解决方案,从而大大地提高了开发效率。
MS Visual Stuido6.0套件是具体实现Windows DNA梦想的较完美的开发工具。它由Visual C++6.0、Visual Basic6.0、Visual J++6.0、Visual FoxPro6.0、
Visual InterDev6.0五大开发工具软件组成。而开发基于组件的软件正是现在软件开发的基础。微软把Windows应用程序的开发都基于它的组件对象模型(COM)上。COM是一种规范和一系列的服务,这些服务可使开发者能为应用程序创建可重复使用的对象。COM为访问和操纵对象提供了一个标准接口系列,为对象之间通信提供了一个公用的方法。它是一个独立于语言的对象模型,它能定义许多类型的服务,包括支持分布式对象和标准的服务接口。从这个意义上,我们可把这些开发工具分成两类:一类Visual C++6.0、Visual Basic6.0、Visual J++6.0和Visual FoxPro6.0是用以创建和使用COM组件的;而另一类Visual InterDev6.0提供了一个集成化的开发环境,在网站开发中,专门负责“装配”各种组件成为解决方案的。所以,只要掌握了
Visual InterDev6.0就掌握了Visual Studio6.0的精髓,如果能再精通一门VB、VC或J++,则在面向对象的网站应用开发中就能无往而不利了。(参见
http://www.asptoday.com)。
Visual Stuido6.0看似庞大,使用却很方便:先用VB或VC++创建组件即可执行程序或动态链接库(ActiveX控件),然后打开Visual InterDev6.0的工程文件,在ASP文件调用之就行了。
可见,面向对象、可视化和基于组件编程等现代软件开发思想已汇成一股洪流泛滥到Web网站应用开发的各个部分,势不可挡。
他说风雨中,这点痛算什么
因为个人能力有限,我想把在网站面向对象应用开发中遇到的问题和想法在这里提出来,望有高手指点。
一、我认为,网站的面向对象技术和浏览器(如IE)的结合还不是很完美。比如:网页对象中的属性(变量)定义为应用程序级时,属性值在各个网页中都保持不变。所以,在按浏览器的“回退”或“刷新”钮后,所得到的网页可能与你原先看的网页并不一样。不过,这也正是我对浏览器的内部对象模型不清楚造成的(比如:“回退”钮除了激发history(-1),还可以让用户自己编写脚本吗?)。
二、由于每次调用组件时会产生系统额外的开销,有时会明显感到页面运行变慢。这可能是对组件进行了过多的调用。对此,我们应重新设计组件以尽量减少调用次数。
三、近来,一种类似ASP的技术----PHP异军突起,声势浩大,信徒陡增,大有与ASP网国逐鹿之意。但我以为,在技术思想上,PHP才只达到纯ASP脚本时代的境界。它除了跨平台这一优点外,目前,在集成化开发环境、对象模型、可视化编程以及基于组件开发等方面还无资格跟微软的Visual Studio6.0同台较技。
让明天好好继续……
最近,网络市场又流行一新名词:ASP(Application Server Provider网络应用服务供应商)。正巧与微软的网站开发技术:Active Server Page(动态网页)的缩写同名,让我糊涂了好一阵子。
其实,此ASP是相对于ISP(Internet Server Provider因特网服务供应商)来说
的。传统的网络服务供应商ISP(如电信局)除提供Internet接入服务外,往往还提供网站建设(网页制作)等服务。也有专做网站建设这部分工作的,叫ICP
(Internet Content Provider因特网内容供应商)。传统的ISP和ICP的网站建设都很简单,主要是做些能进行信息发布,资料查询等简单工作的HTML网页。
电子商务和VOD(网上视频点播)的崛起对网站建设技术提出了更高的要求,传统的纯写脚本的方法肯定无法适应这一变化。Windows DNA框架应运而生,面向对象,基于组件的开发模型高效、方便、实用,在新的形势下必将得到大家的喜爱和更广泛的使用。
因此,现代的网络服务供应商ASP对网站建设提出了各种各样的整套解决方案。在这些解决方案中,面向对象技术的使用越来越广泛和深入。比如,在电子商务、VOD应用开发中,传统的关系型数据库越来越不能应付现代的网络多媒体应用。而我国自创的全中文纯面向对象电子商务支撑软件平台:联想的问鼎开了新一代应用系统开发运行环境的先河。它是一个全方位采用面向对象技术的软件开发和应用平台。它以完全面向对象的多媒体数据库系统(其基础是冠群(CA)公司的 Jasmine,包括了面向对象的数据库引擎、对象数据查询语言 ODQL、对象型数据库类库以及 ActiveX 控件和标准的数据库接口(C 接口、Java 接口等))为核心,将纯面向对象数据库(OODB)、面向对象的程序设计语言(OOP)和基于对象仓库的全中文可视化开发环境(OOIDE)融为一体,配合以强大的网络发布工具,为开发能适应现代企业快速发展需要的客户机/服务器应用、互联网精彩电子商务应用和多媒体应用提供了一套完整的解决方案。
可以预见,网站应用开发技术如一江春水,东奔不止,最后必将融入以面向对象,可视化以及基于组件模型的现代软件技术为特色的汪洋大海之中。
最后,介绍几本较好的书和网站。
---- 我是天空里的一片云,偶尔投影在你的波心-你不必讶异,更无须欢喜-在转瞬间消灭了 踪影. 你我相逢在黑夜的海上,你有你的,我有我的方向;你记得也好,你忘了也好,最好你忘掉,在这交会时互放的光彩!
www.leisang.com
www.leisang.com/ht |
|