把ASP用DLL来写的原因:
1、代码保护
ASP的代码是在交付客户的时候是完全被暴露的。相对的保密性没有。市场上出现了很多对Asp加密的产品,但是在起到保护代码的作用的同时,运行速度被降低了,而且也不便于二次开发和管理。而ActiveX DLL完全可以实现Asp能做的所有工作,而且成品是经过编译的DLL文件,这样只把成品交付客户即可,自己的技术得到了很好的保护。

2、运行高效
这一点单凭滔滔不绝的说是没用的!
下面的代码可以证明这个!

先来看看针对用VB来实现的一些必须的代码:

' ------------ 用ActiveX DLL来写ASP --------------------

' Author:任兀
'
 Nick Name:DSclub
'
 CSDN: dsclub(兀儿)
'
 WebLog:www.cnblogs.com/dsclub
'
 QQ:9967030



' |||||||||||||||||||||  说 明  |||||||||||||||||||||||
'
'
 必须要执行的工作:
'
 1、引用 MicroSoft Active Server Page Object Library组件
'
 2、添加 OnStartPage OnEndPage 事件
'
 3、OnStartPage事件负责接收 ScriptingContext 对象
'
    该对象提供ASP页面环境
'
'
'
||||||||||||||||||||||||||||||||||||||||||||||||||||||

Option Explicit

' ===========================================================

' ------------ 必须的Asp对象 ----------------
Private mContext As ScriptingContext

Private mApplication As Application
Private mResponse As Response
Private mRequest As Request
Private mSession As Session
Private mServer As Server
' ------------------------------------------

' 接收ScriptingContext对象
'
 初始化各个ASP对象
Public Sub OnStartPage(PassedScriptContext As ScriptingContext)
    
    
' Asp运行环境对象
    Set mContext = PassedScriptContext
    
    
' Asp 五大对象
    Set mApplication = mContext.Application
    
Set mRequest = mContext.Request
    
Set mResponse = mContext.Response
    
Set mServer = mContext.Server
    
Set mSession = mContext.Session
    
End Sub


' 释放内部对象
Public Sub OnEndPage()
    
Set mApplication = Nothing
    
Set mRequest = Nothing
    
Set mResponse = Nothing
    
Set mServer = Nothing
    
Set mSession = Nothing
    
    
Set mContext = Nothing
End Sub
' ===========================================================


好了,我认为注释写的还算可以啦……


直接证明速度上的优势啦,KKK~~~~~~~~~~

在VB里添加:
Public Sub Count()
Dim i As Long
Dim j As Long

For i = 0 To 10000000
    j 
= j + 2
Next i

mResponse.Write j
End Sub


再在Asp里写:
<%
<% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %>Response.Write "<br/>" & Now() & "<br/>"
Response.Flush

Set obj = server.CreateObject("DSclub.Imgcompose")
obj.Count
Set obj = Nothing

Response.Write "<br/>" & Now() & "<br/>"
Response.Flush
%>


同样的代码功能用纯Asp来实现一下:

<%@ Language=VBScript %>
<%
Dim i,j

Response.Write "<br>" & Now() & "<br>"
Response.Flush


For i=0 to 10000000
 j = j+2
next


Response.Write j

Response.Write "<br>" & Now()  & "<br>"
Response.Flush
%>
<%@ Language=VBScript %><% Dim i,j Response.Write "
" & Now() & "
" Response.Flush For i=0 to 10000000 j = j+2 next Response.Write j Response.Write "
" & Now() & "
" Response.Flush %>

分别运行两个页面看结果:
靠,都不想说了
DLL的那个页面结果:
2004-7-10 15:41:48
20000002
2004-7-10 15:41:48

纯Asp的那个页面结果:
2004-7-10 15:41:38
20000002
2004-7-10 15:41:42


我的机器是
P42.8c 512M的
OS:windos XP

竟然差了这么多!!!

<% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %><% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %><% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %><% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %><% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %><% Response.Write "
" & Now() & "
" Response.Flush Set obj = server.CreateObject("DSclub.Imgcompose") obj.Count Set obj = Nothing Response.Write "
" & Now() & "
" Response.Flush %>
posted on 2004-07-10 15:44  雪美·考拉  阅读(5525)  评论(14编辑  收藏  举报