當(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)試用、咨詢電話:400-8352-114
AMTeam.org在ASP程序中調(diào)用Web Service
微軟投入了大量資金來(lái)推銷其.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é)合使用。
本文將要用到的例子是基于以下現(xiàn)實(shí)需要的:在B2B電子商務(wù)中,對(duì)于一些比較固定的客戶,我們可能對(duì)他們有一些特殊的折扣。下文中我們將建立一Web Services,這個(gè) Web Services的功能就是針對(duì)特殊的客戶按照一定規(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專門(mén)用于定義特定的公司編號(hào),然后,程序根據(jù)公司編號(hào)查找數(shù)據(jù)庫(kù)得到具體的公司名稱,并對(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ù)類型為Double;
2、CostPrice:商品的實(shí)際價(jià)格,也就是進(jìn)貨價(jià)格,數(shù)據(jù)類型為Double;
3、AccessCode:該Web
Services的安全密碼,數(shù)據(jù)類型為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ì)客戶的期望最低折扣
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)站有一篇文章專門(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),專門(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格式文件)。
- 1重慶OA信息化
- 2成都OA信息化
- 3貴陽(yáng)OA信息化
- 4西安OA信息化
- 5武漢OA信息化
- 6北京OA信息化
- 7廣州OA信息化
- 8深圳OA信息化
- 9天津OA信息化
- 10沈陽(yáng)OA信息化
- 11長(zhǎng)春OA信息化
- 12福州OA信息化
- 1專家稱XML Web服務(wù)時(shí)代正接近尾聲
- 2石家莊OA信息化與企業(yè)發(fā)展
- 3石家莊OA軟件的征求意見(jiàn)和民意調(diào)查
- 4從知識(shí)的角度回顧企業(yè)能力理論-摘錄
- 5xml and KM
- 6Web Service Case Study: 事務(wù)性Web服務(wù)
- 7關(guān)于模型的簡(jiǎn)單介紹!
- 8Web Service初探
- 9再次跨越障礙--重新審視XML中的語(yǔ)義透明性
- 10Using ASP.NET/WebServices For UPS Shipping Quotes
- 11對(duì)某集團(tuán)公司協(xié)同辦公系統(tǒng)未來(lái)3-5年的IT規(guī)劃建設(shè)藍(lán)圖
- 12從九點(diǎn)連線談創(chuàng)新及對(duì)石家莊OA信息化的再思考(by AMT 夏敬華)
- 13創(chuàng)造性的Intranet:Factors for Corporate Knowledge Creation
- 14資本的冬天是協(xié)同軟件行業(yè)的春天
- 15OA內(nèi)容管理與知識(shí)管理方案介紹
- 16Sharing information through the Lotus Knowledge Discovery Sy
- 17美國(guó)三大IT巨頭將向OASIS提交Web服務(wù)安全標(biāo)準(zhǔn)
- 18關(guān)于資料收集的一些心得(by AMT 羅贊)
- 19Web Service 的異步調(diào)用
- 20協(xié)同辦公OA軟件對(duì)系統(tǒng)登陸的安全設(shè)置
- 21架構(gòu)Web Service:什么是Web服務(wù)?
- 22即插即用portlet
- 23[編譯] 石家莊OA信息化測(cè)度:目標(biāo)、過(guò)程及方法(夏敬華譯)
- 24[理論] 信息管理的四種模式:從獨(dú)裁走向民主(AMT 石家莊OA信息化研究小組)
- 25中國(guó)特色生態(tài)文明建設(shè)的理論創(chuàng)新和實(shí)踐
- 26Web服務(wù)的計(jì)量與統(tǒng)計(jì)
- 27.NET的數(shù)據(jù)傳輸之道
- 28Web Services 及其技術(shù)(上)
- 29關(guān)于群體智慧積累和傳遞的思考(by AMT 王玉榮)
- 30知識(shí)地圖在項(xiàng)目型組織中的應(yīng)用
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號(hào)-2 渝公網(wǎng)安備50011202501700號(hào) 咨詢電話:400-8352-114