asp框架设计
一,概述
ASP源代码的容易获得(如果用DLL封装则又不利于虚拟主机部署)使得ASP源码在国内流行到泛滥,程序员倾向于快速编程和快速忘记,可读性和维护性都为人诟病。其实,ASP代码也可以支持”不彻底”的面向对象编程和模块化,籍此创建的ASP框架可以最大限度地封装操作,优化代码,利于维护和阅读及向ASP.NET整合或迁移。
asp和vb是自由的,而.net划了一个圈套,怎么利用.net的先进理念和asp的自由,是ASP的残存价值.
JScript的面向对象编程:面向对象的JavaScript编程 评“面向对象的JavaScript编程”一文 再论面向对象的Javascript编程
二,设计模式
因为ASP只是支持不彻底的面向对象思想,所以很多设计模式是不能真正实现的,只能以设计模式思想作指导,以VBScript为实现(可结合COM组件技术)来编写ASP框架Framework。
1, DNA架构:ASP框架是典型的微软的DNA架构,包括数据层(data),业务层(business),表示层(presentation)的三层体系结构,业务层是整个应用的心脏(核心)部分。
DNA(Windows Distributed Internet Applications Architecture分布式互连网应用结构)架构:
(1),数据存储层(data): 数据服务层为应用提供数据来源。我们可以根据需要选择MicrosoftSQLServer?、Oracle或任何与OLEDB或ODBC兼容的数据源。
使用中等规模以上的关系数据库,采用存储过程、触发器。确定数据库结构主要方法是:客户需求能否满足--进行数据库范式化--性能是否受影响--进行数据库非范式化。数据库设计必须遵循一致的规范,设计好就马上编写相应的存储过程、触发器,
(2),业务层(business):事务逻辑层负责处理表示层的应用请求,完成商务逻辑的计算任务,并将处理结果返回给用户。事务逻辑处理层是将原先置于C/S客户端的事务逻辑分离出来,集中置于服务器部分,为所有用户共享。
A,数据访问层DAL(Data Access Layer): 负责访问和控制所有数据库,为了便于改动可以暂时写成一个VBS CLASS进行封装,在后台开发完毕后再封装成COM+组件。所有用户提交的数据全都交给DAL处理,比如FORM数据或者是URL参数,后台逻辑层的其它相关处理都必须从DAL获取返回值,这里应该进行的操作一般有:获取Request数据--进行安全处理--检查用户数据是否规范--输出返回值。
B,业务逻辑层(Business Logic Layer):建议把相关性的业务活动封装成一个个的VBS CLASS。比如要求制作一个内部的调货平台,那么就必然有入库、出库、分仓库存、汇总等操作,那么把这些跟仓库相关的操作都整理成一个CLASS,再从CLASS内部去调用上面提到的数据库处理层那些去协同处理仓库相关的操作。尤其要考虑权限控制层:要支持用户分组和二层用户角色(类似于Windows的二层用户角色),甚至大型项目的N级可继承的用户角色。
(3),表示层(presentation): 是以Java Script(浏览器的支持较友好)+XML为主的可加上HTM,DHTML,Scripting,JavaApplet?,Active X等组成的用户界面层和数据传递层,Internet环境中常为瘦型客户机,以实现用户与应用逻辑处理结果的通信。一般后台管理的用户界面层风格比较固定,可以使用封装好的统一的各种表格、表单、统计报表等风格。而用于前台的用户界面风格比较多变,就可采用UI框架进行开发,对于大型项目,应采用轻量级框架,JSVM是一个不错的选择。数据传递层(网页表单)负责预处理用户提交的所有数据,也负责接收后台输出的轻量级数据,可采用JSAX技术获取局部资料等
2,COM组件技术:COM(组件对象模型)则相当于业务层这个心脏可选用的加速器。
业务层通过COM组件进行事务处理,可以使用VB(VC和C++等)来创建用户组件,可以将同一业务逻辑下的页面和逻辑封装到一个类里,用不同的方法来实现。这样就能充分利用廉价的内存来存储逻辑上独立的一个复杂对象,从而减少昂贵资源(例如数据库链接)的使用。为了代码和数据库安全,也为了开发公司的安全,对于核心业务层,一般都要求编译成DLL组件。而且业务层COM组件的开发和测试工作,和根据商务逻辑的需要以精练的ASP脚本语言来选择和使用COM组件的工作就实现了分工。这对组件的标准化和复用效率是有利的。
IIS(Internet Information Server)负责业务层Web页面的管理,MTS(Microsoft Transaction Server)负责统一管理业务层COM组件。MTS在多线程支持下实现对COM组件的分布式连接管理、线程池自动管理及高性能事务处理的监视。这样数据库不再和(C/S两层体系结构中)每个活动客户保持一个连接,而是若干个客户通过应用逻辑组件共享数据库的连接,从而减少了连接次数;而且MTS的安全管理机制可以按权限将特定组件授给不同的用户组,提高了数据服务器的性能和安全性。
可以使用XML的提供应用程序的简单配置,在ASP页面与组件之间建立一种松散联系。有了这种联系,应用程序就可以以一种非常随意而轻松的方式进行分工、拆卸和组装。这种思想也可以借鉴MVC Struts中的struts-config.xml和ASP.NET中的web.config。
3, ACCESS的类似SQL存储过程封装:ACCESS2000在AC库中提供了传递参数的查询,所以可以使用类似于SQL存储过程的方式来封装ASP中的SQL语句到查询中,直接用ADODB.COMMAND对象来调用返回值。虽然目前该方法执行效率不高,但可以将对数据库的操作从程序中剥离了开来。实现了:显示层、逻辑层、数据库操作层的彻底分离。
举例说明:
USER表:U_Id,U_Name,U_Key
Login查询:SELECT User.U_Id FROM User WHERE User.U_Name=[@UserName?] AND User.U_Key=[@UserKey?];
建立Login类:
主要代码如下:
Public Function getUID(UserName,UserKey)
Dim CMD,Rs
Set CMD=Server.CreateObject(“ADODB.COMMAND”)
CMD.ActiveConnection = Conn
CMD.CommandType = 4
CMD.CommandText = “Login”
Set Rs = CMD.Execute ( ,Array(UserName,UserKey))
Set CMD = Nothing
If Rs.EOF And Rs.BOF Then
getUID = ””
Else
getUID = Rs(“U_Id”)
End If
Set Rs = Nothing
End Function
逻辑层调用代码:
Dim theUID
Dim Login
If UserName <> ”” Or UserKey <> ”” Then
'clsLogin类就是前面建立的Login类
Set Login = New clsLogin
Login.Connection = Conn
theUID = Login.getUID(UserName,UserKey)
Set Login = Nothing
If theUID <> ”” Then
Response.Write “登陆成功!”
Else
Response.Write “登陆失败!”
End If
Response.End
End If
三,开源项目
推荐使用EasyIDE framework 。
1.01-ZONE ASP framework 大小:53.8 KB 网站:http://www.01-zone.com/asp-framework/ 协议:GNU通用公共授权第三版(GPL3)
简要说明:
01-ZONE ASP framework 是一个开源的 ASP Web 开发框架,基于 T-MVC 模式设计,可以简化ASP程序的开发过程,有利于网页设计人员和程序设计人员的分工,提高程序代码的可维护性及可重用性。任何组织或个人可依据自由软件基金会所发布的GNU通用公共授权(GPL)第三版或以后版本条款,对本框架进行修改、再发布。
2.EasyASP 大小:16.6 KB 网站:http://code.google.com/p/easyasp/ 简要说明:
能方便的实现一个或多个数据库的增、删、改等控制操作。对数据库字段进行操作时可以不用考虑字段值数据类型的差别(如文本字段不用加单引号)。自带记录集分页和调用存储过程分页功能,拥有功能丰富的可完全自定义配置及调用。能方便的执行带各种参数的MSSQL存储过程并返回多个值或多个记录集。完善的数据库操作容错功能,能即时输出出错SQL语句方便调试。在使用已经存在的数据库连接对象时能自动判定数据库类型。专为Ajax设计的数据获取方式及输出Json格式数据。能有效防止SQL注入。自带数据类型验证及服务器端表单验证功能。能轻松实现页面地址获取并对URL参数进行过滤以及替换。具有专为EasyASP开发的适用于Dreamweaver CS3 和 CS4 的代码高亮及代码提示扩展插件。具有完善的帮助手册及大量应用实例。
3.EasyIDE framework
大小:47.373KB
简要说明:
EasyIDE framework就一次发布了包括字符串操作、文件操作、数组操作、翻页操作、base64加密/解密操作、XML文件解析操作、EasyIDE framework基础函数库七大类操作函数,可以满意绝大部分开发要求。
4.领星ASP开发平台(ACP框架)
大小:有完整版本和精简版本,33KB-592KB
简要说明:
高效:每个模块均经过多次性能测试和优化 安全:防止Cookie欺骗和SQL注入 易用:接口和结构简明清楚
“强调简朴直接·反对过分灵活” ——开发宗旨
5.ASPHAND(mvc模式)
大小:17KB
网站:http://www.kidhand.cn/(已无法访问)
http://code.google.com/p/kidhand/
http://hi.baidu.com/kidhand/home
网站说明:
1、完整的MVC模式支持
2、支持多层权限模式
3、多层级缓存
4、视图路径与根路径自动统一
5、灵活的模板语法处理
6、ActiveRecord动态数据对象支持
7、自动的权限创建
CLASP:比较成熟的ASP框架
Simple MVC ASP Framework简单的MVC ASP框架
JSVM:由万春华最早在51jsDotCom上提出的关于表示层的Java Script虚拟机的ASP框架 JSVM框架项目
JSVM (Java Script Virtual Machine 的缩写) 是一个面向 Java Script 开发领域的基础框架。该软件是自由软件,2003年底由万常华(wch3116)发起, 目前是2.0版,采用的是 BSD License 授权协议。
Zsery ASPFramwork:捷克人Zsery写的ASP框架
bit DB:数据库框架
ASP框架半成品我佛山人的ASP框架
ASP数据库驱动封装 Aether关于数据库驱动封装的ASP框架
使用模板实现ASP代码与页面分离ASP仿PHPLIB模板实现代码与页面分离
参见
jtbc CMS PHP ASP JTBC(CMS)测试了一半暂停
Moal ASP Framework v1.0 movoin-asp-libs 快速的开发ASP程序,针对企业网站的ASP框架. ASP rapid development procedures, corporate website ASP framework.
领星ASP开发平台(ACP框架)精简版——ASP开发框架 领星ASP开发平台(ACP框架)——ASP开发框架•入门教程第一讲 领星动网开发代码园地blog
rusher-cn 用于快速开发的web服务端框架及客户端jq库 用Ajax-MVC框架编写web应用程序 Rusher - ASP服务端框架 For AJAX 简介
A framework for your ASP application
ASP数据持久层抽象POAsp这是最早由jzchen.net发表的一些关于POAsp框架的构想,目前该网站已夭折。