面向对象的ASP技术:思考与实践

对象

目录:
概述
历史
先进的技术与好用的技术:
ASP到了尽头吗?
组件化的Web程序
一个实例
小技巧
结束语

概述
本文简要描述了Web开发的历史,并主要对JSP, ASP, 以及ASP.NET进行了比较。最后,较为详细的提出了一种概念模型并做出了简单的实现。这种模型将使得ASP这种简单易用的技术上升一个高度,成为中小企业或者中小项目开发的较好选择。本文适合ASP的中高级开发者。

历史
如今的Web应用程序越来越流行,基于B/S结构的软件也日渐增多。这也不难想象,正如Sun公司总裁Scott所说,“计算机就是网络”,随着互联网技术的发展,知识在世界范围内得到充分的传播。从90年代很原始静态HTML页面(现在还能在旧书摊看到讲解HTML3.2的书,配上16位的Internet Explorer或者Netscape Navigator插图,那时候的网页美观水平跟现在已经不能相提并论了),到复杂而缺乏定制***的CGI,然后是WindowNT的兴起,出现一种叫IDC,IDA, IDQ的东西(当然,现在那些东西已经不存在了,只是作者当年还兴致勃勃的研究过他们,但是现在什么也记不住了),然后就是基于VBScript的ASP2.0。这是后,Java逐渐侵入Internet编程领域,Servlet、JSP也出现了。其他的,如PHP, Perl, 等,到现在微软大行其道的以ASP.NET为核心的.Net技术,如今的Web开发领域可谓百花齐放,各有千秋。

技术出现了这么多,无论是ASP、JSP还是PHP等,在出现的早期,他们的编程模型不外乎是下面的模式:客户机向服务器提交一个HTTP/GET或者HTTP/POST请求,服务器得到这个请求后,要么请求数据库,将结果响应给客户端,要么直接响应一个结果给客户端。也就是简单的“请求-响应”模型。这种模型的唯一的一个优点就是简单。随着大型的Web应用的出现,这种模型很快出现不足。例如,无法实现代码的重用(在Web开发中,出现冗余代码似乎是难以避免的事),很多页面具有相似的功能与相似的代码,在需求改变的时候,代码的更改显得如此的不便,以至于让人很恼火。无法实现复杂的业务逻辑,简单的结构决定了这种模型无法胜任复杂的逻辑。等等,诸如此类的问题,使得Web开发的前辈们开始考虑更为有效的模式。

这时候值得一提的是JSP Model2, 也就是SmallTalk语言中一种很常见的模式:Model-View-Controller。有关这种模式的有相关的专业文章介绍,这里就不再赘述。总而言之,这种模式的出现改变了大多数Web开发人员的观念,使他们以一种软件结构的高度上来考虑B/S软件,而不是原来的“流式开发”。实现了MVC模式的Apache Struts,一时成为开发人员了与学习和接受的一种新的技术。(有关JSP与Servlet,请看我翻译的另外一篇文章:《Servlet与JSP, 最佳实践》)

ASP.NET的推出可以说是又是一个进步。Code-Behind技术与页面回调等,姑且不论其效率如何,单单从这些技术本身而言,又将我们的Web开发观念提高了一个层次。服务器HTML组件可以直接与C#代码交互,而且如此的自然,不得不佩服微软的结构设计了。

现在我们来谈一谈这篇文章的主题:ASP。

先进的技术与好用的技术
目前在Web开发领域,几乎没有人看好ASP。CSDN上总有人在抱怨ASP开发者的薪水太少。而且ASP确实存在这样和那样的问题,最大的问题莫过于它是非编译的脚本,所有的脚本都是通过解释执行,这让他的效率大打折扣。另外,它的弱类型变量定义降低学习的难度与他的效率。种种的问题显示,放弃ASP吧,不要在追寻一个落魄的技术了。

然而,我想没有一个有经验的Web开发者会说,ASP不好用,ASP不好学。现在的ASP高手很多,然而JSP,ASP.NET的高手却很难培养。在CSDN的JSP版上,问“怎么配置JSP运行环境”一类的问题不在少数,另外一些例如“字符编码”、“数据库连接”等在ASP种基本不用考虑问题在JSP中确实屡见不鲜。这里我无意比较ASP与JSP,我也不敢攻击JSP或者说JSP的坏话。从纯粹的技术的角度,我认为,在易用***上,ASP要稍胜一筹,而且在中小型项目的把握上,抛开个人或者技术界的虚荣心,ASP要比JSP把握大。如果读者是一位有多年经验并且熟知ASP与JSP的话,应该不至于反对我的观点。

