国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

一步一步用Visual C#創(chuàng)建Web服務(wù)

2024-07-21 02:18:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

引言:

  微軟在其.net戰(zhàn)略中,對(duì)其主推的web服務(wù)做了大肆的宣揚(yáng)。現(xiàn)在,web服務(wù)正如火如荼地發(fā)展著,相關(guān)的各項(xiàng)新技術(shù)層出不窮。web服務(wù)的發(fā)展正構(gòu)筑著互聯(lián)網(wǎng)時(shí)代美好的明天。在本文中,我將向大家介紹web服務(wù)的一些基本知識(shí)以及如何用visual c#一步一步地創(chuàng)建一個(gè)簡(jiǎn)單的web服務(wù)。

一.web服務(wù)概述:

  web服務(wù)是一種新的web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過(guò)web調(diào)用。web服務(wù)可以執(zhí)行從簡(jiǎn)單的請(qǐng)求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他web服務(wù)應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。web服務(wù)可以把業(yè)務(wù)邏輯劃分一個(gè)一個(gè)的組件,然后在整個(gè)因特網(wǎng)的范圍上執(zhí)行其功能。所以,它是構(gòu)造分布式、模塊化應(yīng)用程序的最新技術(shù)發(fā)展趨勢(shì)。

二.為什么需要web服務(wù)?

  以前,分布式的應(yīng)用程序邏輯需要使用分布式的對(duì)象模型,通過(guò)使用dcom、corba、rmi之類的基本結(jié)構(gòu),開(kāi)發(fā)人員仍可擁有使用本地模型所提供的豐富資源和精確性,并可將服務(wù)置于遠(yuǎn)程系統(tǒng)中。

  當(dāng)已經(jīng)有中意的中間件平臺(tái)(rmi、jini、corba、dcom 等等)時(shí),我們?yōu)槭裁催€要為web而煩惱呢?中間件確實(shí)提供了強(qiáng)大的服務(wù)實(shí)現(xiàn)手段,但是,這些系統(tǒng)有一個(gè)共同的缺陷,那就是它們無(wú)法擴(kuò)展到互聯(lián)網(wǎng)上:它們要求服務(wù)客戶端與系統(tǒng)提供的服務(wù)本身之間必須進(jìn)行緊密耦合,即要求一個(gè)同類基本結(jié)構(gòu)。然而這樣的系統(tǒng)往往十分脆弱:如果一端的執(zhí)行機(jī)制發(fā)生變化,那么另一端便會(huì)崩潰。例如,如果服務(wù)器應(yīng)用程序的接口發(fā)生更改,那么客戶端便會(huì)崩潰。為了能擴(kuò)展到互聯(lián)網(wǎng)運(yùn)用,我們需要一種松散偶合的基本結(jié)構(gòu)來(lái)解決這個(gè)問(wèn)題。如此的情況下就迎來(lái)了web服務(wù)的誕生。

三.開(kāi)發(fā)環(huán)境:

1.windows 2000 server操作系統(tǒng)或windows xp操作系統(tǒng);
2..net framework以及visual studio.net開(kāi)發(fā)工具。

四.創(chuàng)建web服務(wù)工程:

我在這里向大家介紹一個(gè)美元到人民幣轉(zhuǎn)換的web服務(wù)實(shí)例,該實(shí)例完成的功能相當(dāng)簡(jiǎn)單,從名字我們就能知道其中的功能。但是這也是一個(gè)非常不錯(cuò)的例子,特別對(duì)于初學(xué)者,能起到很好的指導(dǎo)作用。在創(chuàng)建web服務(wù)過(guò)程中,我們用到的是c#語(yǔ)言。下面就是具體的項(xiàng)目步驟了。

  首先,打開(kāi)vs.net,新建一個(gè)項(xiàng)目,在左邊的面板中選擇“visual c#項(xiàng)目”,右邊的面板中選擇“asp.net web服務(wù)”,并命名為“webservice1”,圖示如下:



