asp与sql网页数据库程序设计12Word文件下载.docx
《asp与sql网页数据库程序设计12Word文件下载.docx》由会员分享,可在线阅读,更多相关《asp与sql网页数据库程序设计12Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
∙由于这些调用程序结束时,MTS无法重复地使用它们的资源,因此在MTS组件的处理过程中,不要存储有关状态信息(例如:
局部变量或是全局变量等)。
如果必须存储这些状态,可以将这些状态存放在数据库中或是MTS的共享属性管理(SharedPropertyManager)中,并得以随时调用并取得这些状态信息。
∙当组件成功地完成处理后,必须调用MTSContextObject内的“SetComplete”方法。
此方法可以通知MTS组件已经完成工作并停止服务。
∙如果组件无法执行成功,必须使用“SetAbort”方法通知MTS放弃继续执行此组件的服务程序。
当设计出来的应用组件都能按照这些准则运行,将对MTS的管理及运行有非常大的益处。
关于如何将这些MTS应用组件转成DLL组件,并加到MTS的环境中,笔者将在稍后的章节中做详细的叙述。
特别说明事实上,多层应用系统不仅只是包含图12-2所示的三层结构应用系统模型。
凡客户端与应用组件在不同设备上执行,并利用网络连接取得相关信息者,皆称为层。
通常层数在两层以上者,称之为多层应用系统。
但在现今多数应用环境中,以三层构建的应用系统模型最为常见,因而笔者特以此层为范例说明。
12-1-2 何时该使用MTS呢
对于以MicrosoftCOM为基础的应用组件而言,在设计与开发多层应用系统过程中,MTS确实有很大优势。
对于MTS如何在应用方面增加其附加值的部分,最好的方法是了解一下“何时使用MTS”的有关说明。
1.有关Web-Based的应用
在许多应用中,利用Web做为商业间的数据传输方式,使用浏览器就可以非常简单地连接至服务器,并提供客户端强大的功能以及动态数据的展示。
利和现今网络互连的便捷性,用户可以使用浏览器连接至世界上任一角落的服务器,执行数据的存取。
近来值得注意的是在网页上具有用户输入功能以及动态数据展示的功能,已经成为所有Web应用系统的一部分。
而通常这些Web应用系统都是以HTML为基础,并且在这些网页上具有要求输入然后进行数据库操作等功能。
因此如何处理这些由用户输入的数据,并且数据库响应相应的要求是很重要的。
向数据库索取用户要求的数据,是通过中间服务器及组件完成这些动作的,用户无须直接对数据库进行任何操作。
使用以MTS为基础的多层结构应用系统模型是非常适合这种要求的,在Web上使用这种应用模型有下列优点:
∙多数的Web服务器仅提供部分或完全不提供任何多层结构的应用,这些Web服务器通常可以提供脚本语法上的应用。
∙大多数的Web脚本虽然其本身并不提供数据库的存取服务,但它们通常可以提供与外部应用系统的连接,进而提供原系统功能之外的服务。
∙提供共享的用户界面,不需理会用户所使用的平台。
实现多层结构应用系统模型最好的方法是在Web应用系统上使用CGI应用程序。
目前在Web环境中使用的CGI程序种类很多,笔者将以VisualBasic所产生的“ActiveXDLL”做为Web应用系统的CGI程序,为读者进一步说明这些“ActiveXDLL”如何产生、如何与MTS结合。
如果用户对其他的CGI产生与结合方式有兴趣,请自行参考与WebCGI相关的书籍。
2.IIS与ActiveServerPages
对于以Web作为应用系统的前端用户而言,MTS与MicrosoftIIS4.0无疑提供了多层结构应用系统模型开发上的一种完美组合。
由于IIS4.0所附加的ASP(ActiveServerPages)是一种以VisualBasic及Javascript为脚本,以标准HTML命令输出的应用系统开发语言,因而其非常适用于交互式网页的开发。
ASP文件是以“.ASP”作为扩展名。
那么ASP到底能提供哪些服务呢?
例如:
用户在网页上“用户姓名”的字段中输入“陈峰棋”,系统通过MTS与ASP应用系统的相互协作,并且直接通过ODBC就可以向数据库要求调阅出用户姓名为“陈峰棋”的所有相关信息。
并且ASP会将这些调阅出的信息以标准HTML语言生成动态网页,直接显示在客户端的浏览器上。
12-1-3 使用MTS的优点
当ASP对MTS组件进行调用时,此调用的需求可以同时来自于多个客户端,而此组件可以实现下列功能:
∙可以执行应用逻辑的任何计算需求。
∙通过与ODBC3.0兼容的驱动程序,直接存取一个或是多个不同的数据库系统。
∙使用标准的COM组件并且通过SNAServer4.0版的协助,直接存取大型计算机上的应用系统。
∙通过MSMQ发送或是接收信息。
∙调用其他组件以执行其他应用组件的功能。
由于MTS结构复杂,其相关叙述也很多,如果读者对于MTS有兴趣,不妨参考MTS相关书籍。
那么既然使用MTS可以达到共享组件的存取、数据库的存取、交互式网页的创建等好处,那么该如何在网页中使用MTS组件的服务呢?
从下一节开始,笔者将介绍如何设计这些MTS组件。
MTS的调用程序
当组件根据规定创建,应用系统即可继承MTS的优点(例如:
更高的效能、易于管理、较好的移植性),当DLL组件要加入MTS中或是从MTS中删除时,操作方式也非常简便、容易。
图12-3如何建立ASP组件
12-2如何创建ASP组件
在本节中,笔者希望读者了解如何在微软的多种操作平台下生成这些供ASP调用的“ActiveXDLL”组件,以及如何使用VisualBasic产生这些“ActiveXDLL”组件。
事实上,ASP中的许多组件都是使用VisualBasic编写出来的,ASP基本上使用的是VisualBasicScripting脚本语言。
如何在“ActiveXDLL”中使用ASP几个固有的对象(如:
Response,Equest,Application,Session等);
如果在VisualBasic中直接使用这些组件,是否代表着就可以直接在VisualBasic中编写ASP程序代码,进而达到ASP程序代码“组件化”的目的呢?
答案是肯定的。
那么在微软的这些操作系统中,哪些可以使用MTS组件呢?
下面所示的是可以使用MTS组件的操作系统:
∙Windows98
∙Windowsme
∙WindowsNT4.0
∙Windows2000
以上所示的Microsoft操作平台,Windows98与WindowsNTServer4.0是非常类似的,但在Windows2000与Windowsme操作平台方面,由于微软已经把MTS整合进COM结构,构建了COM+,因此在“ActiveXDLL”的产生上,将会有所不同。
12-2-1 新建工程
如果希望在VisualBasic中创建供ASP调用的MTS组件,则必须先创建相关的工程。
在“EX12-1”的范例中,笔者将先介绍如何创建MTS组件专用的工程。
由于Microsoft在不同操作系统上MTS结构有所变化,因此在工程的“引用”上也有所不同,笔者会对这两种环境进行详细的说明。
范例程序:
EX12-1
创建准备设计成为MTS组件的VisualBasic工程。
范例说明
虽然微软的MTS结构已经有所改变,但是在这些操作平台上创建MTS组件所用的工程基本上是相同的。
这些操作系统平台MTS组件的基本差异,仅仅是在VisualBasic的“引用”选项上有所不同。
进入VisualBasic,新建工程画面如图12-4所示。
图12-4创建新工程
如图12-5所示,选择“ActiveXDLL”,即可创建一个MTS组件所用的新工程。
图12-5选择“ActiveXDLL”选项
双击“ActiveXDLL”,即可见到如图12-6所示的画面。
图12-6创建完成的新工程
12-2-2 设置引用
由于在Windows98/NT与Windowsme/2000系统上,使用MTS的方式不同,因此在本节将分别以Windows9x与Windows2000两个不同平台为例加以说明。
在本章开始,笔者已经谈到有关这些平台上的不同点仅限于“引用”不同。
接下来直接进行的是如何在Windows9x/NT系统上,增加VisualBasic的引用。
1.WindowsNT4.0IIS与Windows98PWS
对于引用而言,只要WindowsNT与Windows98分别在安装“OptionPack4.0”、“PWS”时,安装了“TransactionServer”即可。
这时,读者就可以在“引用”窗口中找到,如图12-10中标示的“MicrosoftTransactionServerTypeLibrary”,并且在前面的空格中打勾即可。
以下的范例“EX12-2”即为在WindowsNT4.0加入“MicrosoftActiveServerPagesObjectLibrary”及“MicrosoftTransactionServerTypeLibrary”的范例与说明。
EX12-2
笔者以范例“EX12-1”所建工程为基础,在Windows98/NT操作平台上设置新的引用。
在设置引用完成之后,将范例“EX12-1”另存为“EX12-2”。
在VisualBasic中设置新增“引用”为“MicrosoftActiveServerPagesObjectLibrary”。
在VisualBasic中设置新增“引用”为“MicrosoftTransactionServerTypeLibrary”。
打开菜单中的“工程”,选择“引用”。
如图12-7所示。
图12-7打开“工程”中的“引用”
打开“引用”选项后,读者会见到如下所示的画面。
图12-8打开“引用”后的画面
接下来拖动垂直滚动条并且找到“MicrosoftActiveServerPagesObjectLibrary”,在找到“MicrosoftActiveServerPagesObjectLibrary”后,请在前面的空格中单击,加入成为引用的项目。
图12-9选取“MicrosoftActiveServerPagesObjectLibrary”的项目
在WindowsNT4.0或Windows98操作平台上,再增加“MicrosoftTransactionServerTypeLibrary”的引用,如图12-10所示。
图12-10增加“MicrosoftTransactionServerTypeLibrary”的引用
将新增“引用”之后的工程另存为“EX12-2”,如图12-11所示。
图12-11另存为新工程的执行画面
2.Windowsme或Windows2000
对于Windows2000操作平台,ASP所引用的项目未变,改的只是MicrosoftTransactionServer的部分。
由于在Windows2000环境中,MicrosoftTransactionServer被并入成为“COM+”的组件。
因此,当用Windows2000做为开发MTS组件的平台时,如要达到这项功能则必须引用“COM+ServicesTypeLibrary”。
EX12-3
同样以范例“EX12-1”所创建的工程为基础,开始在WindowsMe/2000操作平台上设置新的引用。
在设置引用完成之后,将范例“EX12-1”另存为“EX12-3”。
开始与“WindowsNT4.0IIS&
Windows98PWS”的操作相同,打开菜单“工程”中的“引用”选项。
在VisualBasic中设置新增“引用”为“COM+ServicesTypeLibrary”。
(1)将垂直滚动条向下移并找到“MicrosoftActiveServerPagesObjectLibrary”,并选中“MicrosoftActiveServerPagesObjectLibrary”,加入成为引用。
(2)找到“COM+ServicesTypeLibrary”并选中,成为可用的引用。
图12-12在Windows2000中选用“MicrosoftActiveServerPagesObjectLibrary”
图12-13在Windows2000中选用“COM+ServicesTypeLibrary”
(3)将新增引用之后的工程另存为“EX12-3.vbp”。
图12-14另存新工程
12-2-3 如何设计ActiveXDLL的内容
完成了上一节两种不同操作系统中“MicrosoftActiveServerPagesObjectLibrary”、与MTS有关的函数库的加入工作后,接下来的编译方法是完全相同的。
接下来将详细说明如何使用MTS函数库和ASP函数库,在本节中还会为读者示范如何将自制的“ActiveXDLL”加入MTS中,供ASP程序调用。
1.为程序加入MTS对象和ASP对象
在使用自制的ActiveXDLL组件之前,必须为这个程序加入一些命令,这样在编辑之后的ActiveXDLL才会有响应。
以下是范例“EX12-4”的说明。
EX12-4
笔者以已经加入“MicrosoftActiveServerPagesObjectLibrary”和“MTS组件”的范例为基础(范例用“EX12-2”或“EX12-3”,完全视读者目前所使用的操作系统而定),这里以“EX12-3”为基础,在这个工程中分别加入“ASP函数库”的控制命令及MTS的控制命令。
∙在本范例程序的对象类别模块中,定义ASP的对象。
∙在本范例程序中,定义起始模块的子程序。
∙在起始模块的子程序中,设置调用已经定义的ASP函数库。
(1)在范例“EX12-3”名为Class1的模块内,定义所使用的ASP对象。
01.OptionExplicit
02.Dimm_ResponseAsResponse
03.Dimm_RequestAsRequest
04.Dimm_ServerAsServer
05.Dimm_ApplicationAsApplication
06.Dimm_SessionAsSession
程序说明
第02行:
定义m_Response的对象类型为ASP的Response对象。
第03行:
定义m_Request的对象类型为ASP的Request对象。
第04行:
定义m_Server的对象类型为ASP的Server对象。
第05行:
定义m_Application的对象类型为ASP的Application对象。
第06行:
定义m_Session的对象类型为ASP的Session对象。
(2)在范例“EX12-3”名为Class1的对象类别模块中,加入对象模块类别的起始子程序。
01.PrivateSubClass_Initialize()
02.DimobjContextAsObjectContext
03.SetobjContext=GetObjectContext()
04.Setm_Response=objContext("
Response"
)
05.Setm_Request=objContext("
Request"
06.Setm_Server=objContext("
Server"
07.Setm_Application=objContext("
Application"
08.Setm_Session=objContext("
Session"
09.EndSub
第01行:
定义名为“Class_Initial”的子程序,其作用是当此对象类别模块被调用时,能自行定义所有与ASP对象的关联性。
定义objContext对象的类型为MTS的ObjectContext。
定义objContext对象为调用MTS所用的对象名称。
定义m_Response的对象方法是使用MTSobjContext的调用方法,直接存取ASP函数库的Response对象。
定义m_Request的对象方法是使用MTSobjContext的调用方法,直接存取ASP函数库的Request对象。
定义m_Server的对象方法是使用MTSobjContext的调用方法,直接存取ASP函数库的Server对象。
第07行:
定义m_Application的对象方法是使用MTSobjContext的调用方法,直接存取ASP函数库的Application对象。
第08行:
定义m_Session的对象方法是使用MTSobjContext的调用方法,直接存取ASP函数库的Session对象。
将范例“EX12-3”工程、对象类别模块分别另存为“EX12-3”,“EX12-4”。
至此,“EX12-4”经过编译之后,已经可以被ASP程序调用。
但是在范例“EX12-4”的程序代码中,尚无任何可供ASP调用的子程序。
因此,笔者在名为“Class1”的对象类别模块中,加入一段名为“ShowMessage”的子程序,本段子程序主要是使用ASP的Response对象在网页上显示出“自制的ActiveXDLL实验”文字,并且在HTML文件上加上“换行(<
br>
)”的功能。
在“Class1”对象类别模块中加入以下的子程序,并保存为“EX12-5”。
图12-15另存工程
图12-16另存对象类别模块
EX12-5
01.PublicSubShowMessage()
02.m_response.Write"
自制的ActiveXDLL实验<
"
03.EndSub
定义名为“ShowMessage”的子程序。
使用已经定义过的m_Response对象的Write方法,将此段文字显示在网页上。
结束子程序的执行。
到目前为止,ActiveXDLL的所有定义、子程序都已编写完毕,但该如何将这段名为“Class1”的对象类别模块编译成ActiveXDLL供其他程序调用呢?
下面,继续下一节的编译工作。
12-2-4 编译ActiveXDLL
下面将以“EX12-5”为例,直接将其编译成“EX12-5.dll”供其他程序调用。
以下是编译ActiveXDLL的步骤。
(1)如下图所示,打开“文件”菜单。
图12-17选择“文件”命令
如下图所示,选择菜单中的“生成EX12-5.dll”命令。
图12-18选择“生成EX12-5.dll”命令
单击“生成EX12-5.dll”后,将会出现如图12-19所示画面。
图12-19即将制成执行文件的画面
单击“确定”按钮,此ActiveXDLL将会生成“EX-12-5.dll”文件,并且存放在“EX12-5”目录下。
在上图,读者还可见到“
”按钮可供选择。
当读者单击此按钮后,将见到如图12-20所示的画面。
在此窗口有许多“EX12-5.dll”的相关选项。
图12-20有关生成ActiveXDLL的选项
在上图中,读者可以看到有关“版本号”、“应用程序”、“版本信息”等选项,这些选项在前面的章节中已经介绍过,在此不多作叙述。
在图12-21所示的“编译”选项卡中,有一些相关信息是值得注意的。
在上图中,对于一般的标准执行文件,其“DLL基地址”是无法改变的。
“DLL基地址”选项主要用于设置程序的基地址,从而覆盖DLL文件的默认位置(在0X10,000,000处)。
操作系统首先试图在指定的或者默认的位置加载一个程序,如果没有足够空间,那么系统将重新定位该程序。
这点对一般DLL文件而言是无需更改的,但是如果用户将一个非常大的系统程序设计成DLL文件时,就必须改变DLL的基地址以便容纳此应用系统的执行。
图12-21“编译”选项卡中的选项
接着回到图12-19“生成工程”窗口,在单击“确定”之后,在EX12-5目录中便会生成EX12-5.dll文件,如下图所示。
图12-22EX12-5目录下的文件显示
EX12-5.dll已经成功地编译并且生成,那么该如何在ASP的程序中调用这个具有MTS组件调用功能的ActiveXDLL呢?
由于ActiveXDLL尚未加入MTS组件中,因此现在仍无法提供给其他应用系统调用。
在下一节中,笔者将介绍如何将自制的ActiveXDLL加入成为MTS组件。
12-3将组件加入MTS
在Windows操作平台,由于WindowsNT4.0、Windows2000同属于NT技术,文件结构基本相同,这里将它们归属为NT操作平台。
另一类则归为Windows9x操作平台。
因此,这个自制的ActiveXDLL在安装上将分为NT以及Windows9x不同平台