當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
在ASP程序中調(diào)用Web Service
在ASP程序中調(diào)用Web Service
微軟投入了大量資金來推銷其.NET的各種優(yōu)點(diǎn),其中.NET最大的優(yōu)點(diǎn)之一就是微軟始創(chuàng)的XML Web Services。XML Web Services可以將你的程序和以前定制的DLL和COM/DCOM組建分離(避免陷入DLL陷阱),然后將這些功能設(shè)計成為XML Web Services,讓其他應(yīng)用程序也可以訪問和調(diào)用這些功能(比如:網(wǎng)站、分布式程序)(關(guān)于怎樣在.NET中建立和使用XML Web Services,請參考這篇文章:http://aspnet.4guysfromrolla.com/articles/062602-1.aspx)。那么,當(dāng)你考慮提升現(xiàn)有ASP程序性能的時候,怎樣將其與已經(jīng)開發(fā)的XML Web Services結(jié)合呢?
本文的目的就是演示怎樣將最新的XML Web Services和現(xiàn)有ASP程序結(jié)合起來。通過將一些具體的業(yè)務(wù)功能寫成XML Web Services并且將這些XML Web Services與ASP程序完美結(jié)合,現(xiàn)有的ASP程序就可以象ASP.NET程序一樣共同“分享”XML Web Services的好處了。當(dāng)你需要提升現(xiàn)有ASP程序的性能并且和已經(jīng)開發(fā)的ASP.NET同步,但是有沒有時間和精力將這些程序完全修改為ASP.NET程序的時候,我們就可以考慮將ASP和XML Web Services結(jié)合使用。
本文將要用到的例子是基于以下現(xiàn)實(shí)需要的:在B2B電子商務(wù)中,對于一些比較固定的客戶,我們可能對他們有一些特殊的折扣。下文中我們將建立一Web Services,這個 Web Services的功能就是針對特殊的客戶按照一定規(guī)則計算折扣,然后,我們將其與一個簡單的ASP程序結(jié)合起來應(yīng)用。
數(shù)據(jù)庫
我們在這里使用微軟Access中自帶的NorthWind數(shù)據(jù)庫,當(dāng)然,我們不會照盤全收,我們需要對數(shù)據(jù)庫的“Products”數(shù)據(jù)表表結(jié)構(gòu)作一些小小的修改:增加一個保存商品實(shí)際價格的“CostPrice”字段(我們將填入一些隨機(jī)數(shù)據(jù))(這個數(shù)據(jù)庫可以在這里下載到:http://www.4guysfromrolla.com/webtech/code/asptonet.zip)
Web Service
在文章“Creating and Consuming
a Web Service”中已經(jīng)討論過(http://aspnet.4guysfromrolla.com/articles/062602-1.aspx),我們可以使用文本編輯器來建立Web Services,比如:WEB Matrix
Projext或者VS.NET等工具。文中我們將試驗(yàn)使用VS.NET來建立Web Service。
首先,在VS.NET中建立一個新的ASP.NET工程,然后,刪除程序建立的Web Form,增加一個新的Web Service文件(命名為:eCommerce.asmx),在這個Web Service中,將默認(rèn)的名字空間修改為ClassicASP_nDotNET.eCommerce,并且增加一個名為CalculateDiscountCompanyX的方法。
WEB方法CalculateDiscountCompanyX是一個用于計算公司CompanyX折扣的簡單函數(shù)(當(dāng)然,更為健壯的解決方法是寫一個通用的函數(shù)比如:CalculateDiscount(CompanyID),在這個函數(shù)中CompanyID專門用于定義特定的公司編號,然后,程序根據(jù)公司編號查找數(shù)據(jù)庫得到具體的公司名稱,并對其做出折扣計算。我們這里主要的目的在于演示XML Web Services和ASP程序的結(jié)合使用,因此,只用需要一些簡單函數(shù)。)
在我們的應(yīng)用中,假設(shè)對公司CompanyX的最小折扣為10%,公司最低純利潤為7.5%,這些具體的折扣和利潤都是固化寫在程序中的。
WEB方法CalculateDiscountCompanyX相當(dāng)簡單,將用到以下一些參數(shù):
1、UnitPrice:建議零售價格,數(shù)據(jù)類型為Double;
2、CostPrice:商品的實(shí)際價格,也就是進(jìn)貨價格,數(shù)據(jù)類型為Double;
3、AccessCode:該Web
Services的安全密碼,數(shù)據(jù)類型為String;
如果函數(shù)計算出現(xiàn)錯誤,將返回-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) '期望利潤
dblMinMarkup = (1.075) ' 最低利潤
' 對客戶的期望最低折扣
dblMinClientDiscount = (0.1)
Try
If AccessCode = "p455w0rd" Then
' 根據(jù)利潤計算折扣
dblDiscount = FormatNumber(((UnitPrice - (CostPrice * dblMarkup))), 2)
' 檢查折扣是否合適na
If dblDiscount + 0 <= (UnitPrice *
dblMinClientDiscount) Then
dblDiscount = FormatNumber((UnitPrice *
dblMinClientDiscount), 2)
End If
' 檢查是否有最低利潤
If (UnitPrice - dblDiscount) <=
(CostPrice * dblMinMarkup) Then
dblDiscount = FormatNumber((UnitPrice -
(CostPrice * dblMinMarkup)), 2)
End If
Return dblDiscount
Else
Return -1 '密碼錯誤
End If
Catch ex As Exception
Return -1
End Try
End Function
將Web Services和ASP程序結(jié)合起來
為了使ASP和Web
Services相互通訊變得相對簡單,需要首先下載安裝MS SOAP Toolkit 2.0(地址為:http://msdn.microsoft.com/SOAP/),這樣,就可以使用SOAP來實(shí)現(xiàn)ASP和Web Services的通訊,這將使ASP程序和Web
Services通訊與使用其他方法相比變得簡單。事實(shí)上,在4Guys網(wǎng)站有一篇文章專門介紹SOAP的使用,這篇文章就是:Creating Web
Services using ASP(地址:http://www.4guysfromrolla.com/webtech/070401-1.shtml)。
這樣,ASP頁面就可以使用剛才我們建立的Web
Service計算公司CompanyX的商品折扣,為了使程序看上去更加簡單和條例,我們將SOAP調(diào)用從主程序移出來,專門寫一個自己的函數(shù):CalculateDiscount。由于使用了SOAP,所以這個函數(shù)調(diào)用Web
Service比較簡單,只有幾行代碼,程序代碼如下:
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對象調(diào)用Web Service函數(shù)
CalculateDiscount = objSoapClient.CalculateDiscountCompanyX(UnitPrice, _
CostPrice, "p455w0rd")
End Function
以上的程序相當(dāng)?shù)拿髁?,首先mssoapinit方法用WSDL(關(guān)于WSDL,請參考:
http://samples.gotdotnet.com/quickstart/aspplus/doc/webservicesintro.aspx)為調(diào)用Web
Service作準(zhǔn)備,然后真正計算折扣的函數(shù)CalculateDiscountCompanyX被調(diào)用,將折扣計算出來并且返回給函數(shù)CalculateDiscount。
在我們提供的源代碼下載包里面,意思的函數(shù)都可以在companyx_products.asp頁面找到,ASP頁面將遍歷整個“Products”數(shù)據(jù)表,在現(xiàn)實(shí)每條記錄的時候都將調(diào)用“CalculateDiscount”函數(shù)來計算公司CompanyX的折扣。
結(jié)論
文章介紹了怎樣用ASP來和Web
Service通訊,另外,我們可以知道,將一些功能模塊設(shè)計成為Web Service可以讓ASP象ASP.NET一樣調(diào)用這些模塊。
祝編程快樂,下載以上程序代碼(注意下載解壓以后是MSI格式文件)。
- 1專家稱XML Web服務(wù)時代正接近尾聲
- 2石家莊OA信息化與企業(yè)發(fā)展
- 3石家莊OA軟件的征求意見和民意調(diào)查
- 4從知識的角度回顧企業(yè)能力理論-摘錄
- 5xml and KM
- 6Web Service Case Study: 事務(wù)性Web服務(wù)
- 7關(guān)于模型的簡單介紹!
- 8Web Service初探
- 9再次跨越障礙--重新審視XML中的語義透明性
- 10Using ASP.NET/WebServices For UPS Shipping Quotes
- 11對某集團(tuán)公司協(xié)同辦公系統(tǒng)未來3-5年的IT規(guī)劃建設(shè)藍(lán)圖
- 12從九點(diǎn)連線談創(chuàng)新及對石家莊OA信息化的再思考(by AMT 夏敬華)
- 13創(chuàng)造性的Intranet:Factors for Corporate Knowledge Creation
- 14資本的冬天是協(xié)同軟件行業(yè)的春天
- 15OA內(nèi)容管理與知識管理方案介紹
- 16Sharing information through the Lotus Knowledge Discovery Sy
- 17美國三大IT巨頭將向OASIS提交Web服務(wù)安全標(biāo)準(zhǔn)
- 18關(guān)于資料收集的一些心得(by AMT 羅贊)
- 19Web Service 的異步調(diào)用
- 20協(xié)同辦公OA軟件對系統(tǒng)登陸的安全設(shè)置
- 21架構(gòu)Web Service:什么是Web服務(wù)?
- 22即插即用portlet
- 23[編譯] 石家莊OA信息化測度:目標(biāo)、過程及方法(夏敬華譯)
- 24[理論] 信息管理的四種模式:從獨(dú)裁走向民主(AMT 石家莊OA信息化研究小組)
- 25中國特色生態(tài)文明建設(shè)的理論創(chuàng)新和實(shí)踐
- 26Web服務(wù)的計量與統(tǒng)計
- 27.NET的數(shù)據(jù)傳輸之道
- 28Web Services 及其技術(shù)(上)
- 29關(guān)于群體智慧積累和傳遞的思考(by AMT 王玉榮)
- 30知識地圖在項目型組織中的應(yīng)用
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114