然而,JSP的优点比比皆是。从软件结构的高度来看,它太优秀了。拥有JavaBean技术与扩展标记库技术,使得JSP的概念已经远远超过了它本身。组件化容易,高效率,扩展方便,容易实现多层结构,等等。

从现在Web开发领域的走势(或者说整个软件的走势)来说,组件化的思想越来越重要了。现在的问题是,基本的ASP功能很明显是无法满足现在日益复杂的需求,如何在ASP中实现组件思想呢?

关于组件我们能够想到最直接的办法就是使用VisualBasic或者VisualC++或者任何一种其他的Windows环境下的编程工具。然后,几乎所有人都会说:VC开发组件是效率最高的,但是很慢;VB开发式最快的,效率也不错。的确,VB具备简单通用,支持COM, COM+,等优点,而且开发速度快,调试方便。这样,VB就成为开发ASP组件的首选。另外一个不得不提的东西就是XML。使用XML的好处多多,这里也不多说了。

我的基本思想是:用VB来写组件,用XML来配置应用程序。这里的组件的概念已经不是过去的那种功能***组件(例如,SAFileUpload, Jmail等等,只是为了实现某一个功能而实现的组件。目前这类组件占据了大多数的ASP服务器端组件市场。),更多的是实现某一个实体(Entity)。也就是说,在面向对象的ASP技术中,提倡两种组件的存在:功能组件与实体组件。

功能组件主要用于实现某一个或者一组功能。当然,这些功能也应当是按照面向对象的思想组织在一起。例如,一个名为LoginControl的功能组件包含以下方法:CheckLogin, UpdateLogin, LoginOut等,更为常见的例子就是数据库操作。您可以将数据库操作写成组件的方法,在ASP页面中进行调用。而实体组件仅仅实现基本的对象及其属***和方法。最普通的应用的例子莫过于User 组件,它可能有Name, Account, Password等等属***。使用用户组件最显著的好处是:充分利用廉价资源――内存来存储逻辑上独立的一个复杂对象,从而减少昂贵资源(例如数据库链接)的使用。

而XML的作用是提供应用的简单配置,在ASP页面与组件之间建立一种松散联系。有了这种联系,应用程序就可以以一种非常随意而轻松的方式进行分工、拆卸和组装。这种想法来自于现在的MVC Struts中的struts-config.xml和ASP.NET中的web.config。

关于VB组件的注册一直是一个大问题。现在的Web应用已经远远超过了过去的概念。原来只是做做网站,现在却可以做复杂的应用系统,而且不仅禁止运行在ISP的虚拟主机上,越来越多的应用被部署到企业的内部网络。既然如此,VB中组件的注册已经不成为问题,一般来说,除非必要,否则在一个项目中使用一个dll足够了。当然,在开发过程中的调试也许是非常枯燥的。在本文的最后,有一些组件调试的小技巧,如果你真的打算用这种方式来开发Web应用的话,你可以参考一下。

下面是一个实际的例子。由于时间、环境的原因,作者仅仅在自己的机器上对代码进行了运行和测试,由于篇幅所限,作者也不提供整个样例的代码(如果读者熟知ASP与VB的话,实际上代码是非常简单的),下面的例子仅仅是一个简单的开发原型。在实际的系统使用中需要考虑更多的因素。

一个会员注册、登录、注销的例子:
下面这个例子采用上面提到的面向对象的思想。在这个小型示例中,包括了以下几个部分:

User类 用来模拟在应用系统中的一个实体

DataProvider类 提供所有的数据库操作

Globals类 读取配置xml文件

(以上类被封装到ExtendPortal.dll中。)

一些相关的asp文件

假定我们的站点名称为ExtendPortal

1、 定义xml文件(app-config.xml)

<?xml version="1.0" encoding="gb2312"?>

<app-config>

<!--Define the site infomation-->

<site-info>

  <name>ExtendPortal</name>

</site-info>

<!--Define data source informations-->

<data-sources >

    <data-source>

    <name>AccessDB</name>

    <value>DSN=ep</value>

</data-source>

</data-sources >

<!--Define the resources-->

<resources>

  <resource key="urlHome" value="/index.asp" />

</resources>

</app-config>

上面只是一个例子,你可在实际的项目中根据需求进行定义。

类图如下所示:

(图1)

系统的处理流程如下:

根据上图所示,一个完成的Web开发的项目就可以以一种结构化程度很高的方式进行组织和搭建,而且在整个系统的模型中,处处体现着面向对象的思想,用这种模型实现的多层结构模块之间联结松散,分工、组织都非常容易

时间: 2024-10-11 08:25:31

面向对象的ASP技术:思考与实践的相关文章

面向对象的ASP技术

