ASP网站制作之在ASP与ASP.NET之间共享对话形态(2)
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;asp.netASP完成本来的ASP对话只能将对话数据保留在内存中。为了将对话数据保留到SQLServer,必要写一个自界说的VisualBasic6.0COM工具取代如今的对话工具来办理对话形态。该COM工具在每一个Web哀求入手下手时被初始化,并从SQLServer从头载进对话数据。ASP剧本完成时,该工具将停止并把对话形态将前往到SQLServer。
VisualBasic6COMSession工具的次要目标是供应对微软Internet信息服务器(IIS)外部工具的会见。VisualBasic6COM对话工具利用SessionUtility组件的mySession类来保留对话形态,SessionUtility的SessionPersistence类用于载进和保留对话数据到SQLServer。利用regasm.exe工具将mySession和SessionPersistence类作为COM工具表露。regasm.exe工具能够注册并为COM客户端创建一个范例库来利用框架组件类。
在工具的机关函数中形态信息被从头载进。机关函数(class_initialize)起首从Application工具中检索对话cookie、对话超时设置(SessionTimeOut)、数据库毗连字符串(SessionDSN),并创建mySession类的一个实例来坚持对话数据。接着机关函数将试图从头利用给定的cookie从SQLServer中载进对话数据。假如SQLServer中没有对话信息,大概对话已停止,将发生一个新的cookie。假如SQLServer前往了对话形态数据,对话形态信息将保留在mySession工具中。
PrivateSubClass_Initialize()
OnErrorGoToErrHandler:
ConstMETHOD_NAMEAsString="Class_Initialize"
SetmySessionPersistence=NewSessionPersistence
SetmyObjectContext=GetObjectContext()
mySessionID=ReadSessionID()
myDSNString=GetConnectionDSN()
myTimeOut=GetSessionTimeOut()
myIsNewSession=False
CallInitContents
ExitSub
ErrHandler:
Err.RaiseErr.Number,METHOD_NAME&":"&Err.Source,Err.Description
EndSub
PrivateSubInitContents()
OnErrorGoToErrHandler:
ConstMETHOD_NAMEAsString="InitContents"
IfmySessionID=""Then
SetmyContentsEntity=NewmySession
mySessionID=mySessionPersistence.GenerateKey
myIsNewSession=True
Else
SetmyContentsEntity=mySessionPersistence.LoadSession(mySessionID,myDSNString, myTimeOut)
EndIf
ExitSub
ErrHandler:
Err.RaiseErr.Number,METHOD_NAME&":"&Err.Source,Err.Description
EndSub
假如工具实例超越了剧本的局限,将实行解构函数(class_terminate)。解构函数将利用SessionPersistence.SaveSession()办法坚持对话数据。假如是一个新对话,解构函数将新cookie发送回扫瞄器。
PrivateSubClass_Terminate()
OnErrorGoToErrHandler:
ConstMETHOD_NAMEAsString="Class_Terminate"
CallSetDataForSessionID
ExitSub
ErrHandler:
Err.RaiseErr.Number,METHOD_NAME&":"&Err.Source,Err.Description
EndSub
PrivateSubSetDataForSessionID()
OnErrorGoToErrHandler:
ConstMETHOD_NAMEAsString="SetDataForSessionID"
CallmySessionPersistence.SaveSession(mySessionID,
myDSNString,myContentsEntity,myIsNewSession)
IfmyIsNewSessionThenCallWriteSessionID(mySessionID)
SetmyContentsEntity=Nothing
SetmyObjectContext=Nothing
SetmySessionPersistence=Nothing
ExitSub
ErrHandler:
Err.RaiseErr.Number,METHOD_NAME&":"&Err.Source,Err.Description
EndSub
例程
例程计划为增添并显现一个数字。不论载进了哪一个页面,因为数字值保留在SQLServer中并在ASP和ASP.NET间共享,数字将不休增添。
创建例程的步骤
1.创建一个新数据库SessionDemoDb。
2.创建新表SessState(osql.exe-E-dSessionDemoDb-iSession.sql)。
3.创建新假造目次Demo。
4.在ASP设置页中封闭ASP对话。
5.将web.config、testPage.aspx、Global.asa、testPage.asp和GlobalInclude.asp复制到假造目次。
6.更新Global.asa和web.config中的DSN字符串设置。对话超时设置是可选的,默许为20分钟。
7.将SessionUtility.dll安装到全局组件缓存(gacutil/iSessionUtility.dll)。
8.利用regasm.exe把SessionUtility.dll作为COM工具表露(regasm.exeSessionUtility.dll/tlb:SessionUtility.tlb)。
9.将SessionManager.dll复制到当地目次并利用regsvr32.exe注册(regsvr32SessionManager.dll)。
10.付与IUSR_<盘算机名>帐户读取和运转会见SessionMgr.dll的权限。
运转例程的步骤
1.翻开微软InternetExplorer。
2.为传统的ASP中载进testPage.asp。数字"1"将呈现在Web页中。
3.点击InternetExplorer的革新来从头载进该页面。数字将增添。
4.为ASP.NET改动URL为testPage.aspx。数字仍旧增添。
5.假如利用testPage.aspx入手下手,历程不异。
在存在的ASP使用程序中拔出COM工具
开辟ASP使用程序的一个一般的习气是在每一个剧本入手下手时包括一个文件来共享代码和常量。拔出自界说对话工具的最初路子是在私有包括文件中到场示例代码。最初一步复杂地利用自界说对话变量名取代了一切到对话工具的援用。
限定/改善
本计划不撑持在Session工具中保留了COM工具的ASP使用程序。在这类情形下,为了利用自界说对话工具,必要一个自界说的调剂器来串行化/并行化形态。别的,本计划也不撑持保留字符串范例数组。做一些附加事情能够完成该特征:利用VisualBasic6.0的Join函数在保留到对话工具前将数组元素毗连成一个字符串,反向操纵可使用VisualBasic6.0的Split函数将字符串分化为自力的数组元素。在.NET框架组件中,Join和Split办法使String类的成员。
结论
ASP.NET提出了新的编程典范和系统布局,并供应了很多比传统ASP的优点。只管将ASP移植到ASP.NET的历程不复杂,ASP.NET更好的编程模子和更高的功能将使转换历程值得。除在Session工具中保留COM工具的惯例,本文会商的路子供应了一个复杂完成迁徙的办理计划。
</p>实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
页:
[1]