《Visual Basic NET程序設(shè)計(jì)》課件第9章_第1頁(yè)
《Visual Basic NET程序設(shè)計(jì)》課件第9章_第2頁(yè)
《Visual Basic NET程序設(shè)計(jì)》課件第9章_第3頁(yè)
《Visual Basic NET程序設(shè)計(jì)》課件第9章_第4頁(yè)
《Visual Basic NET程序設(shè)計(jì)》課件第9章_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章Web應(yīng)用

9.1建立WebService服務(wù)程序9.2建立B/S方式的Browse客戶端瀏覽器程序9.3建立C/S方式的客戶端Windows窗體程序習(xí)題實(shí)驗(yàn)九網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)9.1建立WebService服務(wù)程序

【案例9-1】WebService服務(wù)程序的建立。

本案例要求建立一個(gè)WebService服務(wù)程序,并提供一個(gè)服務(wù)函數(shù)。當(dāng)用戶在客戶端界面的第一個(gè)文本框輸入1~12任一數(shù)字,單擊“數(shù)字轉(zhuǎn)換為英文單詞”命令按鈕時(shí),該函數(shù)被調(diào)用;調(diào)用該WebService服務(wù)函數(shù)后,返回相應(yīng)用戶在客戶端第一個(gè)文本框中輸入對(duì)應(yīng)數(shù)字月份的英文單詞。

服務(wù)端和客戶端的運(yùn)行界面分別如圖9-1和圖9-2所示。圖9-1WebService提供的服務(wù)函數(shù)的服務(wù)端界面圖9-2WebService提供的服務(wù)函數(shù)的客戶端界面說(shuō)明:

圖9-2調(diào)用WebService提供的服務(wù)函數(shù)的客戶端界面在案例9-2中實(shí)現(xiàn),放在這里顯示是為了讓用戶更直觀地理解案例9-1。

【技能目標(biāo)】

學(xué)會(huì)建立WebService服務(wù)并調(diào)用WebService服務(wù)。

【操作要點(diǎn)與步驟】

為了提供WebService服務(wù)功能,必須先建立WebService服務(wù)程序。下面是實(shí)現(xiàn)WebService服務(wù)程序功能的具體操作步驟。

(1)啟動(dòng)VS.NET,選擇“文件”→“新建”→“項(xiàng)目”菜單,彈出“新建項(xiàng)目”對(duì)話框,如圖9-3所示。在該對(duì)話框的“項(xiàng)目類(lèi)型”中選擇“VisualBaisc項(xiàng)目”,在“模板”列表中選擇“ASP.NETWeb服務(wù)”項(xiàng),在“位置”文本框中輸入“http://localhost/translateWebService”(程序發(fā)布文件夾的位置)。名稱(chēng)欄自動(dòng)出現(xiàn)項(xiàng)目名“translateWebService”,它是只讀的,用戶不可改寫(xiě),要改寫(xiě)必須在“位置”文本框中改寫(xiě)。單擊“確定”按鈕,系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)WebService服務(wù)站點(diǎn)所需的所有內(nèi)容(自動(dòng)建立tanslateWebService目錄,并將該目錄配置為虛擬目錄)。圖9-3“新建項(xiàng)目”對(duì)話框說(shuō)明:

WebService服務(wù)的translateWebService項(xiàng)目存放在IIS的Web發(fā)布文件夾下,該文件夾通常在“操作系統(tǒng)所在的盤(pán)符:\Inetpub\wwwroot\”下,本案例的文件夾在“C:\Inetpub\wwwroot\translateWebService”下。

系統(tǒng)自動(dòng)創(chuàng)建一個(gè)WebService服務(wù)站點(diǎn)所需的所有內(nèi)容的前提是在本機(jī)上正確安裝IIS并啟動(dòng)。

(2)在圖9-3中單擊“確定”按鈕,屏幕會(huì)出現(xiàn)如圖9-4所示的界面,表明計(jì)算機(jī)正在建立WebService服務(wù)站點(diǎn)tanslateWebService。

(3)在屏幕出現(xiàn)如圖9-4所示的界面后,接著出現(xiàn)如圖9-5所示的界面,表明計(jì)算機(jī)已建立了WebService服務(wù)站點(diǎn)tanslateWebService。在圖9-5所示的界面中可以清楚地看出,在tanslateWebService解決方案下有一個(gè)項(xiàng)目名為T(mén)anslateWebService,在項(xiàng)目TanslateWebService下面有一些服務(wù)器端的服務(wù)文件,如服務(wù)源文件Service1.asmx.vb。

在圖9-5所示的WebService設(shè)計(jì)界面中,默認(rèn)文件名為Service1.asmx.vb,并默認(rèn)為設(shè)計(jì)視圖頁(yè)面,該頁(yè)面的正中間有一段文字:“若要在類(lèi)中添加組件,請(qǐng)從服務(wù)器資源管理器或工具箱中拖動(dòng)它們,然后使用‘屬性’窗口來(lái)設(shè)置它們的屬性。若要為類(lèi)創(chuàng)建方法和事件,請(qǐng)單擊此處切換到代碼視圖?!眻D9-4建立WebService服務(wù)站點(diǎn)tanslateWebService的界面圖9-5計(jì)算機(jī)已建立了WebService服務(wù)站點(diǎn)tanslateWebService的界面說(shuō)明:

頁(yè)面的正中間有一段文字說(shuō)明WebService可以設(shè)計(jì)自己的服務(wù)界面,如果用戶不設(shè)計(jì)服務(wù)界面,則運(yùn)行服務(wù)端的程序時(shí)沒(méi)有自己的服務(wù)界面。

單擊頁(yè)面正中間一段文字的“此處”超鏈接將切換到代碼視圖,系統(tǒng)自動(dòng)生成的代碼如下:在上面自動(dòng)生成的源代碼中,有一個(gè)函數(shù)名為“HelloWorld()”的函數(shù)被標(biāo)注出來(lái)。該函數(shù)是一個(gè)通用的例子,在源代碼中被注釋掉了,用戶只要將被注釋掉的HelloWorld()函數(shù)復(fù)制一份,然后去掉復(fù)制后代碼行前面的注釋符“‘”,最后將HelloWorld()函數(shù)名改為自己欲定義的函數(shù)名,并編寫(xiě)實(shí)現(xiàn)該定義函數(shù)功能的代碼即可。

下面是按照上述方法編寫(xiě)實(shí)現(xiàn)將number變量保存的數(shù)字轉(zhuǎn)換成相應(yīng)的英文單詞的函數(shù)translate()的代碼。說(shuō)明:

HelloWorld()函數(shù)前面有一個(gè)尖括號(hào)的標(biāo)識(shí)符:<WebMethod()>,這個(gè)標(biāo)識(shí)符說(shuō)明這個(gè)函數(shù)可以通過(guò)Web訪問(wèn),用戶編寫(xiě)的Web函數(shù)也必須以<WebMethod()>開(kāi)始進(jìn)行標(biāo)記。

(4)此時(shí)啟動(dòng)Windows系統(tǒng)的IIS服務(wù)管理器,如圖9-6所示。在圖9-6中用戶可以清楚地看到確實(shí)建立了WebService服務(wù)站點(diǎn),站點(diǎn)名“tanslateWebService”。

(5)在查看Windows系統(tǒng)IIS服務(wù)管理器的WebService服務(wù)站點(diǎn)后,用戶可以查看WebService服務(wù)站點(diǎn)的物理目錄為C:\Inetpub\wwwroot\translateWebService,如圖9-7所示。圖9-6Windows系統(tǒng)的IIS服務(wù)管理器圖9-7WebService服務(wù)站點(diǎn)的物理目錄

(6)按第(3)步建立好Service1.asmx.vb代碼后,按F5鍵運(yùn)行程序,會(huì)在瀏覽器中出現(xiàn)圖9-1所示的信息。

這其實(shí)不是什么“運(yùn)行結(jié)果”,只不過(guò)是VisualStudio.NET生成的一個(gè)說(shuō)明頁(yè)面,類(lèi)似ReadMe之類(lèi)的東西,但是,如果單擊圖9-1中的translate超鏈接,則將看到一個(gè)測(cè)試頁(yè)面,如圖9-8所示。

(7)如果在number輸入框中填入“6”,如圖9-8所示,再單擊“調(diào)用”按鈕,則一個(gè)令人驚異的信息出現(xiàn)在圖9-9中。

這是個(gè)依照SOAP協(xié)議生成的XML頁(yè)面。用戶可能覺(jué)得它很難懂,確實(shí),它也不是給人看的,是給計(jì)算機(jī)看的。盡管如此,“June”這個(gè)單詞還是清楚的,很顯然,調(diào)用成功了。圖9-8translate函數(shù)的測(cè)試頁(yè)面圖9-9對(duì)WebService調(diào)用的返回當(dāng)然,WebService并不是這樣調(diào)用的,可以用B/S方式的Browse客戶端瀏覽器窗體案例程序和用C/S方式的Windows應(yīng)用程序窗體客戶端案例程序調(diào)用WebService的服務(wù)程序,這兩個(gè)案例將在后面進(jìn)行講解。

說(shuō)明:

由于本案例程序?yàn)锳SP.NET的Web應(yīng)用程序,ASP.NET的Web應(yīng)用程序需要在計(jì)算機(jī)中裝有IIS,因此如果用戶的計(jì)算機(jī)中沒(méi)有IIS,則必須安裝IIS服務(wù)程序。

技巧:

用戶在實(shí)際建立WebService服務(wù)程序時(shí),可能會(huì)遇到以下問(wèn)題,下面給出這類(lèi)問(wèn)題的解決方案。

(1)有時(shí)會(huì)在安裝完IIS后,卻不能正常啟動(dòng),這可能是由于計(jì)算機(jī)防火墻保護(hù)所造成的。

下面是解決該問(wèn)題的操作步驟:

●由“控制面板”→“管理工具”→“Internet信息服務(wù)”,打開(kāi)“Internet信息服務(wù)”窗口,如圖9-10所示。

●在圖9-10所示的窗口中,單擊“工具欄”中的圖標(biāo),出現(xiàn)如圖9-11所示的出錯(cuò)提示警告框。

●出現(xiàn)如圖9-11所示的出錯(cuò)提示警告框是由于計(jì)算機(jī)個(gè)人防火墻處于保護(hù)狀態(tài),因此應(yīng)該停止防火墻的保護(hù)狀態(tài)。

●在停止防火墻的保護(hù)后,再單擊圖9-10所示窗口的“工具欄”中的圖標(biāo),這時(shí)將會(huì)正常啟動(dòng)“Internet信息服務(wù)”。圖9-10“Internet信息服務(wù)”窗口圖9-11出錯(cuò)提示警告框

(2)有時(shí)即使正常啟動(dòng)IIS,也不能正常建立WebService服務(wù)程序。

在建立WebService服務(wù)程序時(shí),會(huì)出現(xiàn)以下兩種情況:

●?VisualStudio.NET已檢測(cè)到指定的Web服務(wù)器運(yùn)行的不是ASP.NET1.1版。

●?VisualStudio.NET無(wú)法確定在Web服務(wù)器計(jì)算機(jī)上運(yùn)行的是否為ASP.NET1.1版。

發(fā)現(xiàn)以上錯(cuò)誤,請(qǐng)檢查是否屬于以下情況:

①確保?.NETFramework1.1版已安裝在Web服務(wù)器計(jì)算機(jī)上。②如果ASP.NET已安裝在Web服務(wù)器計(jì)算機(jī)上,但仍然遇到此類(lèi)錯(cuò)誤,則可能是配置問(wèn)題。糾正有問(wèn)題的安裝或配置,可以使用名為aspnet_regiis的ASP?.NET實(shí)用工具,這個(gè)工具可以在如下所示的路徑中找到:

操作系統(tǒng)文件夾\Microsoft.NET\Framework\v1.1.nnnn\

其中:nnnn表示四位內(nèi)部版本號(hào)。

可以使用?/I開(kāi)關(guān)運(yùn)行該實(shí)用工具:

aspnet_regiis/I

說(shuō)明:

運(yùn)行該實(shí)用工具(aspnet_regiis/I)可以從命令的正確目錄中直接打開(kāi)該命令窗口,也可以指向Windows的“開(kāi)始/程序/VisualStudio.NET2003/VisualStudio.NET工具/VisualStudio.NET命令提示”,在打開(kāi)的命令窗口中鍵入aspnet_regiis/I。

【相關(guān)知識(shí)】

知識(shí)點(diǎn)9-1-1

ASP.NET介紹

WebService服務(wù)是計(jì)算機(jī)快速發(fā)展催生的新興技術(shù),是微軟?.NET藍(lán)圖中最為耀眼的技術(shù)之一。在一臺(tái)計(jì)算機(jī)上如果有多個(gè)程序需要調(diào)用同一個(gè)程序模塊,則這些程序可以通過(guò)COM技術(shù)實(shí)現(xiàn)。推而廣之,如果在遍布全球的互聯(lián)網(wǎng)上,世界各地的多個(gè)站點(diǎn)上都要調(diào)用某個(gè)站點(diǎn)上的程序的功能,那么該怎么辦呢?顯然,使用COM技術(shù)是無(wú)法實(shí)現(xiàn)的,而WebService程序就主要用于解決這類(lèi)問(wèn)題。WebService程序通常也分為WebService服務(wù)程序和WebService客戶程序兩大類(lèi)。WebService服務(wù)程序負(fù)責(zé)提供服務(wù),WebService客戶端程序則負(fù)責(zé)使用服務(wù)。在VB.NET中,建立WebService程序通常都是以向?qū)Х绞綄?shí)現(xiàn)的,用戶只需要在其中添加特定的服務(wù)功能代碼即可。

ASP?.NET是一個(gè)統(tǒng)一的Web開(kāi)發(fā)平臺(tái),它為創(chuàng)建Web應(yīng)用程序和Web服務(wù)提供高級(jí)服務(wù),ASP?.NET還提供了一種新的編程模型和底層結(jié)構(gòu),從而以前所未有的速度、靈活性和簡(jiǎn)易性創(chuàng)建功能強(qiáng)大的Web應(yīng)用程序。

ASP?.NET并不僅僅是一個(gè)新版本,而是Web應(yīng)用程序編程方面的一個(gè)全新概念和方法。ASP?.NET中的新功能并不是對(duì)ASP的改進(jìn),設(shè)計(jì)它的初衷是為用戶提供最佳的應(yīng)用程序架構(gòu)。這就意味著在許多領(lǐng)域中,ASP?.NET與ASP是不兼容的,不過(guò)從長(zhǎng)遠(yuǎn)來(lái)看,這是一件好事。這表明ASP?.NET為應(yīng)用程序的開(kāi)發(fā)提供了一個(gè)功能強(qiáng)大的平臺(tái),同時(shí)它也具備了更多的優(yōu)點(diǎn)。ASP?.NET與ASP是互不干擾的。即使兩者之間有許多不同,安裝ASP.NET也不會(huì)破壞現(xiàn)有的ASP應(yīng)用程序,之所以如此是因?yàn)锳SP?.NET也有一個(gè)新的文件擴(kuò)展名(.aspx),也就是說(shuō),它們的處理方式和ASP頁(yè)是不同的。