圖1

  按下“確定”按鈕后,vs.net就開(kāi)始幫你新建該項(xiàng)目,期間還可能會(huì)出現(xiàn)一個(gè)用來(lái)顯示internet連接的對(duì)話框。在新建完項(xiàng)目后,在開(kāi)發(fā)工具中會(huì)出現(xiàn)如下所示的界面:



圖2

  因?yàn)槲覀円獙?shí)現(xiàn)的是一個(gè)非常簡(jiǎn)單的web服務(wù),所以我們需要的功能和我們的代碼量都很小,于是就不必去考慮上圖中的“服務(wù)器資源管理器”和“工具箱”兩個(gè)超鏈接,而可以直接點(diǎn)擊上圖中的“此處”鏈接進(jìn)行代碼編輯,點(diǎn)擊后會(huì)打開(kāi)代碼編輯框,圖示如下:



圖3

  在上面的代碼編輯框中,我們先把原有的“hello world”web服務(wù)的示例代碼去掉,替換成我們的代碼,最終如下:
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.diagnostics;
using system.web;
using system.web.services;

namespace webservice1
{
///
/// service1 的摘要說(shuō)明。
///
public class service1 : system.web.services.webservice
{
public service1()
{
//codegen:該調(diào)用是 asp.net web 服務(wù)設(shè)計(jì)器所必需的
initializecomponent();
}

#region component designer generated code

//web 服務(wù)設(shè)計(jì)器所必需的
private icontainer components = null;

///
/// 設(shè)計(jì)器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內(nèi)容。
///
private void initializecomponent()
{
}

///
/// 清理所有正在使用的資源。
///
protected override void dispose( bool disposing )
{
if(disposing && components != null)
{
components.dispose();
}
base.dispose(disposing);
}

#endregion

// web 服務(wù)
// dollarconverttormb() 服務(wù)完成美元到人民幣的轉(zhuǎn)換
// 若要測(cè)試此 web 服務(wù),請(qǐng)按 f5 鍵

[webmethod]
public double dollarconverttormb(double dollar)
{
return ( dollar * 8.15);
}
}
}

  在上面的方法dollarconverttormb()中,我們返回的是一個(gè)double類型的值――dollar*8.15,其中的8.15我想是不言而喻的(就是美元到人民幣的匯率)。不過(guò)現(xiàn)實(shí)的匯率是不固定的,而且每天都要變動(dòng),所以要根據(jù)當(dāng)天實(shí)際的匯率來(lái)計(jì)算,那么我們就要連接到數(shù)據(jù)庫(kù)獲得最新的信息了。不過(guò),這里作為一個(gè)簡(jiǎn)單實(shí)例,我們當(dāng)然不需要搞得那么復(fù)雜,所以在這里我就姑且假定匯率為1:8.15。

  同時(shí),我們還需要注意,在該web服務(wù)的代碼中我們用到了using system.web、using system.web.services等名字空間,作為web服務(wù)開(kāi)發(fā),這些名字空間是顯然不能缺的,沒(méi)有了這些,我們就不能調(diào)用.net框架為我們提供的開(kāi)發(fā)web服務(wù)所必須的方法和函數(shù)等,所以一定不能忘掉。

  到此為止,代碼編寫已經(jīng)完畢,然后把代碼文件存放在某個(gè)虛擬目錄下(通常是c:/inetpub/wwwroot/webservice1)即可。把文件保存為service1.asmx。asmx文件擴(kuò)展名是.net web服務(wù)的標(biāo)記。保存文件之后,你的web服務(wù)就準(zhǔn)備露臉了。

五.測(cè)試web服務(wù):

