想到ASP 很多人会说 “asp语言很蛋疼,不能面向对象,功能单一,很多东西实现不了” 等等诸如此类。 以上说法都是错误的,其一ASp不是一种语言是 微软用来代替CGI的一种web框架,只不过我们一直被扭曲在 vbs就是asp的默认语言,把ASP 和 vbs 之间划了等号。 其二 Asp 功能其实并不单一 此web 提供5个对象 (request、 response、 server、 session、 appliaction)这就是asp与生俱来的东西,除了这些东西都是Asp 所用的脚本级的东西。 而ASP 借助了 Asp.dll动态链接库,理论上可以试用一切脚本语言包括(vbscript 、jsscript、 actionscript、 perl 、python),所以说ASP是非常丰富的灵活的 web框架
python 最近如火如荼,非常之火,他在各大领域都占有自己举足轻重的地位,web方面自然也少不了他。 Echosong 已经用过django 、web.py 等等python自己的web框架。由于工作需要 Echosong 很大一部分时间是在写ASP。 而vbs的Asp实在让人写得有种 想死感觉,很多功能借助各种 c 或者其他语言写的dll 稳定性难以考量,而echosong又是一个Python 的 十足迷、08年开始接触python 一直是做为一种爱好没断过,只是一直没用于工作。
1、asp 的安装 : 随着IIS 的安装asp就成为了默认安装好的web框架
2、安装 activepython: ActivePython是由 ActiveState 公司推出的专用的 Python 编程和调试工具。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<
%
import
pymssql
class
MSSQL:
def
__init__(
self
,host,user,pwd,db):
self
.host
=
host
self
.user
=
user
self
.pwd
=
pwd
self
.db
=
db
def
__GetConnect(
self
):
if
not
self
.db:
Response.write(NameError,
"No connec Info"
)
self
.conn
=
pymssql.connect(host
=
self
.host,user
=
self
.user,password
=
self
.pwd,database
=
self
.db,charset
=
"utf8"
)
cur
=
self
.conn.cursor()
if
not
cur:
Response.write(NameError,
"connect Err"
)
else
:
return
cur
def
getCur(
self
):
return
self
.__GetConnect()
def
ExecQuery(
self
,sql):
cur
=
self
.__GetConnect()
cur.execute(sql)
resList
=
cur.fetchall()
self
.conn.close()
return
resList
def
ExecNonQuery(
self
,sql):
cur
=
self
.__GetConnect()
cur.execute(sql)
self
.conn.commit()
self
.conn.close()
gmssql
=
MSSQL(host
=
"****"
,user
=
"****"
,pwd
=
"***"
,db
=
"***"
)
gcur
=
MSSQL.getCur()
%
>
|
这里 可以自由的import python的相关模块!!!
data.asp 文件调用conn.asp的数据连接执行sql语句 循环显示字段的值到页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<
%
@LANGUAGE
=
"python"
CODEPAGE
=
"65001"
%
>
<!
-
-
#include file="conn.asp"-->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<head>
<meta http
-
equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/
>
<title>无标题文档<
/
title>
<
/
head>
<body>
<
%
resList
=
gmssql.ExecQuery(
"select admin_Id, admin_UserId from admin"
)
%
>
<table>
<tr><td>管理员编号<
/
td><td>管理账号<
/
td><
/
tr>
<
%
for
(admin_Id,admin_UserId)
in
resList:
Response.write(u
"<tr><td>"
+
str
(admin_Id)
+
"</td>"
)
Response.write(u
"<td>"
+
str
(admin_UserId)
+
"<td></tr>"
)
%
>
<
/
table>
<
/
body>
<
/
html>
|
注意第一行 <%@LANGUAGE="python" CODEPAGE="65001"%> 告诉 Asp.dll 用的是python脚本。因为conn.asp文件是被data应用了,所以不需要加这行,如果直接执行conn.asp会报错,因为默认是vbs脚本。
运行 data.asp 就能在页面上面显示 相应的数据展示效果
1、高度代码复用: 可以写自己项目的模块,把平时常用的代码 写成 python的模块,然后服务器上所有的都可以借助 import 来调取
2、试用python优秀特征: python 强大的Python库 很多现成的功能直接用,而不要想传统asp(vbs脚本的)借助 很多 编译行语言的的dll来实现
3、完全的面向对象: vbs是面向过程的语言,对象的特征很弱,很多面向对象的思想不能用。
做了压力测试 同一时间处理事务的能力,各方面参数强于vbs的,特别是在连接数据库用了些python 优秀开源的池处理模块,使得很多数据库的瓶颈减轻
以下为性能压力测试
<模拟的用户数,两种情况公用一个>
<python 脚本连接数据>
<python吞吐情况>
跟vbs 的 ADO做些对比 ADO图没有截取过来,但是从吞吐量,和事务处理速度都比Vbs ADO要强,有兴趣的同学可以自己测试看看!!!