在ASP程式中呼叫Web Service

2021-03-31 20:27:52 字數 3750 閱讀 3479

微軟投入了大量資金來推銷其.***的各種優點,其中.***最大的優點之一就是微軟始創的xml web services。xml web services可以將你的程式和以前定製的dll和***/d***組建分離(避免陷入dll陷阱),然後將這些功能設計成為xml web services,讓其他應用程式也可以訪問和呼叫這些功能(比如:**、分布式程式)(關於怎樣在.***中建立和使用xml web services,請參考這篇文章:http://asp***.4guysfromrolla.***/articles/062602-1.aspx)。那麼,當你考慮提公升現有asp程式效能的時候,怎樣將其與已經開發的xml web services結合呢?

本文的目的就是演示怎樣將最新的xml web services和現有asp程式結合起來。通過將一些具體的業務功能寫成xml web services並且將這些xml web services與asp程式完美結合,現有的asp程式就可以象asp.***程式一樣共同「分享」xml web services的好處了。當你需要提公升現有asp程式的效能並且和已經開發的asp.***同步,但是有沒有時間和精力將這些程式完全修改為asp.***程式的時候,我們就可以考慮將asp和xml web services結合使用。

本文將要用到的例子是基於以下現實需要的:在b2b電子商務中,對於一些比較固定的客戶,我們可能對他們有一些特殊的折扣。下文中我們將建立一web services,這個 web services的功能就是針對特殊的客戶按照一定規則計算折扣,然後,我們將其與乙個簡單的asp程式結合起來應用。

資料庫

web service

在文章「creating and consuming a web service」中已經討論過(http://asp***.4guysfromrolla.***/articles/062602-1.aspx),我們可以使用文字編輯器來建立web services,比如:web matrix projext或者vs.***等工具。文中我們將試驗使用vs.***來建立web service。

首先,在vs.***中建立乙個新的asp.***工程,然後,刪除程式建立的web form,增加乙個新的web service檔案(命名為:e***merce.a**x),在這個web service中,將預設的名字空間修改為classicasp_ndot***.e***merce,並且增加乙個名為calculatediscount***panyx的方法。

web方法calculatediscount***panyx是乙個用於計算公司***panyx折扣的簡單函式(當然,更為健壯的解決方法是寫乙個通用的函式比如:calculatediscount(***panyid),在這個函式中***panyid專門用於定義特定的公司編號,然後,程式根據公司編號查詢資料庫得到具體的公司名稱,並對其做出折扣計算。我們這裡主要的目的在於演示xml web services和asp程式的結合使用,因此,只用需要一些簡單函式。)

在我們的應用中,假設對公司***panyx的最小折扣為10%,公司最低純利潤為7.5%,這些具體的折扣和利潤都是固化寫在程式中的。

1、unitprice:建議零售**,資料型別為double;

2、costprice:商品的實際**,也就是進貨**,資料型別為double;

3、accesscode:該web services的安全密碼,資料型別為string;

如果函式計算出現錯誤,將返回-1,以下是函式源**:

_public function calculatediscount***panyx(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)

tryif accesscode = "p455w0rd" then

' 根據利潤計算折扣

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程式結合起來

這樣,asp頁面就可以使用剛才我們建立的web service計算公司***panyx的商品折扣,為了使程式看上去更加簡單和條例,我們將soap呼叫從主程式移出來,專門寫乙個自己的函式:calculatediscount。由於使用了soap,所以這個函式呼叫web service比較簡單,只有幾行**,程式**如下:

' 使用soap物件呼叫web service函式

calculatediscount = objsoapclient.calculatediscount***panyx(unitprice, _

costprice, "p455w0rd")

end function

以上的程式相當的明了,首先mssoapinit方法用wsdl(關於wsdl,請參考:http://samples.gotdot***.***/quickstart/aspplus/doc/webservicesintro.aspx)為呼叫web service作準備,然後真正計算折扣的函式calculatediscount***panyx被呼叫,將折扣計算出來並且返回給函式calculatediscount。

結論

文章介紹了怎樣用asp來和web service通訊,另外,我們可以知道,將一些功能模組設計成為web service可以讓asp象asp.***一樣呼叫這些模組。

在ASP程式中呼叫Web Service

微軟投入了大量資金來推銷其.net的各種優點,其中.net最大的優點之一就是微軟始創的xml web services。xml web services可以將你的程式和以前定製的dll和com dcom組建分離 避免陷入dll陷阱 然後將這些功能設計成為xml web services,讓其他應用程...

在ASP中呼叫儲存過程

dim objcnn dim objcmd dim rs const o id 112 建立connection物件 set objcnn server.createobject adodb.connection objcnn.open driver server localhost uid sa ...

在ASP檔案中呼叫DLL

動態聯接庫 dll 是加快應用程式關鍵部分的執行速度的重要方法,但有一點恐怕大部分人都不知道,那就是在asp檔案也能通過呼叫dll來加快伺服器的執行速度,下面我簡單的介紹一下在asp檔案呼叫dll的步驟。首先,必須得有dll檔案,本例是通過vb5.0建立activex dll檔案,這個檔案模擬了乙個...