历史 如今的Web应用程序越来越流行,基于B/S结构的软件也日渐增多.这也不难想象,正如Sun公司总裁Scott所说,"计算机就是网络",随着互联网技术的发展,知识在世界范围内得到充分的传播.从90年代很原始静态HTML页面(现在还能在旧书摊看到讲解HTML3.2的书,配上16位的Internet Explorer或者Netscape Navigator插图,那时候的网页美观水平跟现在已经不能相提并论了),到复杂而缺乏定制性的CGI,然后是WindowNT的兴起,出现一种叫IDC,ID

《.NET软件技术学习与实践》之序言

  自序        这是一本有自已特色的书.       这是一本于讲技术之外,更讲学习方法的书       这是一本从首至尾贯彻"授人与鱼,不如授人与渔"的书       2003年暑假我在CSDN程序人生论坛发表的个人自传--<一个普通IT人的十年回顾>(已收入本书配套光盘),一石激起千层浪,被许多网站转载,我个人也收到了海内外近千封电子邮件.       我是一个在没有明师指导情况下,几乎完全靠自己在黑暗中摸索,在自学之路上艰难跋涉过来的软件开发者.我不敢自称为&

ASP.NET 跨平台最佳实践

前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java更优秀(并非C#天生丽质,而是它站在了巨人的肩膀上). 本文并非为.NET正名而来,而仅仅是分享作者近几年在ASP.NET跨平台方面的研究与实践经验,算是对八年的.NET之路作一个阶段性的总结. .NET技术自诞生以来,便一直因其跨平台能力差而广受诟病.这里面有微软有意为之,也有别有用心之人在混淆视

ASP技术在交互式网页设计中的运用

交互|设计|网页|网页设计 一.ASP技术简介 ASP技术 ASP(Active Server Pages动态网页)是微软公司推出的一种用以取代CGI(Common Gateway Interface通用网关接口)的技术.目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI. 简单地讲,ASP是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式动态网页,包括使用HTML表单收集和处理信息,上传与下载等

ASP技术在电子商务中的应用

电子商务 作者:潘镭 内容提要:本文阐述了ASP技术的作用与特点及其在电子商务中的应用. 关键词:ASP :电子商务. 一.ASP技术 ASP(Active Server Pages动态网页)是微软公司推出的一种用以取代CGI(Common Gateway Interface通用网关接口)的技术.目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI. 简单地讲,ASP是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器

利用ASP技术开发基于WWW的数据库检索程序

程序|数据|数据库  ASP是微软公司推出的用以取代CGI的新技术,是目前公认的建立Windows NT动态站点最好的工具.它与ADO(Active Data Object,一种新的数据访问模型)的充分结合,提供了强大的数据库访问功能,使之成为进行网上数据库管理的重要手段.     一.ASP简介   ASP内含于Internet Information Server(简称IIS3.0)中,扩展名以.asp表示.ASP文件可以用常规的文本编辑器编辑,也可以利用专门的辅助开发工具InterDev进

突破性的ASP+技术

asp+ 自1996年微软推出ASP1.0以来,ASP+IIS的组合在与CGI+PHP+Apache的网络大战中,并没有取得"微软式"的优势,反而因为安全性,执行效率,程序语法和跨平台等问题屡受指责和批评. 随着微软近期宣布.NET战略,ASP也即将升级到"下一个版本",称之为ASP+.请注意这一引号,因为ASP+并不是目前ASP3.0版本的自然过渡,而是提供了一种全新的服务器端Web脚本编程,编写ASP+页面与生成ASP页面有着根本上的不同!首先ASP+是一种编译

专访阿里巴巴林伟:三项世界级挑战背后的思考、实践和经验

12月6日-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛(Alibaba Technology Forum,ATF)将在线举办.(https://yq.aliyun.com/promotion/139) 系列文章陆续发布: 专访阿里巴巴徐盈辉:深度学习和强化学习技术首次在双11中的大规模应用 专访阿里巴巴林伟:三项世界级挑战背后的思考.实践和经验 专访阿里巴巴魏虎:揭秘阿里双11背后的全站个性化&商铺千人千面 价

基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践_node.js

淘宝网线上应用的传统软件栈结构为 Nginx + Velocity + Java,即: 在这个体系中,Nginx 将请求转发给 Java 应用,后者处理完事务,再将数据用 Velocity 模板渲染成最终的页面. 引入 Node.js 之后,我们势必要面临以下几个问题: 技术栈的拓扑结构该如何设计,部署方式该如何选择,才算是科学合理?项目完成后,该如何切分流量,对运维来说才算是方便快捷?遇到线上的问题,如何最快地解除险情,避免更大的损失?如何确保应用的健康情况,在负载均衡调度的层面加以管理?承系