現(xiàn)在準(zhǔn)備好測(cè)試web服務(wù)。期間你不必通過(guò)顯式的編譯全過(guò)程,只需要地在目錄下保存文件然后調(diào)用它即可。為了調(diào)用最新創(chuàng)建的服務(wù),請(qǐng)打開(kāi)你的瀏覽器并輸入服務(wù)路徑,包括asmx文件的名字。如果你把服務(wù)放了在c:/inetpub/wwwroot/webservice1目錄下,那么你要在瀏覽器地址欄上鍵入http://localhost/webservice1/service1.asmx。(當(dāng)然,在你使用vs.net開(kāi)發(fā)時(shí),你也可以通過(guò)ctrl+f5直接進(jìn)行web服務(wù)的測(cè)試。)

  在調(diào)用服務(wù)時(shí)會(huì)顯示一幅包含大量信息的網(wǎng)頁(yè)。一開(kāi)始這可能會(huì)令你覺(jué)得有點(diǎn)糊涂:不管怎么說(shuō),你還沒(méi)有為這種服務(wù)創(chuàng)造過(guò)html網(wǎng)頁(yè)。其實(shí),你根本不必創(chuàng)建測(cè)試網(wǎng)頁(yè),因?yàn)?net框架已經(jīng)幫你這個(gè)忙了。當(dāng)你直接通過(guò)瀏覽器調(diào)用web服務(wù)時(shí),框架就會(huì)為你產(chǎn)生一個(gè)網(wǎng)頁(yè)并通過(guò)它向你顯示web服務(wù)的信息,同時(shí)列出所有可用的方法。下圖即是web服務(wù)的網(wǎng)頁(yè)。



圖4

在這個(gè)例子中列出的方法沒(méi)什么特別之處,因?yàn)閮H有一個(gè)方法(dollarconverttormb)。鼠標(biāo)點(diǎn)擊這個(gè)方法會(huì)顯示另一個(gè)網(wǎng)頁(yè),如圖5所示。這一頁(yè)就是該特定方法的測(cè)試頁(yè),其中包括對(duì)應(yīng)方法接受的每個(gè)參數(shù)的文本框。現(xiàn)在請(qǐng)?jiān)谖谋究蛑休斎搿?0”并按下“調(diào)用”按鈕。



圖5

單擊“調(diào)用”按鈕會(huì)打開(kāi)一個(gè)新的瀏覽器窗口,其中顯示了一些xml代碼。這些xml代碼是由該web服務(wù)返回的,其中包括了服務(wù)的結(jié)果。返回的xml代碼如下圖所示:



圖6

  返回的結(jié)果是一些xml代碼,可能用戶界面顯得不那么友好,但是這些結(jié)果確實(shí)不一定非要采取對(duì)用戶友好的格式,因?yàn)槟阃ǔ2粫?huì)從瀏覽器直接調(diào)用web服務(wù)。相反,你往往從應(yīng)用程序調(diào)用web服務(wù)同時(shí)適當(dāng)?shù)靥幚矸祷氐膞ml代碼。不過(guò),也很容易從上面的代碼看出web服務(wù)已經(jīng)把10美元轉(zhuǎn)換成了81.5人民幣了。

六.總結(jié):

  上面舉的這個(gè)例子很簡(jiǎn)單,它完成的任務(wù)是:創(chuàng)建一個(gè)組件,如果組件放在web服務(wù)器上就可以被世界上任何地方的任何人訪問(wèn)。客戶不必裝載com 或dcom;甚至也不必?fù)碛衱indows客戶程序。任何能創(chuàng)建http連接的客戶程序都能調(diào)用web服務(wù)并且收到結(jié)果。這種功能開(kāi)辟了創(chuàng)建分布式應(yīng)用程序、實(shí)現(xiàn)平臺(tái)之間互操作的全新領(lǐng)域。同時(shí),我們也不難發(fā)現(xiàn)用vs.net開(kāi)發(fā)web服務(wù)是一件相當(dāng)容易的事。有興趣的讀者可以試著開(kāi)發(fā)出功能更強(qiáng)大的web服務(wù)并將它賦予實(shí)際應(yīng)用之中。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泽库县| 桐柏县| 高青县| 涞水县| 沙河市| 博野县| 思茅市| 嘉兴市| 板桥市| 湘阴县| 米脂县| 桦川县| 天等县| 河东区| 武夷山市| 上思县| 阳朔县| 贵溪市| 芦山县| 东乌珠穆沁旗| 安阳市| 攀枝花市| 黎平县| 娄底市| 濉溪县| 佛坪县| 滨海县| 任丘市| 赣州市| 陇川县| 南部县| 新竹县| 安塞县| 伊吾县| 武清区| 绥宁县| 澎湖县| 常德市| 贞丰县| 班戈县| 武邑县|