Web服務(wù)是ASP?.NET框架中的一個(gè)重要內(nèi)容,主要用于程序和程序之間的通信,可以從根本上改變?cè)O(shè)計(jì)應(yīng)用程序的方式。以前,應(yīng)用程序只能運(yùn)行在離散的、受控制的服務(wù)器組上。而通過(guò)Web服務(wù),應(yīng)用程序可以運(yùn)行在廣泛分布的資源集上,進(jìn)行數(shù)據(jù)的處理和顯示,并且不管這些資源是否具有相同的類(lèi)型、服務(wù)器和操作系統(tǒng)等。Web服務(wù)為程序提供了通過(guò)Internet使用SOAP(SimpleObjectAccessProtocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)進(jìn)行通信的機(jī)制,它支持分布式環(huán)境,而且不再需要關(guān)心應(yīng)用程序使用什么技術(shù)。在VB?.NET中,實(shí)際上并不需要知道后臺(tái)進(jìn)行了什么操作。發(fā)送給Web服務(wù)的信息會(huì)由ASP?.NET框架自動(dòng)轉(zhuǎn)換為XML協(xié)議。ASP?.NET框架管理該過(guò)程,接收返回的XML文檔,并把返回的數(shù)據(jù)按需要放在組件接口上。VB?.NET在創(chuàng)建Web服務(wù)的同時(shí)還創(chuàng)建了一個(gè)名稱(chēng)為Service1.asmx的文件。知識(shí)點(diǎn)9-1-2

Web服務(wù)及其相關(guān)技術(shù)

Web服務(wù)就是可編程的URL,即使用標(biāo)準(zhǔn)的Internet協(xié)議(比如HTTP或XML)遠(yuǎn)程可調(diào)用的應(yīng)用程序組件。它要想成功用于Internet就需要提供一個(gè)與操作系統(tǒng)無(wú)關(guān)、與程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)、與機(jī)器類(lèi)型無(wú)關(guān)以及與運(yùn)行環(huán)境無(wú)關(guān)的平臺(tái)。

與Web服務(wù)相關(guān)的技術(shù)主要有以下四個(gè)方面:

●表示數(shù)據(jù)(XML);

●交換消息(SOAP);

●服務(wù)描述(WSDL);

●服務(wù)發(fā)現(xiàn)與分布式Web服務(wù)發(fā)現(xiàn)技術(shù)(UDDI和WS-Inspection)。說(shuō)明:

第一個(gè)方面將在知識(shí)點(diǎn)9-1-3中介紹,其他三個(gè)方面將分別在知識(shí)點(diǎn)9-2-1、知識(shí)點(diǎn)9-2-2、知識(shí)點(diǎn)9-2-3中介紹。

知識(shí)點(diǎn)9-1-3

XML的命名空間

為了唯一地標(biāo)識(shí)XML元素,必須使用全局唯一的標(biāo)識(shí)符URI。URI是一個(gè)唯一的標(biāo)識(shí)資源的串(UniformResourceIdentifier)。URI分成了兩個(gè)子類(lèi):一個(gè)是URL(UniversalResourceLocator,統(tǒng)一資源定位符),一個(gè)是URN(UniformResourceName)。

(1)?URL不僅定義了從何處獲取資源,而且定義了如何獲取資源(即采用何種協(xié)議,http還是FTP)。

(2)?URN代表一個(gè)資源與位置無(wú)關(guān)的串。至于資源在何處或如何到達(dá)資源則沒(méi)有任何要求,因?yàn)橐粋€(gè)URN只是一個(gè)唯一的串。其語(yǔ)法提供了全局唯一性。

(3)?XML模式(XMLSchema)是DTD(DocumentTypeDefinition)的超集。DTD可以指定元素是包含字符數(shù)據(jù)還是其他數(shù)據(jù)或是一個(gè)空元素,DTD不能指定某個(gè)特殊元素是否包含整數(shù)、浮點(diǎn)數(shù)或字符串。另外,DTD有自己的語(yǔ)法,而XML模式遵循XML語(yǔ)法。9.2建立B/S方式的Browse客戶端瀏覽器程序

【案例9-2】B/S方式的Browse客戶端調(diào)用WebService服務(wù)。

