|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;
我们已懂得事件,并晓得怎样由ASP举行利用,上面举个例子。本节将以界说一个贸易请求及其相干的需求入手下手,然后经由过程利用ASP和COM+的事件来计划和完成。
19.5.1营业必要
在这个例子中,营业必要是定单处置体系的前端部分。定单处置体系要天生定单,同时也要调剂库存数目。每次承受定单,都要准确地调剂库存数目,这一点十分主要。
因为这个例子由两个义务构成(发生定单和调剂库存数目),将这些义务放在一个独自的事件中是需要的。如许就可以使用COM+的功效。COM+能为该事件供应一切的次要事情,我们所要做的仅仅是告知COM+提交或停止事件。
19.5.2计划
这个例子能分化为典范的三层布局,并且也合适Microsoft的DNA布局。在高层,这个例子是一个ASP用户界面(UI),在这里检察在SQLServer7.0数据库中的各类产物。可是,ASP代码不与数据库交互,它使用COM组件从未毗连的纪录集窗体中检索数据。
经由过程ASP用户界面检索定单,该ASP用户界面挪用一个事件性COM组件,这个COM组件把定单拔出到数据库中,同时也调剂库存数目。
1.数据服务
如上所述,数据库将驻留于SQLServer7.0中。选择SQLServer的缘故原由是它撑持COM+(DTC)事件。假如必要的话,也能够利用SQLServer6.5。
在这个例子中有两个表,一个是产物表,另外一个是定单表。为了复杂起见,在称为ASPTransactions的数据库中利用的表名分离是Orders和Products,表的布局分离如9-14和9-15所示。
应当在Products表中到场一些样本数据,以便能前往到ASP页中。
年夜多半使用程序创建在更庞大的数据库计划上,其数据库含有存储历程、触发器和调剂的义务等。但是,作为一个示例,上述表已充足充实了。
我们已在本书可下载的源代码中供应了剧本,这些剧本能够创立这些数据表,并把一些数据拔出到Products数据表中。
2.营业逻辑
这个例子的营业逻辑将封装在一个由VB创建的ActiveXDLL中。该DLL含有两个类:一个类能给挪用者供应检索可用产物列表的才能,另外一个类提交定单。检索产物列表的类长短事件性的,而更新列表的类是事件性的,以确保同时改动两个表。
19.5.3完成
如今翻开VB并创立新的ActiveXDLL项目。在VB中,设置项目标名字为ASPTrans,缺省类的名字设置为Order。增添一个类模子,称为Products。
假如但愿能在Order类中设置MTSTransactionMode为2-RequiresTransaction。当Order类被放进COM+时,它将主动地把组件的TransactionSupport属性设置为Required。记着,只要从AddFile对话框把组件到场到一个COM+使用程序时,这类缺省设置才会失效。
在类中到场代码之前,必需起首设置准确的援用,在References对话框中,设置的援用为MicrosoftActiveXDataObjects2.5Library和COM+ServicesTypeLibrary,如9-16所示。
如今能够把代码加到这些类中了。
1.产物组件
起首在Products类中增添一个名为GetProducts的函数。GetProducts办法没有参数,并前往一个未毗连的ADO纪录集。
接着,增加一切毛病处置、提交或停止事件的代码。要注重的是这个函数仅前往数据,不更新任何资本。但是,我们仍想利用情况来关照COM+发出这些资本:
新增添的代码完成了GetProducts函数,它对Products数据表实行一个一般的SELECT语句。
注重客户端指针的利用与服务器端指针完整分歧。当利用未毗连的纪录集事情时,必需利用客户端指针;它关照ADO立即猎取一切的数据,而不是一次读取一点数据。一旦检索到数据,代码断开纪录集,并把值前往给挪用者。
2.定单组件
接着,创建处置用户定单的办法。这个办法定名为PlaceOrder,是一个一般的子程序,请求有四个形貌定单的参数。PlaceOrder不是一个函数,也不前往值。
PlaceOrder请求的四个参数是利用者姓和名、产物的ID和数目。PlaceOrder程序将完成两个次要的事变:在Order数据表中增添一笔记录和为产物调剂库存数目。
上面增添毛病处置和事件撑持代码。像其他的办法一样,假如呈现毛病,将转进Error_Handler部分,并回滚事件;假如没有堕落,将提交事件:
如今,增添代码在Orders数据表中拔出一笔记录,并调剂产物库存数目。这能够复杂地经由过程创立一个ADOConnection工具并实行一条INSERT语句和一条UPDATE语句来完成。上面的代码能够显式地与一个ADOCommand工具一同被实行,可是为了复杂起见,这个例子仅仅利用了一个ADOConnection工具:
上述是ActiveXDLL所需的一切代码。对这个贸易逻辑来讲,剩下的只是编译DLL并将它安装到COM+使用程序中。
在COM+中安装DLL时,记着调剂Order组件中的TransactionSupport属性,以关照COM+在挪用时请求一个事件。在Transactions选项卡中,把设置调剂为Required,如9-17所示。
应当将Products组件的TransactionSupport属性设置为NotSupported,由于它对数据库实行只读操纵。
3.用户界面
在这个例子中的用户界面十分复杂,由两个页面构成:一个搜集用户定货信息;另外一个提交定单,并关照用户其定单是不是被乐成地承受。
Orders.ASP页向用户显现各类产物,同意他们天生一个定单。起首向该页增添一个包括定单输出控件的窗体:
接着,增添代码挪用ActiveX组件和检索产物列表,这经由过程利用Server工具的CreateObject函数创立这个类的实例来完成。一旦创建了对该类实例的援用,代码就能够检索纪录集,并在一个列表框中显现内容:
如今有了捕捉用户输出的ASP页面,剩下的事情是处置定单。这经由过程另外一个称为PlaceOrder.ASP的ASP页面完成。PlaceOrder.ASP是一个事件性ASP页面,它挪用ActiveXDLL中的PlaceOrder例程。PlaceOrder例程经由过程在数据库中增添定单纪录并调剂产物库存数目来更新数据库。上面入手下手增添PlaceOrder.ASP页面,在页面顶部设置Transaction指令,并增添OnTransactionCommit和OnTransactionAbort例程:
上面,填写事件例程代码,告知用户定单哀求的了局。为了做到这一点,在例程中拔出Response.Write语句。
19.5.4程序考证
考证一下这个例子。把一组定单增添到体系中。翻开SQLServer,察看Orders数据表中的纪录,如9-18所示。
为了考证事件处置历程,再次翻开ComponentServicesMMC插件,并选择所请求的盘算机中的DistributedTransactionCoordinator节点下的TransactionStatistics节点。事件统计监督器侦听DTC提交和停止事件,而且显现汇总了局,如9-19所示。
本章论述了事件处置的观点和怎样在IIS使用程序中经由过程利用Windows2000的组件服务(COM+)来利用事件。
Microsoft已为开辟者供应了一系列强无力的服务,使用程序可使用这些服务创立。这些服务,比方事件处置(DTC),同意开辟者会合精神办理营业成绩,而不用忧虑服务之间的底层通讯。
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|