監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

在ASP程序中調(diào)用Web Service

申請免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

在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格式文件)。 

發(fā)布:2007-03-25 13:24    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