該案例是設(shè)計(jì)一個(gè)B/S方式的Browse客戶端瀏覽器窗體。在瀏覽器窗體的地址欄中輸入“http://localhost/Browse_Client/WebForm1.aspx”后會(huì)出現(xiàn)如圖9-2所示的瀏覽器窗體,在第一個(gè)文本框中輸入1~12中的任一數(shù)字字符,單擊“數(shù)字轉(zhuǎn)換為英文單詞”命令按鈕,調(diào)用案例9-1中的WebService服務(wù)函數(shù),然后在第二個(gè)文本框中顯示調(diào)用WebService服務(wù)函數(shù)的返回值,該返回值是第一個(gè)文本框中輸入數(shù)字字符對(duì)應(yīng)月份的英文單詞。

【技能目標(biāo)】

學(xué)會(huì)在客戶端瀏覽器窗體中添加Web引用,并運(yùn)行客戶端瀏覽器窗體調(diào)用WebService服務(wù)。

【操作要點(diǎn)與步驟】

(1)啟動(dòng)VB?.NET,新建“ASP?.NETWeb應(yīng)用程序”模板的應(yīng)用程序,位置為“http://localhost/Browse_Client”,如圖9-12所示。單擊“確定”按鈕,向?qū)⒆詣?dòng)創(chuàng)建一個(gè)默認(rèn)的Web應(yīng)用程序。圖9-12創(chuàng)建Web應(yīng)用程序

(2)在圖9-12中按下“確定”按鈕,屏幕將會(huì)出現(xiàn)如圖9-4所示的界面,表明計(jì)算機(jī)正在建立ASP?.NETWeb應(yīng)用程序。

(3)然后,將出現(xiàn)如圖9-13所示的界面,表明計(jì)算機(jī)已建立了ASP?.NETWeb應(yīng)用程序。在圖9-13所示的界面中可以清楚地看出,在Browse_Client解決方案下有一個(gè)項(xiàng)目名為Browse_Client,在項(xiàng)目名為Browse_Client下面有一些客戶端的文件,如客戶端網(wǎng)頁(yè)文件WebForm1.aspx。圖9-13已建立了ASP?.NETWeb應(yīng)用程序

(4)在“解決方案資源管理器”對(duì)話框中的項(xiàng)目文件“Browse_Client”上右擊鼠標(biāo),彈出快捷菜單,選擇“添加Web引用”菜單,出現(xiàn)“添加Web引用”對(duì)話框,如圖9-14所示。

(5)在圖9-14中單擊“本地計(jì)算機(jī)上的Web服務(wù)”超級(jí)鏈接,系統(tǒng)將自動(dòng)列出本地計(jì)算機(jī)上的Web服務(wù),如圖9-15所示。

(6)根據(jù)需要選擇Web服務(wù),本案例程序選擇圖9-15中最后一行超級(jí)鏈接Service1,即URL為http://localhost/translateWebervice/Servicel.asmx的Service1服務(wù),系統(tǒng)顯示鏈接的Web服務(wù)頁(yè),如圖9-16所示。圖9-14“添加Web引用”對(duì)話框圖9-15本地計(jì)算機(jī)上的Web服務(wù)列表圖9-16Web服務(wù)頁(yè)

(7)在圖9-16中的“Web引用名”位置自動(dòng)顯示W(wǎng)eb引用名為localhost。該Web引用名localhost可以根據(jù)需要進(jìn)行修改,在后面的代碼中要用到此名稱(chēng),它實(shí)際上就是代理類(lèi)。單擊“添加引用”按鈕返回webform1.aspx設(shè)計(jì)窗體,此時(shí)用戶可以清楚地看到在“解決方案資源管理器”的“引用”項(xiàng)下面多了一個(gè)“WebReferences”引用項(xiàng),在該引用項(xiàng)下面是Web引用名localhost,如圖9-17所示。

(8)在圖9-17所示的Web窗體中添加兩個(gè)文本框Web控件TextBox、兩個(gè)標(biāo)簽Web控件Label及一個(gè)命令按鈕Web控件Button。按表9-1對(duì)以上Web控件的屬性進(jìn)行設(shè)置后,界面如圖9-18所示。圖9-17添加“Web引用”后的界面圖9-18添加Web控件并設(shè)置屬性后的界面在圖9-18中,每個(gè)Web控件都有一個(gè)與Windows窗體上的控件不一樣的標(biāo)記,在每個(gè)Web控件的左上角有一個(gè)綠色的小箭頭,這些Web控件在Web窗體的HTML模板上用做控件類(lèi)的引用時(shí)都在每個(gè)控件前帶有前綴asp,例如,文本框的HTML標(biāo)記符是asp:Textbox。

(9)為圖9-18所示的窗體中的命令按鈕Web控件Button編寫(xiě)Click事件代碼。

(10)項(xiàng)目的保存與運(yùn)行。代碼輸入完成后,先將項(xiàng)目保存,然后按F5鍵或單擊工具欄上的運(yùn)行按鈕運(yùn)行該項(xiàng)目。項(xiàng)目運(yùn)行后,在第一文本框中輸入3,單擊命令按鈕,調(diào)用WebService服務(wù)程序,將在第二個(gè)文本框中出現(xiàn)“March”,效果圖如圖9-19所示。

