成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
在ASP程序中調(diào)用Web Service
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
AMTeam.org在ASP程序中調(diào)用Web Service
微軟投入了大量資金來(lái)推銷(xiāo)其.NET的各種優(yōu)點(diǎn),其中.NET最大的優(yōu)點(diǎn)之一就是微軟始創(chuàng)的XML Web Services。XML Web Services可以將你的程序和以前定制的DLL和COM/DCOM組建分離(避免陷入DLL陷阱),然后將這些功能設(shè)計(jì)成為XML Web Services,讓其他應(yīng)用程序也可以訪問(wèn)和調(diào)用這些功能(比如:網(wǎng)站、分布式程序)(關(guān)于怎樣在.NET中建立和使用XML Web Services,請(qǐng)參考這篇文章:http://aspnet.4guysfromrolla.com/articles/062602-1.aspx)。那么,當(dāng)你考慮提升現(xiàn)有ASP程序性能的時(shí)候,怎樣將其與已經(jīng)開(kāi)發(fā)的XML Web Services結(jié)合呢?
本文的目的就是演示怎樣將最新的XML Web Services和現(xiàn)有ASP程序結(jié)合起來(lái)。通過(guò)將一些具體的業(yè)務(wù)功能寫(xiě)成XML Web Services并且將這些XML Web Services與ASP程序完美結(jié)合,現(xiàn)有的ASP程序就可以象ASP.NET程序一樣共同“分享”XML Web Services的好處了。當(dāng)你需要提升現(xiàn)有ASP程序的性能并且和已經(jīng)開(kāi)發(fā)的ASP.NET同步,但是有沒(méi)有時(shí)間和精力將這些程序完全修改為ASP.NET程序的時(shí)候,我們就可以考慮將ASP和XML Web Services結(jié)合使用。
.jpg)
本文將要用到的例子是基于以下現(xiàn)實(shí)需要的:在B2B電子商務(wù)中,對(duì)于一些比較固定的客戶(hù),我們可能對(duì)他們有一些特殊的折扣。下文中我們將建立一Web Services,這個(gè) Web Services的功能就是針對(duì)特殊的客戶(hù)按照一定規(guī)則計(jì)算折扣,然后,我們將其與一個(gè)簡(jiǎn)單的ASP程序結(jié)合起來(lái)應(yīng)用。
數(shù)據(jù)庫(kù)
我們?cè)谶@里使用微軟Access中自帶的NorthWind數(shù)據(jù)庫(kù),當(dāng)然,我們不會(huì)照盤(pán)全收,我們需要對(duì)數(shù)據(jù)庫(kù)的“Products”數(shù)據(jù)表表結(jié)構(gòu)作一些小小的修改:增加一個(gè)保存商品實(shí)際價(jià)格的“CostPrice”字段(我們將填入一些隨機(jī)數(shù)據(jù))(這個(gè)數(shù)據(jù)庫(kù)可以在這里下載到:http://www.4guysfromrolla.com/webtech/code/asptonet.zip)
Web Service
在文章“Creating and Consuming
a Web Service”中已經(jīng)討論過(guò)(http://aspnet.4guysfromrolla.com/articles/062602-1.aspx),我們可以使用文本編輯器來(lái)建立Web Services,比如:WEB Matrix
Projext或者VS.NET等工具。文中我們將試驗(yàn)使用VS.NET來(lái)建立Web Service。
首先,在VS.NET中建立一個(gè)新的ASP.NET工程,然后,刪除程序建立的Web Form,增加一個(gè)新的Web Service文件(命名為:eCommerce.asmx),在這個(gè)Web Service中,將默認(rèn)的名字空間修改為ClassicASP_nDotNET.eCommerce,并且增加一個(gè)名為CalculateDiscountCompanyX的方法。
WEB方法CalculateDiscountCompanyX是一個(gè)用于計(jì)算公司CompanyX折扣的簡(jiǎn)單函數(shù)(當(dāng)然,更為健壯的解決方法是寫(xiě)一個(gè)通用的函數(shù)比如:CalculateDiscount(CompanyID),在這個(gè)函數(shù)中CompanyID專(zhuān)門(mén)用于定義特定的公司編號(hào),然后,程序根據(jù)公司編號(hào)查找數(shù)據(jù)庫(kù)得到具體的公司名稱(chēng),并對(duì)其做出折扣計(jì)算。我們這里主要的目的在于演示XML Web Services和ASP程序的結(jié)合使用,因此,只用需要一些簡(jiǎn)單函數(shù)。)
在我們的應(yīng)用中,假設(shè)對(duì)公司CompanyX的最小折扣為10%,公司最低純利潤(rùn)為7.5%,這些具體的折扣和利潤(rùn)都是固化寫(xiě)在程序中的。
WEB方法CalculateDiscountCompanyX相當(dāng)簡(jiǎn)單,將用到以下一些參數(shù):
1、UnitPrice:建議零售價(jià)格,數(shù)據(jù)類(lèi)型為Double;
2、CostPrice:商品的實(shí)際價(jià)格,也就是進(jìn)貨價(jià)格,數(shù)據(jù)類(lèi)型為Double;
3、AccessCode:該Web
Services的安全密碼,數(shù)據(jù)類(lèi)型為String;
如果函數(shù)計(jì)算出現(xiàn)錯(cuò)誤,將返回-1,以下是函數(shù)源代碼:
<WebMethod()> _
Public Function CalculateDiscountCompanyX(ByVal UnitPrice As Double, _
ByVal CostPrice As Double, _
ByVal AccessCode As String) As
Double
Dim dblDiscount As Double, _
dblMarkup As Double, _
dblMinMarkup As Double, _
dblMinClientDiscount As Double
dblMarkup = (1.3) '期望利潤(rùn)
dblMinMarkup = (1.075) ' 最低利潤(rùn)
' 對(duì)客戶(hù)的期望最低折扣
dblMinClientDiscount = (0.1)
Try
If AccessCode = "p455w0rd" Then
' 根據(jù)利潤(rùn)計(jì)算折扣
dblDiscount = FormatNumber(((UnitPrice - (CostPrice * dblMarkup))), 2)
' 檢查折扣是否合適na
If dblDiscount + 0 <= (UnitPrice *
dblMinClientDiscount) Then
dblDiscount = FormatNumber((UnitPrice *
dblMinClientDiscount), 2)
End If
' 檢查是否有最低利潤(rùn)
If (UnitPrice - dblDiscount) <=
(CostPrice * dblMinMarkup) Then
dblDiscount = FormatNumber((UnitPrice -
(CostPrice * dblMinMarkup)), 2)
End If
Return dblDiscount
Else
Return -1 '密碼錯(cuò)誤
End If
Catch ex As Exception
Return -1
End Try
End Function
將Web Services和ASP程序結(jié)合起來(lái)
為了使ASP和Web
Services相互通訊變得相對(duì)簡(jiǎn)單,需要首先下載安裝MS SOAP Toolkit 2.0(地址為:http://msdn.microsoft.com/SOAP/),這樣,就可以使用SOAP來(lái)實(shí)現(xiàn)ASP和Web Services的通訊,這將使ASP程序和Web
Services通訊與使用其他方法相比變得簡(jiǎn)單。事實(shí)上,在4Guys網(wǎng)站有一篇文章專(zhuān)門(mén)介紹SOAP的使用,這篇文章就是:Creating Web
Services using ASP(地址:http://www.4guysfromrolla.com/webtech/070401-1.shtml)。
這樣,ASP頁(yè)面就可以使用剛才我們建立的Web
Service計(jì)算公司CompanyX的商品折扣,為了使程序看上去更加簡(jiǎn)單和條例,我們將SOAP調(diào)用從主程序移出來(lái),專(zhuān)門(mén)寫(xiě)一個(gè)自己的函數(shù):CalculateDiscount。由于使用了SOAP,所以這個(gè)函數(shù)調(diào)用Web
Service比較簡(jiǎn)單,只有幾行代碼,程序代碼如下:
Public Function CalculateDiscount(UnitPrice,
CostPrice)
SET objSoapClient = Server.CreateObject("MSSOAP.SoapClient")
objSoapClient.ClientProperty("ServerHTTPRequest") = True
' 下面的鏈接需要修改為我們具體網(wǎng)站的鏈接
Call
objSoapClient.mssoapinit("http://localhost/ClassicASP_n_DotNET/" & _
"eCommerce.asmx?WSDL", "eCommerce")
' 使用SOAP對(duì)象調(diào)用Web Service函數(shù)
CalculateDiscount = objSoapClient.CalculateDiscountCompanyX(UnitPrice, _
CostPrice, "p455w0rd")
End Function
以上的程序相當(dāng)?shù)拿髁?,首先mssoapinit方法用WSDL(關(guān)于WSDL,請(qǐng)參考:
http://samples.gotdotnet.com/quickstart/aspplus/doc/webservicesintro.aspx)為調(diào)用Web
Service作準(zhǔn)備,然后真正計(jì)算折扣的函數(shù)CalculateDiscountCompanyX被調(diào)用,將折扣計(jì)算出來(lái)并且返回給函數(shù)CalculateDiscount。
在我們提供的源代碼下載包里面,意思的函數(shù)都可以在companyx_products.asp頁(yè)面找到,ASP頁(yè)面將遍歷整個(gè)“Products”數(shù)據(jù)表,在現(xiàn)實(shí)每條記錄的時(shí)候都將調(diào)用“CalculateDiscount”函數(shù)來(lái)計(jì)算公司CompanyX的折扣。
結(jié)論
文章介紹了怎樣用ASP來(lái)和Web
Service通訊,另外,我們可以知道,將一些功能模塊設(shè)計(jì)成為Web Service可以讓ASP象ASP.NET一樣調(diào)用這些模塊。
祝編程快樂(lè),下載以上程序代碼(注意下載解壓以后是MSI格式文件)。
本站推薦
- 1ASP建筑工程管理系統(tǒng):統(tǒng)籌規(guī)劃,提升項(xiàng)目效率
- 2如何選擇一個(gè)適合你的項(xiàng)目管理系統(tǒng)ASP 理解關(guān)鍵因素與最佳推薦
- 3醫(yī)藥行業(yè)進(jìn)銷(xiāo)存網(wǎng)站系統(tǒng)asp助力高效管理與精準(zhǔn)營(yíng)銷(xiāo)
- 4asp倉(cāng)庫(kù)管理軟件,高效實(shí)現(xiàn)庫(kù)存出入庫(kù)管理與數(shù)據(jù)精準(zhǔn)統(tǒng)計(jì)
- 5asp倉(cāng)庫(kù)管理軟件下載,便捷庫(kù)存管理與高效業(yè)務(wù)流程必備工具
- 6asp倉(cāng)庫(kù)管理系統(tǒng),高效實(shí)現(xiàn)庫(kù)存精準(zhǔn)管控與出入庫(kù)流程優(yōu)化
- 7asp倉(cāng)庫(kù)管理系統(tǒng)報(bào)價(jià),專(zhuān)業(yè)評(píng)估提供精準(zhǔn)合理的倉(cāng)庫(kù)管理系統(tǒng)價(jià)格方案
- 8asp倉(cāng)庫(kù)管理系統(tǒng)代碼:實(shí)現(xiàn)高效倉(cāng)庫(kù)管理的實(shí)用代碼分享
- 9asp倉(cāng)庫(kù)管理系統(tǒng)access,高效助力倉(cāng)庫(kù)貨物出入庫(kù)、庫(kù)存盤(pán)點(diǎn)與數(shù)據(jù)管理

