ASP编程:透视和调剂你的企业和商务体系(Ⅱ:CO...
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;吝啬的神2001-10-11接着上一篇所说的三个过程当中第一个步骤入手下手举行,情况必要两部呆板,一部做SQLServer,一部做App和安装IIS。摹拟如今罕见的WindowsDNA布局,在ASP中挪用Biz组件。VB的Client端我就省略了,选择IE作为Client端,独一想考证的是构架和组件是OK的就行了。
这一篇和dotNET还没有任何干系,由于当时还没有dotNET手艺,为了更实在的摹拟实际好比庞大一点带有事件请求的逻辑,我决意把SQLServer和组件放在两台呆板上。
内容我选用SQLServer自带的Pub数据库的Author表作为原型。当我翻看本来的一些使用代码和组件发明全部的代码一样平常分为两类:一类是完成一个贸易和营业逻辑的操纵,带进必需的参数给Biz组件,Biz组件挪用别的Biz组件或DB组件完成必要的各类操纵,然后前往一个复杂的数据范例返来给体现层。好比一个String字符串(毛病形貌),一个Long型(暗示某种流水号,甚么编号或是毛病代码等);另外一类是查询或某种操纵以后前往的大批数据,让我光荣的是本人已习气了用ADODB.Recordset来前往这些大批数据,以是这一类很一致,一样平常都是ADODB.Recordset范例的前往值。除此以外连Variant都很少很少,本人界说的布局范例在Biz这一层的前往值中几近为零。
关于WebService来讲,数据被一致成XML的格局,我入手下手设想这些ADODB.Recordset在XML中会是甚么容貌的?客户端又怎样利用这些XML格局的ADO数据呢?几近第一个反响是用MicrosoftSOAPToolkit来办理这个成绩,以是对SOAPToolkit发生的WSDL文件充斥猎奇,想晓得这类ADODB.Recordset前往值的WSDL会是如何的。现实上,今后实验的了局让人气馁。不外成绩更早的表露出来了,就是这些自界说或说不是SOAP撑持的数据范例的数据怎样处置的成绩,今朝会合在ADODB.Recorset这类数据范例上。这些成绩也就决意了要发生的db和Biz组件。
DB组件没有出格的,Biz组件我决意间接挪用这些DB组件,先没有任何的逻辑,现实上Biz中多是很庞大的,挪用良多别的的Biz或DB组件,但常常它最初只会有一个了局:乐成或失利,或是前往一组数据,也就是我下面回类的两种。以是我入手下手用相似的Update,Delete功效:
PublicFunctionDeleteAuthor(ByValau_idAsString)AsLong
来摹拟第一类前往SOAP撑持的单一数据范例的情形,实际的使用中大概会是:
PublicFunctionChangePaymentType(ByvalnTypeIDasLong,ByvalValueasInteger)AsLong一个修正用户付款体例的贸易逻辑。
用Select功效
PublicFunctionGetAuthorsByName(ByValfNameAsString,ByVallNameAsString)AsADODB.Recordset来摹拟第二类前往不是基础数据范例的前往值,实际的使用中大概会是
PublicFunctionGetCustomerInfoByID(ByvalnCustomerIDasLong)AsADODB.Recordset一个依据客户ID来取得客户材料的贸易逻辑。
我列出前面用的最多的两个函数的代码,出格是这两个函数名会在前面被大批触及到:
Biz组件:bus_Authors.Authors,编译成DLL:bus_Authors.DLL
PublicFunctionVersion()AsString
Version="VB&SOAPver1.00"
objCtx.SetComplete
EndFunction
PublicFunctionGetAuthors()AsADODB.Recordset
OnErrorGoToErrHandler
DimobjAsObject
Setobj=CreateObject(dbcomName)
SetGetAuthors=obj.GetAuthors()
objCtx.SetComplete
Exit_Err:
ExitFunction
ErrHandler:
SetGetAuthors=Nothing
objCtx.SetAbort
Err.RaiseErr.Number,SetErrSource(modName,"GetAuthors"),Err.Description
ResumeExit_Err
EndFunction
db组件:db_Authors.Authors,编译成DLL:db_Authors.DLL
PublicFunctionGetAuthors()AsADODB.Recordset
OnErrorGoToHandleError
DimRstAsADODB.Recordset
DimstrSqlAsString
SetRst=newClientRstOnlyRead(5)
strSql="SELECT*FROMAuthors"
Rst.OpenstrSql,strConstruct,adOpenStatic,adLockReadOnly,adCmdText
IfNotIsRstEmpty(Rst)Then
SetGetAuthors=Rst
Else
SetGetAuthors=Nothing
EndIf
objCtx.SetComplete
HandleExit:
ExitFunction
HandleError:
objCtx.SetAbort
SetGetAuthors=Nothing
Err.RaiseErr.Number,SetErrSource(modName,"GetAuthors"),Err.Description
ResumeHandleExit
EndFunction
Version()和GetAuthors()分离用来摹拟上诉的两类前往值的情形,剩下的还包含上面的函数:
PublicFunctionEcho(ByValsEchoAsString)AsString
PublicFunctionGetAuthorsByName(ByValfNameAsString,ByVallNameAsString)AsADODB.Recordset
PublicFunctionDeleteAuthor(ByValau_idAsString)AsLong
PublicFunctionUpdateAuthorByAddress(ByValau_idAsString,ByValsAddressAsString)AsLong
这些分歧的是到场了参数,和下面的Version和GetAuthors前往值没有甚么分歧以是我前面只会商Version和GetAuthors这两个函数,剩下的完成上只要稍略不同。
完成后编译组件,安装在Windows2000的COM+中,我创建了一个叫Authors的Application。然后使用ComponentServices分离将AuthorsApplication用Export...功效倒出一个ServerApplication和Applicationproxy的安装包,前面我们会用上它们。如图:
然后设置好IIS,创建一个假造目次Authors写一个复杂的ASP页面挪用bus_Authros.Authors组件的Version和GetAuthors办法发生一个Html的输入(VB和ASP的客户真个测试代码我都省略了)。包管Http://localhost/Authors/TestAuthors.asp或
Http://henrysvr/Authors/TestAuthors.asp挪用一般在IE中发生页面输入。
TestAuthors.asp放的物理的目次我假定是:C:InetpubwwwrootAuthors中,这个目次鄙人面的章节中还会触及到而且寄存我们的WSDL等文件。
假如上述统统OK那末基础上完成了第一步,有了一个复杂的WindowsDNA构架的例子使得上面的步骤能够入手下手举行,今朝的构架大概象上面如许的:
别的防火墙都将不再思索在内了,我没有摹拟它。实践使用中防火墙是必要详细思索的一个要素。
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
页:
[1]