另外,也可以打開(kāi)IE瀏覽器,在IE瀏覽器的地址欄中輸入地址信息http://localhost/Browse_Client/WebForm1.aspx后,在出現(xiàn)的Web窗體中的第一文本框中輸入3,單擊命令按鈕,調(diào)用WebService服務(wù)程序,將在第二個(gè)文本框中出現(xiàn)“March”,運(yùn)行的效果也如圖9-19所示。圖9-19B/S方式的客戶端調(diào)用WebService服務(wù)程序的效果圖通過(guò)以上兩個(gè)案例,用戶應(yīng)該對(duì)WebService有了直觀的認(rèn)識(shí)。一般來(lái)說(shuō),使用COM技術(shù)可以讓方法調(diào)用跨過(guò)進(jìn)程的邊界(或者說(shuō)從一個(gè)應(yīng)用程序調(diào)用另一個(gè)應(yīng)用程序),而使用DCOM技術(shù)則可以讓方法調(diào)用在局域網(wǎng)內(nèi)進(jìn)行,那么通過(guò)WebService就使得Web也成了程序之間交流的場(chǎng)所。所以,WebService使得軟件開(kāi)發(fā)的模式發(fā)生了根本變化,即在Web上搭好一個(gè)框架,而具體的邏輯可以從各WebService生產(chǎn)者那里購(gòu)買(mǎi)。這些WebService服務(wù)程序無(wú)需像現(xiàn)在的軟件那樣放在光盤(pán)上分發(fā),而是直接將WebService服務(wù)程序放在網(wǎng)站上以供下載,用戶只需要知道一個(gè)地址,就可以在程序中調(diào)用它們。如果WebService需要升級(jí),則只要不改動(dòng)接口,對(duì)用戶的使用將毫無(wú)影響。

更進(jìn)一步地,由于WebService是基于標(biāo)準(zhǔn)的HTTP協(xié)議來(lái)傳送的,因此它可以順利地通過(guò)網(wǎng)關(guān),也就是說(shuō),無(wú)論有沒(méi)有網(wǎng)關(guān)的限制,整個(gè)Web都可以變成一個(gè)巨大的程序來(lái)運(yùn)行。這種協(xié)同計(jì)算機(jī)的能力可能會(huì)產(chǎn)生出今天不敢想象的各種應(yīng)用。

【相關(guān)知識(shí)】

知識(shí)點(diǎn)9-2-1簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議SOAP

XML作為Internet上信息交換的標(biāo)準(zhǔn)已經(jīng)得到了廣泛的應(yīng)用,SOAP(SimpleObjectAccessProtocol)是用于Web上交換結(jié)構(gòu)化和類(lèi)型信息(XML編碼信息)的簡(jiǎn)單的輕量級(jí)協(xié)議,它使得任何實(shí)現(xiàn)基本的Internet通信服務(wù)的系統(tǒng)都能處理和傳送XML消息。

SOAP包括以下四個(gè)部分:

●?SOAP封裝(envelop)也稱(chēng)為SOAP信封。該信封定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)當(dāng)接收并處理它以及如何處理它們的框架?!?SOAP編碼規(guī)則(encodingrules)用于表示應(yīng)用程序需要使用的數(shù)據(jù)類(lèi)型的實(shí)例。

●?SOAPRPCRPC樣式(請(qǐng)求/響應(yīng))的消息交換模式(RPCrepresentation)表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定。

●?SOAP綁定(binding)定義了SOAP和HTTP之間的綁定。

簡(jiǎn)單地理解,SOAP就是這樣的一個(gè)開(kāi)放協(xié)議,即SOAP=RPC+HTTP+XML:采用HTTP作為底層通信協(xié)議,RPC作為一致性的調(diào)用途徑,XML作為數(shù)據(jù)傳送的格式,允許服務(wù)提供者和服務(wù)客戶經(jīng)過(guò)防火墻在Internet進(jìn)行通信交互。知識(shí)點(diǎn)9-2-2服務(wù)描述(WSDL)

XML是一種編碼數(shù)據(jù)的標(biāo)準(zhǔn)方法。SOAP基于XML定義了一種消息格式以便交換方法、請(qǐng)求和響應(yīng),并最終完成Web服務(wù)的調(diào)用;服務(wù)描述(WSDL)用于描述如何使用SOAP來(lái)調(diào)用Web服務(wù)。

WSDL(WebServicesDescribtionLanguage)是用來(lái)描述網(wǎng)絡(luò)服務(wù)或終端服務(wù)的一種XML語(yǔ)言。它用于定義WebService以及如何調(diào)用它們(描述Web服務(wù)的屬性,例如它做什么?它位于何處?如何調(diào)用它?等等)。它包含對(duì)一組操作和消息的抽象定義,綁定到這些操作和消息的一個(gè)具體協(xié)議和這個(gè)綁定的一個(gè)具體服務(wù)訪問(wèn)規(guī)范。以上三部分描述了Web服務(wù)的抽象定義(抽象定義層),這三部分與具體Web服務(wù)部署細(xì)節(jié)無(wú)關(guān),是可復(fù)用的描述(即這三部分可以是Web服務(wù)本身,與具體的語(yǔ)言實(shí)現(xiàn)、遵從的平臺(tái)的細(xì)節(jié)規(guī)范以及被部署到哪臺(tái)機(jī)器無(wú)關(guān))。知識(shí)點(diǎn)9-2-3服務(wù)發(fā)現(xiàn)與分布式Web服務(wù)發(fā)現(xiàn)技術(shù)(UDDI和WS-Inspection)

