|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。xml|程序|互联网后面我们已先容了利用ASP和XML夹杂编程,那是由于ASP页面可以很简单让我们看清使用程序正在做甚么,可是你假如你不想利用ASP的话,你也能够利用任何你熟习的手艺往创立一个客户端程序。上面,我供应了一段VB代码,它的功效和ASP页面一样,也能够显现不异的数据,可是这个VB程序不会创立发送到服务器的XML字符串。它经由过程运转一个名叫Initialize的存储历程,从服务器取回XML字符串,来查询ClientCommands表的内容。
ClientCommands表包含两个域:command_name域和command_xml域。客户端程序必要三个特定的command_name域:getCustomerList,CustOrderHist和RecentPurchaseByCustomerID。每个命令的command_xml域包含程序发送到getData.asp页面的XML字符串,如许,就能够会合把持XML字符串了,就象存储历程名字所体现的意义一样,在发送XML字符串到getData.asp之前,客户端程序利用XMLDOM来设置存储历程的参数值。我供应的代码,包括了用于界说Initialize历程和用于创立ClientCommands表的SQL语句。
我供应的例程中还申明了怎样利用XHTTPRequest工具完成我在本文一入手下手时许下的答应:任何远程的呆板上的使用程序都能够会见getData.asp;固然,你也能够经由过程设置IIS和NTFS权限来限定会见ASP页面;你能够在服务器上而不是客户机上存储全局使用程序设置;你能够制止经由过程收集发送数据库用户名和暗码所带来的隐患性。另有,在IE中,使用程序能够只显现必要的数据而不必革新全部页面。
在实践的编程过程当中,你们应该利用一些办法使使用程序加倍有高效性。你能够把ASP中的关于获得数据的代码端搬到一个COM使用程序中往然后创立一个XSLT变更来显现前往的数据。好,我未几说了,如今你所要做的就是试一试吧!
OptionExplicit
PrivateRCommandsAsRecordset
PrivateRCustomersAsRecordset
PrivateRCustAsRecordset
PrivatesCustListCommandAsString
PrivateConstdataURL="http://localhost/XHTTPRequest/getData.asp"
PrivatearrCustomerIDs()AsString
PrivateEnumActionEnum
VIEW_HISTORY=0
VIEW_RECENT_PRODUCT=1
EndEnum
PrivateSubdgCustomers_Click()
DimCustomerIDAsString
CustomerID=RCustomers("CustomerID").Value
IfCustomerID<>""Then
IfoptAction(VIEW_HISTORY).ValueThen
CallgetCustomerDetail(CustomerID)
Else
CallgetRecentProduct(CustomerID)
EndIf
EndIf
EndSub
PrivateSubForm_Load()
Callinitialize
CallgetCustomerList
EndSub
Subinitialize()
从数据库前往命令名和响应的值
DimsXMLAsString
DimvRetAsVariant
DimFAsField
sXML="<?xmlversion=""1.0""?>"
sXML=sXML&"<command><commandtext>Initialize</commandtext>"
sXML=sXML&"<returnsdata>True</returnsdata>"
sXML=sXML&"</command>"
SetRCommands=getRecordset(sXML)
DoWhileNotRCommands.EOF
ForEachFInRCommands.Fields
Debug.PrintF.Name&"="&F.Value
Next
RCommands.MoveNext
Loop
EndSub
FunctiongetCommandXML(command_nameAsString)AsString
RCommands.MoveFirst
RCommands.Find"command_name="&command_name&"",,adSearchForward,1
IfRCommands.EOFThen
MsgBox"Cannotfindanycommandassociatedwiththename"&command_name&"."
ExitFunction
Else
getCommandXML=RCommands("command_xml")
EndIf
EndFunction
SubgetRecentProduct(CustomerIDAsString)
DimsXMLAsString
DimxmlAsDOMDocument
DimNAsIXMLDOMNode
DimproductNameAsString
sXML=getCommandXML("RecentPurchaseByCustomerID")
Setxml=NewDOMDocument
xml.loadXMLsXML
SetN=xml.selectSingleNode("command/param[name=CustomerID]/value")
N.Text=CustomerID
Setxml=executeSPWithReturn(xml.xml)
productName=xml.selectSingleNode("values/ProductName").Text
显现text域
txtResult.Text=""
Me.txtResult.Visible=True
dgResult.Visible=False
显现product名
txtResult.Text="比来的产物是:"&productName
EndSub
SubgetCustomerList()
DimsXMLAsString
DimiAsInteger
DimsAsString
sXML=getCommandXML("getCustomerList")
SetRCustomers=getRecordset(sXML)
SetdgCustomers.DataSource=RCustomers
EndSub
SubgetCustomerDetail(CustomerIDAsString)
找出列表中相干联的ID号
DimsXMLAsString
DimRAsRecordset
DimFAsField
DimsAsString
DimNAsIXMLDOMNode
DimxmlAsDOMDocument
sXML=getCommandXML("CustOrderHist")
Setxml=NewDOMDocument
xml.loadXMLsXML
SetN=xml.selectSingleNode("command/param[name=CustomerID]/value")
N.Text=CustomerID
SetR=getRecordset(xml.xml)
埋没text,由于它是一个纪录集
txtResult.Visible=False
dgResult.Visible=True
SetdgResult.DataSource=R
EndSub
FunctiongetRecordset(sXMLAsString)AsRecordset
DimRAsRecordset</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|