网易学院第六章 asp编程经验谈.docx
- 文档编号:5759614
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:18
- 大小:30.92KB
网易学院第六章 asp编程经验谈.docx
《网易学院第六章 asp编程经验谈.docx》由会员分享,可在线阅读,更多相关《网易学院第六章 asp编程经验谈.docx(18页珍藏版)》请在冰豆网上搜索。
网易学院第六章asp编程经验谈
ASP开发10条经验总结
历时半年,我独自一人完成了一个局级单位的管理信息系统,共发布BETA版29次,正式版本3次。
ASP+ORACLE环境,285个ASP文件,功能涉及数据录入、修改、模糊查询、自动统计、数据分析和报表,这个项目正在申报省级成果,现将我的10条经验总结如下,不对之处欢迎批评指正:
1.不要再做ASP是否过时的讨论,重要的不是你是否使用先进的技术,而是你的设计思想是否先进;
2.设计时要考虑项目的通用性,永远不要做没有推广价值的东西;
3.程序设计要简洁,足够好的面向过程远远优于蹩脚的面向对象;
4.理论是为实践服务的,所以不要被理论(尤其是设计模式)束缚;
5.分工合理的情况下尽可能少的人员构成项目小组,通信的开销实在太大了;
6.没有不变的需求,要为你的程序留下足够多的拓展空间,同时要考虑在系统向其它平台移植时尽量减少工作量和难度的途径;
7.千万不要忽视界面设计,很多情况下这成为对你项目评价的唯一标准;
8.用正规文档记下你的变量使用情况,随着系统的增大,DEBUG的成本几乎成倍增长;
9.能用机器生成的代码就不要去手写,最宝贵的就是时间;
10.选数据库还是要选ORACLE!
ASP开发准则
应用程序服务器被,或最终将被Web服务器所使用,它通常是运行ASP页面的IIS计算机。
ASP是您的对象的唯一客户机。
它带来了专门的线程和安全考虑。
虽然许多使用ASP的Web站点根本就不用组件,但在这篇文章中假定ASP是Internet客户机和组件之间的桥梁。
下面的asp/server01242000.asp">ASP组件准则(英文)提供
ASP和组件之间的划分服务
ASP最常用于在服务器上创建供客户机使用的HTML或XML文件,因此我们主要讨论这种使用方案。
这就引出了一个常见的问题,如果ASP页面在服务器上,那么它们是否属于业务层的一部分呢?
在组件世界中,答案通常是否。
虽然ASP确实在服务器上运行,而且可能与应用程序服务器在同一个空间,但是这不能使它成为业务逻辑的一部分。
随着用户界面工具的发展或者随着启用更多的业务对业务方案,拥有这种明确的区别将获得巨大的回报。
话说到此,让我们来看一些最重要的业务层和表示层划分准则:
∙令UI代码与业务逻辑分离。
这包括编写与UI耦合的代码,例如使用ASP内部组件的MTS对象,让它与业务逻辑代码分离,如同在不同的DLL中。
∙将事务与ASP页面分离。
事务ASP在某些情况下非常好,但是组件和多层应用程序会改变这种情况。
组件不应该依赖由客户机层来管理它们的事务和业务逻辑语义。
∙将表示组件(使用请求和响应的组件)与Web服务器放在相同的机器和/或进程中。
如果将使用ASP内部组件对象的对象放在远程机器上,那么对内部组件的所有调用将以回调形式发生。
调用IIS客户机的是COM+服务器,它显著降低了性能并使安全配置复杂化。
可以将这些调整对象放在标记为“库激活”的COM+应用程序中。
ASP存在于服务器上,因此ASP页面必须符合资源共享规则,并且记住可伸缩性。
请看下面的详细内容:
∙在“会话”中,管理应尽量避免用户特定的状态。
∙保持ASP无状态,并在可能的情况下允许资源池。
操作方式
在评价某个代码段是否属于业务逻辑或者表示层时,请问一下自己,“如果我必须用按键式电话应用程序代替我的ASP页面,那么该代码是否还有用?
”如果答案为“是”,那么可以尝试将它划分为业务逻辑代码或者用户界面帮助器代码。
如果改变了客户机后该代码不能用,或者如果它是构造用户界面的帮助器,则该代码属于表示服务层。
它在ASP页面中,或在使用ASP内部组件的组件中。
它不属于业务对象组件。
理解桌面与ASP客户机的区别
ASP是组件的特殊客户机,不同于桌面上的传统单线程Win32应用程序。
主要区别概括如下。
∙线程管理:
ASP是多线程客户机。
这意味着可以有许多并发活动一起运行,也许在同一时刻处理不同的ASP页面。
这说明不能使对象伪称它是唯一的使用者来独占系统。
这样做可能有意外的反应,例如,养成一个坏习惯:
将对象存储在ASP会话或者应用程序变量中。
∙安全环境:
ASP是由Web站点中的InternetInformationServices5.0执行的,有低、中、高三种隔离度。
甚至这些Web站点可以有不同的安全设置、允许或拒绝匿名访问、验证客户等等。
所有这些设置产生了大量的方案,即不同的用户帐户最终用的是您的对象。
∙轻松增长:
这不是技术问题,而是Web应用程序所提供设施的副效应。
传统上,为桌面应用程序增加用户基,要求仔细计划好向已知数量客户机的转出。
ASP已经改变了该过程。
在启动和运行后,ASP-VisualBasic应用程序可以方便地打开,供当地的或世界范围的所有职员、所有业务伙伴和所有客户使用。
可以用这种方式描述—拥有超链接的单个电子邮件可以使用户基成十倍地增长。
您的应用程序为此作好准备了吗?
唯一了解的方式是对Web站点进行强度测试,以获得实际性能的预期值。
关于强度测试的详细信息,请参阅“应用程序生命周期”一节。
在ASP内应该如何使用VisualBasic对象?
在页面范围内创建和取消您的对象。
也就是说,尽可能使ASP页面无状态,只在暂时状态下依赖会话或应用程序变量。
不要将对象存储在会话或应用程序变量中。
这将ASP线程锁定到您的会话、取消所有可伸缩性的预期值。
也就是说,Web服务器处理的用户数不会超过几十个。
如果需要在会话或应用程序中存储内容,请使之成为数据而不是对象。
还有可以遵守的许多其他准则。
我们建议您阅读MSDNVoices上J.D.Meier撰写的专栏“Servin'itUp”。
该专栏包括了大量的技术、实践和技巧,有助于开发可扩展的、可靠的ASP和组件应用程序。
参考
asp#server">MSDNVoices:
Servin'itUpColumn(英文)
SeminarOnline:
在ASP下使用自定义COM组件(英文)
asp">MSDN杂志(英文)不要将引用存储在会话或应用程序中的VB对象中
所有VisualBasic6.0组件都是“单元线程”的,就是说它们都运行在STA单元中。
这意味着如果在线程中创建对象,那么对该对象的所有调用都必须用同一线程服务。
许多线程(来自并发Web站点用户)使用STA对象的同一实例,会引起一连串的活动,有可能成为应用程序中的瓶颈。
此外,在会话范围内存储用Server.CreateObject创建的STA对象,可以有效地将执行线程联系到当前用户,从而将应用程序的最大并发用户数限制到默认的20xN(N=处理器数量)。
操作方式
如果您按照我们的建议使对象无状态,则不需要存储引用以供客户机复用,并在应用程序范围内存储它们。
客户机将能够独立创建、使用和取消它们自己的对象。
这就减少了保持会话特有对象的需要,原因是它们不保留会话特有的状态。
推荐的方式是使对象无状态,它在需要时访问数据库或其他存储区(例如cookies和LDAP)。
如果需要使用会话或应用程序范围的数据,请将数据,而不是处理数据的对象,存储在此。
您可以创建一个类,来封装对所需值的处理。
参考
asp">信息:
不要在会话或应用程序中存储STA对象(Q243543)(英文)
PRB:
将STACOM组件存储在会话中,会将会话锁定在单线程中(Q243815)(英文)
信息:
ASP下的组件线程模型概要(Q243544)(英文)
学习IIS5.0中的新内容
InternetInformationServer5.0增加了许多新功能。
这些改进均已写入J.D.Meier的MSDN文章中:
asp/server02282000.asp">沿用IIS5.0中的ASP(英文)。
下面是该文中最重要改进的概述。
∙改进的、出色的性能
∙Server.Transfer和Server.Execute方法
∙集中式错误处理
∙改进的浏览器功能
∙改进的脚本引擎
∙正则表达式分析器
∙与ADO记录集XML功能的集成
∙新的安全性、缓冲、隔离和管理功能
Asp及Web开发中的常见问题
表格的折行处理.
<tablestyle="TABLE-LAYOUT:
fixed"width="200"border="0"cellspacing="0"cellpadding="7"bgcolor="#f7f7f7">
<tr>
<tdstyle="LEFT:
0px;WIDTH:
100%;WORD-WRAP:
break-word">
dffadfdaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsfdffadfdasfdffadfdasfdffadfdasfdffadfdasfdffadfdasfd
ffadfdasfdffadfdasfdffadfdasfdffadfdasf
</td>
</tr>
</table>
此处主要是用css样式进行控制在<table>标签中有个style="TABLE-LAYOUT:
fixed",其说明如下
语法:
table-layout:
auto|fixed
参数:
auto:
默认的自动算法。
布局将基于各单元格的内容。
表格在每一单元格读取计算之后才会显示出来。
速度很慢
fixed:
固定布局的算法。
在这算法中,水平布局是仅仅基于表格的宽度,表格边框的宽度,单元格间距,列的宽度,而和表格内容无关,此时在<td>标签中如果没有WORD-WRAP:
break-word样式,表格中的内容将只能显示一部份,具体看表格的宽度了.word-wrap说明如下:
语法:
word-wrap:
normal|break-word
参数:
normal:
允许内容顶开指定的容器边界
break-word:
内容将在边界内换行。
如果需要,词内换行(word-break)也会发生
VBSCRIPT标记索引
基本运算
+数字加法及字符串连接
-数字减法
*数字乘法
/数字除法
Mod求余数
\求商数
&字符串连接
^次方
=相等
<>不相等
>=大于或等于
>大于
<=小于或等于
<小于
Not非
And且
Or或
Xor异或
循环及决策
if....then若...则...
if...then...else若...则...非
elseif...非若
selectcase...群组选择条件
endselect
for...next计数循环
while...wend条件循环
(一)
dowhile...loop条件循环
(二)
do...loopwhile条件循环(三)
dountil...loop条件循环(四)
do...loopuntil条件循环(五)
数学函数
Abs绝对值
Sgn正负号
Hex转换成十六进制
Oct转换成八进制
Sqr平方根
Int取整数
Fix取整数
Round取整数
Log以e为底的对数
Sin正弦函数
Cos余弦函数
Tan正切函数
字符串处理函数
Len字符串长度
Mid取部分字符串
Left从字符串开头取部分字符串
Right从字符串结尾取部分字符串
Lcase转换成小写
Ucase转换成大写
Trim清除字符串开头及结尾的空格符
Ltrim清除字符串开头空格符
Rtrim清除字符串结尾空格符
Replace替换字符串部分字符
Instr判断是否包含于另一个字符串(从起始搜寻)
InstrRev判断是否包含于另一个字符串(从结尾搜寻)
Space任意字符数的空格符
String任意字符数的任一字符
StrReverse反转字符串
Split以某字符分割字符串
数据类型转换函数
Cint转换成整形
Cstr转换成字符串
Clng转换成常整数
Cbool转换成布尔函数
Cdate转换成日期函数
CSng转换成单精度
CDbl转换成双精度
日期时间函数
Date现在日期
Time现在时间
NOw现在日期时间
DateAdd增加日期
DateDiff两日期差
DateSerial日期设定
DateValue日期设定
Year现在年份
Month现在月份
Day现在天
Hour现在时刻
Minute现在分钟
Second现在秒钟
Timer午夜距现在秒数
TimeSerial时间设定
TimeValue时间所属部分
WeekDay星期名称
MonthName月份名称
其它函数
Array产生数组
Asc字符ASCII码
ChrASCII码字符
Filter过滤数组
InputBox输入窗口
Join合并数组中的元素
MsgBox信息窗口
Lbound数组下界
Ubound数组上界
指令
Const设定常数
Dim定义变量或者数组
Erase清除数组
ReDim重新声明数组
Randomize起始随机数
Rnd取得随机数
ASP对象
Session对象
IsEmpty测试Session变量是否存在
TimeOut设定Session变量生存周期
Abandon强制清除Session变量
Application对象
IsEmpty测试Application变量是否存在
Lock锁定Application变量
Unlock解除Lock指令的锁定
Cookies对象
Expires设定Cookies变量的生存周期
Connection对象
Open打开与数据库的连接
Execute打开Recordset对象
Close关闭Connection对象
Recordset对象
movefirst将记录指针移至第一条
movelast将记录指针移至最后一条
movenext将记录指针移至下一条
moveprevious将记录指针移至上一条
bof测试是否为recordset的起始
eof测试是否为recordset的结束
open打开Recoreset对象
close关闭recordset对象
fields读取数据的子对象
fileds.count字段个数
pagesize每页记录条数
absolutepage设定为某页
pagecount总页数
Absoluteposition直接跳至某条记录
MicrosoftVBscript运行时错误列表(10进制表示)
error#5无效的过程调用或参数
error#5无效的过程调用或参数
error#6溢出
error#7内存不够
error#9下标越界
error#10该数组为定长的或临时被锁定
error#11被零除
error#13类型不匹配
error#14字符串空间不够
error#17不能执行所需的操作
error#28堆栈溢出
error#35未定义过程或函数
error#48加载DLL时出错
error#51内部错误
error#52错误的文件名或号码
error#53文件未找到
error#54错误的文件模式
error#55文件已经打开
error#57设备I/O错误
error#58文件已存在
error#61磁盘已满
error#62输入超出了文件尾
error#67文件过多
error#68设备不可用
error#70没有权限
error#71磁盘没有准备好
error#74重命名时不能带有其他驱动器符号
error#75路径/文件访问错误
error#76路径未找到
error#91对象变量未设置
error#92For循环未初始化
error#94无效使用Null
error#322不能创建必要的临时文件
error#424缺少对象
error#429ActiveX部件不能创建对象
error#430类不支持Automation操作
error#432Automation操作中文件名或类名未找到
error#438对象不支持此属性或方法
error#440Automation操作错误
error#445对象不支持此操作
error#446对象不支持已命名参数
error#447对象不支持当前区域设置选项
error#448未找到已命名参数
error#449参数是必选项
error#450错误的参数个数或无效的参数属性值
error#451对象不是一个集合
error#453未找到指定的DLL函数
error#455代码资源锁定错误
error#457此键已与该集合的一个元素关联
error#458变量使用了一个VBScript中不支持的Automation类型
error#462远程服务器不存在或不可用
error#481无效图片
error#500变量未定义
error#501非法赋值
error#502对象不能安全用Script编程
error#503对象不能安全初始化
error#504对象不能安全创建
error#505无效的或无资格的引用
error#506类没有被定义
error#507出现一个意外错误
error#1001内存不够
error#1002语法错误
error#1003缺少':
'
error#1005缺少'('
error#1006缺少')'
error#1007缺少']'
error#1010缺少标识符
error#1011缺少'='
error#1012缺少'If'
error#1013缺少'To'
error#1014缺少'End'
error#1015缺少'Function'
error#1016缺少'Sub'
error#1017缺少'Then'
error#1018缺少'Wend'
error#1019缺少'Loop'
error#1020缺少'Next'
error#1021缺少'Case'
error#1022缺少'Select'
error#1023缺少表达式
error#1024缺少语句
error#1025语句未结束
error#1026缺少整型常数
error#1027缺少'While'或'Until'
error#1028缺少'While'和'Until'或语句未结束
error#1029缺少'With'
error#1030标识符过长
error#1031无效数字
error#1032无效字符
error#1033未结束的字符串常量
error#1034注释未结束
error#1037无效使用'Me'关键字
error#1038'loop'语句缺少'do'
error#1039无效的'exit'语句
error#1040循环控制变量'for'无效
error#1041名称重定义
error#1042必须是行中的第一个语句
error#1043不能为non-ByVal参数赋值
error#1044调用子程序时不能使用括号
error#1045缺少文字常数
error#1046缺少'In'
error#1047缺少'Class'
error#1048必须在一个类的内部定义
error#1049在属性声明中缺少Let,Set或Get
error#1050缺少'Property'
error#1051在所有属性的规范中,变量的数目必须一致
error#1052在一个类中不允许有多个缺省的属性/方法
error#1053类的初始化或终止程序没有变量
error#1054属性的set或let必须至少有一个变量
error#1055错误的'Next'
error#1056'Default'只能在'Property','Function'或'Sub'中指定
error#1057指定'Default'时必须同时指定'Public'
error#1058只能在PropertyGet中指定'Default'
error#4096MicrosoftVBScript编译器错误
error#4097MicrosoftVBScript运行时错误
error#5016缺少正则表达式对象
error#5017正则表达式语法错误
error#5018错误的数量词
error#5019正则表达式中缺少']'
error#5020正则表达式中缺少')'
error#5021字符集越界
树形菜单:
<SCRIPTlanguage="JavaScript">
varlastObj
functionexpandIt(obj)
{
if(lastObj!
=null)
{
if(obj==lastObj)
{
if(obj.style.display=="none")
{
obj.style.display="";
}
else
{
obj.style.disp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网易学院第六章 asp编程经验谈 网易 学院 第六 asp 编程 经验谈