1.Web服務(wù)發(fā)現(xiàn)

Web服務(wù)發(fā)現(xiàn)是定位或發(fā)現(xiàn)一個(gè)或多個(gè)說(shuō)明特定的Web服務(wù)的文檔的過(guò)程。Web服務(wù)的客戶通過(guò)發(fā)現(xiàn)來(lái)知道某個(gè)Web服務(wù)是否存在,以及從哪里獲取這個(gè)Web服務(wù)的文檔。

UDDI(UnifiedDiscribtionDiscoveryInterface)是一種使貿(mào)易伙伴彼此發(fā)現(xiàn)對(duì)方和查詢對(duì)方的規(guī)范。它使得最終用戶通過(guò)搜索企業(yè)列表、企業(yè)分類(lèi)或者實(shí)際Web服務(wù)的可編程描述查找產(chǎn)品和服務(wù)成為了可能。UDDI不僅是一個(gè)簡(jiǎn)易的搜索引擎,它也包含如何通過(guò)編程來(lái)和這些Web服務(wù)進(jìn)行交互。

UDDI程序員的API規(guī)范是一個(gè)文檔,概述了供顧客調(diào)用SOAP接口在UDDI站點(diǎn)上執(zhí)行的每項(xiàng)操作。API規(guī)范由兩部分組成:InquiryAPI,用于查詢和瀏覽UDDI注冊(cè)表來(lái)發(fā)現(xiàn)最終用戶查詢的企業(yè)和服務(wù);PublisherAPI,用于添加、更新和刪除UDDI注冊(cè)表中的企業(yè)和服務(wù)信息。

2.WS-Inspection(分布式Web服務(wù)發(fā)現(xiàn)技術(shù))

WS-Inspection為任一類(lèi)型的Web服務(wù)描述文檔提供簡(jiǎn)單的、分布式的服務(wù)發(fā)現(xiàn)方法。WS-Inspection技術(shù)是現(xiàn)有服務(wù)發(fā)現(xiàn)方法(如UDDI)的補(bǔ)充,因?yàn)樗x了通過(guò)檢查Web站點(diǎn)來(lái)獲得服務(wù)描述的過(guò)程。

(1)?WS-Inspection文檔提供一種方法來(lái)聚集不同類(lèi)型的服務(wù)描述。WS-Inspection文檔中,一個(gè)服務(wù)可以有多種對(duì)服務(wù)描述的引用。例如,可以既使用WSDL文件,又在UDDI注冊(cè)中心描述一個(gè)Web服務(wù)。對(duì)這兩種服務(wù)描述的引用應(yīng)該放在WS-Inspection文檔中。

(2)?WS-Inspection規(guī)范的兩個(gè)主要功能如下:

●定義XML格式,用于列舉對(duì)現(xiàn)有服務(wù)描述的引用。

●定義一組約定,這樣能容易地定位WS-Inspection文檔。

(3)?WS-Inspection文檔格式。WS-Inspection文檔提供對(duì)服務(wù)描述的引用的集合。這些服務(wù)描述可以用任何服務(wù)描述格式(例如WSDL、UDDI或者簡(jiǎn)單HTML)定義。WS-Inspection文檔包含對(duì)服務(wù)描述的引用列表和對(duì)其他WS-Inspection文檔的引用。

WS-Inspection文檔包含一個(gè)或多個(gè)<service>元素和<link>元素。一個(gè)<service>元素包含一個(gè)或多個(gè)不同類(lèi)型的對(duì)相同Web服務(wù)描述的引用。<link>元素可包含唯一一類(lèi)對(duì)服務(wù)描述的引用,但是這些服務(wù)描述不必引用相同的Web服務(wù)。

(4)查找WS-Inspection文檔。WS-Inspection規(guī)范提供的第二個(gè)主要功能是如何定義一個(gè)可以訪問(wèn)WS-Inspection文檔的位置。它創(chuàng)建了兩個(gè)約定,使WS-Inspection文檔的位置和檢索變得相對(duì)容易。9.3建立C/S方式的客戶端Windows窗體程序

【案例9-3】C/S方式的客戶端Windows窗體調(diào)用WebService服務(wù)。

