ASP编程:COM+事件和IIS
SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。iisMicrosoft已严密地集成了IIS和COM+的功效,这使我们能十分简单地在事件性Web页面编程中使用事件处置使用程序。有很多分歧体例集成COM+和IIS的事件特征,这些例子包含:
?事件性ASP。
?ASP中的ObjectContext。
?事件性事务。
开辟者能够在利用IIS和COM+的使用程序中利用一个或多个这些特征。由于它们是严密集成的,开辟者只举行大批的事情,就可以充实使用这些服务。现实上,在COM+中ObjectContext封装了一个事件,能够间接用于事件中的ASP页面。
19.4.1事件性ASP
因为IIS4.0和MTS的集成,开辟者能够在一个事件中包括ASP剧本。这些ASP网页能够包括对服务器组件的挪用,这些组件也将介入不异的事件。同一切的事件一样,假如事件的任一部分失利,将回滚全部事件。事件性ASP剧本所增添的长处就是使得把多个组件绑定到单个事件中变得复杂化。
当处置一个停止的事件时,利用事件性剧本有一个成绩。经由过程数据库的资本办理器会见数据库发生的改动将被主动地回滚,但是,COM+不克不及回滚剧本本身发生的变更。比方,利用剧本发生的任何变更,如对Session或Application变量的改动,将不会主动地回滚。今后你将看到怎样利用事件性事务关照事件已停止。当处置这个事务时,妙手工地回滚COM+不克不及主动回滚的变更。这类限定的缘故原由是COM+事件只能回滚与MSDTC相容的服务发生的变更。
在IIS5.0中有一个新特征。开辟者具有使得一个事件超过多个ASP剧本网页的才能。这回功于在Server工具上新增的Execute和Transfer办法。
但是,一般情形下,单个事件的一切处置能够在单个ASP网页中完成。比方,假如一个使用程序有一个组件从一个帐户中提款,而另外一个组件在一个帐户中存款。为了把资金从一个帐户转到另外一个帐户,创立ASP剧本,使用提款组件从帐户中掏出资金,利用存款组件把资金存进新的帐户。将一切这些功效放进一个事件性ASP网页中,假如事件历程的任一部分失利,就回滚一切的变更,帐户余额回到其初始值。
为声明一个网页是事件性的,利用以下指令:
<%@TRANSACTION=value%>
对TRANSACTION指令大概的设置有:
?Disabled:告知COM+不但愿在事件中触及组件。
?Requires_New:即便已存在一个事件,也启动一个新的事件。
?Required:假如不存在事件就启动一个新的,假如存在就介入到个中。
?Supported:不启动一个事件,可是假如事件已存在就介入它。
?Not_Supported:即便存在事件,也不介入事件。
这些值与利用组件服务扫瞄器为每一个组件设置的TransactionSupport属性的感化不异。
TRANSACTION指令必需处在ASP页面剧本的第一行,一般由LANGUAGE指令包括。假如这之前在页面中有任何内容,将发生剧本毛病。好像组件中的事件一样,假如抵达代码的最初一行,还没有提交或停止,则COM+假定提交,并把变更写进磁盘。别的,由页面挪用的每一个工具可以利用统一ASP页面的ObjectContext工具介入事件,一般就是这么做的。
19.4.2事件性ASP中的ObjectContext工具
当编写一个事件性ASP剧本时,你大概想间接影响剧本的事件的了局。像为事件编写的组件一样,ASP页也能使用ObjectContext工具。自从宣布了ASP2.0今后,就能够使用这个工具,它为开辟者必要的一切事件处置例程供应功效。服务器组件介入事件时会见的就是这个工具,它包括SetAbort和SetComplete办法。
以下代码显现了在一个事件性Web页中怎样实例化两个COM工具和一个事件,并在这两个工具上挪用一个办法。
注重,页面顶部的事件设置标明哀求一个事件。恰是该设置使该页面像COM组件一样介入统一事件。现实上,只需COM组件的TransactionSupport属性为Required或Supported,它们就酿成由ASP页启动的事件的一部分。
跟着ASP页实行,挪用每一个COM类的一个办法。当实行每一个办法时,其前往值用于决意处置是不是乐成。假如任一办法前往一个非零值,ASP页务。不然,ASP页将提交事件并将变更存进磁盘。
这个例子的要点是一切的办法挪用跟着ASP页面一挪用ObjectContext工具中的SetAbort办法,回滚事起进进到统一事件中。
上述的例子还能够改写,使得COM组件中的办法从外部挪用SetComplete和SetAbort办法。这将从ASP页中删除一些逻辑,并嵌进到COM组件中。用这类体例编写事件的独一成绩是ASP页不晓得将要提交仍是停止事件。但是,这能够经由过程完成事件事务来办理。
19.4.3事件事务
ASP页也具有侦听COM+的才能,能够懂得事件什么时候将提交或停止。这是经由过程在COM+提交或停止事件前IIS挪用两个例程来完成的。这两个办法称为OTransactionCommit和OnTransactionAbort。
OnTransactionCommit办法在COM+提交事件之前、筹办阶段以后被触发。只需事件中没有任何部分停止,将触发OnTransactionCommit例程(事务),提交事件。假如事件被停止,则触发OnTransactionAbort事务:
同年夜多半事件性ASP页一样,上述例子的入手下手外声明它请求一个事件,接上去剧本挪用一个事件性COM工具的办法。一旦完成该页,COM+将经由过程反省是不是有事件的某一部分挪用了SetAbort办法来决意事件的了局。假如没有挪用SetAbort办法,就触发OnTransactionCommit事务,而且提交该事件;假如挪用了SetAbort办法,则触发OnTransactionAbort事务,回滚事件。
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的; 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
页:
[1]