Python 融於ASP框架

1、ASP的平反

  想到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框架html

 

2、爲何要用python寫Asp 

  python 最近如火如荼,很是之火,他在各大領域都佔有本身舉足輕重的地位,web方面天然也少不了他。 Echosong 已經用過django 、web.py 等等python本身的web框架。因爲工做須要 Echosong 很大一部分時間是在寫ASP。 而vbs的Asp實在讓人寫得有種 想死感受,不少功能借助各類 c 或者其餘語言寫的dll 穩定性難以考量,而echosong又是一個Python 的 十足迷、08年開始接觸python 一直是作爲一種愛好沒斷過,只是一直沒用於工做。python

 

3、開始把兩小夥伴融合在一塊兒

  一、asp 的安裝 : 隨着IIS 的安裝asp就成爲了默認安裝好的web框架web

  二、安裝 activepython: ActivePython是由 ActiveState 公司推出的專用的 Python 編程和調試工具。sql

ActivePython 包含了一個完整的 Python 內核,直接調用 Python 官方的開源內核,此外還有 Python 編程須要用到的 IDE,並附加了一些 Python 的 Windows擴展,同時還提供了所有的訪問 Windows APIs 的服務。ActivePython 雖然不像純 Python 那樣是開源的,可是也能夠免費下載使用。(注意版本只能下載 2.5的,一開始echosong也不信,下載了2.7 的版本 結果無情的500 箇中原因也不清楚,不過2.5的版本也夠用了)
  三、命令行 運行(python配置系統環境變量) python C:\Python25\Lib\site-packages\win32comext\axscript\client\pyscript.py;
  四、完成上面兩步就能夠着手寫python的Asp了
 

四 、簡單的Demo

  鏈接數據庫文件 conn.asp (用pymssql鏈接mssql數據庫)
<%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語句 循環顯示字段的值到頁面django

<%@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">
<html xmlns="http://www.w3.org/1999/xhtml">
<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 就能在頁面上面顯示 相應的數據展現效果服務器

 

 

5、用python 寫ASp的優點

  一、高度代碼複用: 能夠寫本身項目的模塊,把平時經常使用的代碼 寫成 python的模塊,而後服務器上全部的均可以藉助 import 來調取 session

  二、試用python優秀特徵: python 強大的Python庫 不少現成的功能直接用,而不要想傳統asp(vbs腳本的)藉助 不少 編譯行語言的的dll來實現app

     三、徹底的面向對象: vbs是面向過程的語言,對象的特徵很弱,不少面向對象的思想不能用。

  

6、穩定性 和性能的考慮

   作了壓力測試 同一時間處理事務的能力,各方面參數強於vbs的,特別是在鏈接數據庫用了些python 優秀開源的池處理模塊,使得不少數據庫的瓶頸減輕

如下爲性能壓力測試

                                                                                                                     <模擬的用戶數,兩種狀況公用一個>

 

                                                                                                                    <python 腳本鏈接數據>

 

    <python吞吐狀況>

 

跟vbs 的 ADO作些對比 ADO圖沒有截取過來,可是從吞吐量,和事務處理速度都比Vbs ADO要強,有興趣的同窗能夠本身測試看看!!!

相關文章
相關標籤/搜索