通常WebService服務(wù)程序是一個(gè)需要IIS支持的應(yīng)用程序,而WebService客戶端程序可以有多種形式,調(diào)用WebService服務(wù)程序的客戶端程序既可以是“ASP.NETWeb”應(yīng)用程序(如案例9-2),也可以是Windows窗體應(yīng)用程序,還可以是其他形式的應(yīng)用程序。這些調(diào)用WebService服務(wù)的客戶端程序在調(diào)用WebService服務(wù)程序中的Web服務(wù)時(shí),其基本原則是一樣的,只是在客戶端的外觀表現(xiàn)不同而已。圖9-20客戶端Windows窗體調(diào)用WebService?服務(wù)程序的效果圖該案例主要設(shè)計(jì)一個(gè)C/S方式的客戶端Windows窗體,通過(guò)客戶端Windows窗體調(diào)用WebService服務(wù)程序。該案例最終的效果圖如圖9-20所示。當(dāng)在圖9-20的Windows窗體中的第一個(gè)文本框中輸入1~12的任一數(shù)字,單擊“數(shù)字轉(zhuǎn)化為英文單詞”命令按鈕時(shí),調(diào)用案例9-1中的WebService服務(wù)函數(shù),然后在第二個(gè)文本框中顯示調(diào)用WebService服務(wù)函數(shù)的返回值,該返回值是第一個(gè)文本框中輸入數(shù)字字符對(duì)應(yīng)的英文單詞。

【技能目標(biāo)】

掌握通過(guò)客戶端Windows窗體調(diào)用WebService服務(wù)程序的編程技術(shù),并體會(huì)與B/S方式的Browse客戶端瀏覽器窗體調(diào)用WebService服務(wù)程序的差異。

【操作要點(diǎn)與步驟】

(1)啟動(dòng)VB?.NET,新建一個(gè)“Windows應(yīng)用程序”,在“位置”文本框中輸入“D:\”,在項(xiàng)目名稱(chēng)欄中填寫(xiě)“Window_Client”,如圖9-21所示。單擊“確定”按鈕,系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)Windows應(yīng)用程序。圖9-21創(chuàng)建一個(gè)Windows應(yīng)用程序

(2)在圖9-21中單擊“確定”按鈕后,在出現(xiàn)的窗體上添加兩個(gè)文本框Windows控件TextBox,兩個(gè)標(biāo)簽Windows控件Label及一個(gè)命令按鈕Windows控件Button,按表9-2設(shè)置以上Windows控件的屬性,其界面如圖9-22所示。圖9-22添加Windows控件并設(shè)置屬性后的界面

(3)為圖9-22所示的Windows窗體中的命令按鈕Windows控件Button編寫(xiě)Click事件代碼。

(4)在為圖9-22所示的Windows窗體中的命令按鈕Windows控件Button編寫(xiě)Click事件代碼后,按案例9-2中第(4)、(5)、(6)、(7)步“添加Web引用”,“添加Web引用”后的效果圖如圖9-23所示。Web引用名為localhost,該Web引用名localhost可以根據(jù)需要進(jìn)行修改,在第(3)步的程序代碼中用到了此名稱(chēng),它實(shí)際上就是代理類(lèi)。此時(shí)用戶可以清楚地看到在“解決方案資源管理器”的引用項(xiàng)下面多了一個(gè)“WebReferences”引用項(xiàng),在該引用項(xiàng)下面是Web引用名localhost,如圖9-23所示。圖9-23“添加Web引用”后的效果圖

(5)項(xiàng)目的保存與運(yùn)行。代碼輸入并“添加Web引用”完成后,先將項(xiàng)目保存,然后按F5鍵或單擊工具欄上的運(yùn)行按鈕運(yùn)行該項(xiàng)目。項(xiàng)目運(yùn)行后,在第一文本框中輸入8,單擊命令按鈕,調(diào)用WebService服務(wù)程序,將在第二個(gè)文本框中出現(xiàn)“August”,效果圖如圖9-20所示。習(xí)題

一、單項(xiàng)選擇

1.在WebService服務(wù)調(diào)用中,采用了_____協(xié)議。

A.?COM B.?CORBA C.?TCP D.?SOAP

2.如果在遍布全球的互聯(lián)網(wǎng)上,世界各地的多個(gè)站點(diǎn)都要調(diào)用某個(gè)站點(diǎn)上的程序的功能,那么該用_____技術(shù)來(lái)實(shí)現(xiàn)。

A.?COM技術(shù) B.?WebService C.?WebD.?ASP

3.開(kāi)發(fā)WebService程序時(shí),首先要開(kāi)發(fā)_____。

A.?WebService調(diào)用程序 B.?WebService注冊(cè)程序

C.?WebService服務(wù)程序 D.?XML應(yīng)用程序

4.要開(kāi)發(fā)WebService服務(wù),機(jī)器上必須安裝______。

A.?IIS B.?FTP

C.遠(yuǎn)程登錄 D.?FrontPage

5.利用ASP?.NET開(kāi)發(fā)的頁(yè)面文件的擴(kuò)展名是______。

A.?asp B.?aspx

C.?htm D.?html二、多項(xiàng)選擇

1.ASP?.NET的Web服務(wù)相關(guān)的技術(shù)有______。

A.表示數(shù)據(jù)(XML)

B.交換消息(SOAP)

C.服務(wù)描述(WSDL)

D.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論