asp.net web services
生活随笔
收集整理的這篇文章主要介紹了
asp.net web services
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
現(xiàn)在Internet正在不斷地發(fā)展著,在互聯(lián)網(wǎng)應(yīng)用剛開始的時候,我們?yōu)g覽的網(wǎng)頁只是靜態(tài)的,不可交互的。而現(xiàn)在隨著技術(shù)的日益發(fā)展,將提供給網(wǎng)頁瀏覽者一個可編程的Web 站點(diǎn)。這些站點(diǎn)將在組織、應(yīng)用、服務(wù)、驅(qū)動上更加緊密的結(jié)合在一起,這些站點(diǎn)將通過一些應(yīng)用軟件直接連接到另一個Web 站點(diǎn),這些可編程的Web 站點(diǎn)相比傳統(tǒng)的web站點(diǎn)來說,將變得更加能重復(fù)使用,也更加智能化!
.net平臺給我們提供了一種運(yùn)行環(huán)境,即公用語言運(yùn)行環(huán)境(CLR,Common Language Runtime)。對 CLR來說,它提供了一種內(nèi)置機(jī)制來創(chuàng)建一個可編程的站點(diǎn),、對于Web 程序開發(fā)者和VB 程序員來說,這將是一致、熟悉的。這種模型是可以重復(fù)使用,也可以再擴(kuò)展。 它包含了開放的Internet標(biāo)準(zhǔn)(HTTP, XML, SOAP, SDL)。以便它能被網(wǎng)頁瀏覽者訪問。
ASP.NET 使用.asmx 文件來對Web Services的支持。.asmx 文件和.aspx文件一樣都屬于文本文件。它包含在.aspx文件之中,成為ASP.NET應(yīng)用程序的一部分。
下面我們將舉一個簡單的例子來介紹.asmx文件,我們還是從"Hello,World"這個經(jīng)典的例子說起,代碼如下:
說明:
1.編碼最開始必須進(jìn)行WebService聲明,從而定義這個文件為一個Web Service。而且,在同一行中設(shè)置好編程語言的類型。
2.然后,引入名字空間System.Web.Services。注意,這個名字空間屬于最基本的元素,必須要包含它。
3.接著,聲明service中的功能模塊,也就是類模塊,這里的類名叫HelloWorld。這個類來源于基類WebService,而且應(yīng)該是public類型。
4.最后,定義service的可訪問方法。在表示方法的符號前面,要設(shè)置好自定義屬性。對應(yīng)于C#語言,屬性值就是[WebMethod];對應(yīng)于VB,就是。如果沒有設(shè)置這個屬性,那么這個方法就不能從service中訪問。一個局部應(yīng)用可以使用任何的public類型的類,但是只有具備[WebMethod]的類才可以通過SOAP被遠(yuǎn)程地訪問。
當(dāng)對service的請求發(fā)生時,.asmx文件將自動地被ASP.NET運(yùn)行環(huán)境所編譯。隨后的請求就可以由緩沖的預(yù)編譯類型對象執(zhí)行。
為了測試編寫好的代碼,我們需用一個支持ASP.NET的Web服務(wù)器。假設(shè)這個Web服務(wù)器的名稱叫做server1,其上有一個虛擬目錄test。請跟隨下面步驟開始測試:
1.將代碼保存為HelloWorld.asmx
2.放到Web服務(wù)器Foo的虛擬目錄Bar下
3.打開Internet Explorer5,在地址欄輸入http://server1/test/HelloWorld.asmx
這時,我們將看到關(guān)于這個Web Service的公用方法-也就是那些標(biāo)記為WebMethod屬性的字符,并得知調(diào)用這些方法可以使用的協(xié)議,比如SOAP或者HTTP GET。
在Internet Explorer的地址欄中輸入http://Foo/Bar/HelloWorld.asmx?SDL后,將產(chǎn)生基于服務(wù)描述語言(Service Description Language :SDL)語法的具備相同信息的XML文件。這個SDL文件非常重要,客戶端就是使用它來訪問service。
從客戶端進(jìn)行訪問:
除了允許開發(fā)者使用的創(chuàng)建Web Services的技術(shù)以外,Microsoft的.NET框架給客戶端提供了一套訪問并使用Web Services的精致且高深的工具和代碼。由于Web Services是基于如簡單對象訪問協(xié)議SOAP(Simple Object Access Protocol)和HTTP這樣的開放協(xié)議標(biāo)準(zhǔn)的,從而,我們就可以使用這種客戶端技術(shù)使用非ASP.NET的Web Services。當(dāng)然,這也需用高水平地合成ASP.NET Web Services和這種客戶端技術(shù)。
SDK中有一個工具叫做WebServiceUtil.exe,我們可以使用它來下載一個Web Services的SDL描述語言,并創(chuàng)建表達(dá)這個Service的代理類。比如,當(dāng)我們輸入以下命令,就可以創(chuàng)建一個叫做HelloWorld.cs的代理類:
WebServiceUtil /c:proxy /pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL
這個類看起來與前面創(chuàng)建的類非常相似。它包含一個方法SayHelloWorld,該方法返回一個字符串。將這個代理類編譯到一個應(yīng)用程序中,然后調(diào)用這個代理類的方法,結(jié)果就是:通過HTTP,這個代理類包裝SOAP請求,然后接收SOAP編碼響應(yīng),最后匯集成為一個字符串。
請看關(guān)于Web Service的一個客戶端例程:
客戶端訪問的文件:clint.aspx,內(nèi)容如下:
在客戶端程序中,我們使用<%@ Import Namespace="DataTypesService" %>來引入DataTypesService這個我們自定義的名字空間。然后在程序中只是調(diào)用了DataTypesService中的方法。?
.net平臺給我們提供了一種運(yùn)行環(huán)境,即公用語言運(yùn)行環(huán)境(CLR,Common Language Runtime)。對 CLR來說,它提供了一種內(nèi)置機(jī)制來創(chuàng)建一個可編程的站點(diǎn),、對于Web 程序開發(fā)者和VB 程序員來說,這將是一致、熟悉的。這種模型是可以重復(fù)使用,也可以再擴(kuò)展。 它包含了開放的Internet標(biāo)準(zhǔn)(HTTP, XML, SOAP, SDL)。以便它能被網(wǎng)頁瀏覽者訪問。
ASP.NET 使用.asmx 文件來對Web Services的支持。.asmx 文件和.aspx文件一樣都屬于文本文件。它包含在.aspx文件之中,成為ASP.NET應(yīng)用程序的一部分。
下面我們將舉一個簡單的例子來介紹.asmx文件,我們還是從"Hello,World"這個經(jīng)典的例子說起,代碼如下:
| <!-- 文件名:webservice\sisam.asmx --> web教程網(wǎng) <%@ WebService Language="VB" Class="HelloWorld" %> Imports System.Web.Services Public Class HelloWorld :Inherits WebService Public Function <WebMethod( )> SayHelloWorld( ) As String Return("Hello World") End Function End Class |
說明:
1.編碼最開始必須進(jìn)行WebService聲明,從而定義這個文件為一個Web Service。而且,在同一行中設(shè)置好編程語言的類型。
2.然后,引入名字空間System.Web.Services。注意,這個名字空間屬于最基本的元素,必須要包含它。
3.接著,聲明service中的功能模塊,也就是類模塊,這里的類名叫HelloWorld。這個類來源于基類WebService,而且應(yīng)該是public類型。
4.最后,定義service的可訪問方法。在表示方法的符號前面,要設(shè)置好自定義屬性。對應(yīng)于C#語言,屬性值就是[WebMethod];對應(yīng)于VB,就是。如果沒有設(shè)置這個屬性,那么這個方法就不能從service中訪問。一個局部應(yīng)用可以使用任何的public類型的類,但是只有具備[WebMethod]的類才可以通過SOAP被遠(yuǎn)程地訪問。
當(dāng)對service的請求發(fā)生時,.asmx文件將自動地被ASP.NET運(yùn)行環(huán)境所編譯。隨后的請求就可以由緩沖的預(yù)編譯類型對象執(zhí)行。
web教程網(wǎng)
為了測試編寫好的代碼,我們需用一個支持ASP.NET的Web服務(wù)器。假設(shè)這個Web服務(wù)器的名稱叫做server1,其上有一個虛擬目錄test。請跟隨下面步驟開始測試:
1.將代碼保存為HelloWorld.asmx
2.放到Web服務(wù)器Foo的虛擬目錄Bar下
3.打開Internet Explorer5,在地址欄輸入http://server1/test/HelloWorld.asmx
這時,我們將看到關(guān)于這個Web Service的公用方法-也就是那些標(biāo)記為WebMethod屬性的字符,并得知調(diào)用這些方法可以使用的協(xié)議,比如SOAP或者HTTP GET。
在Internet Explorer的地址欄中輸入http://Foo/Bar/HelloWorld.asmx?SDL后,將產(chǎn)生基于服務(wù)描述語言(Service Description Language :SDL)語法的具備相同信息的XML文件。這個SDL文件非常重要,客戶端就是使用它來訪問service。
從客戶端進(jìn)行訪問:
除了允許開發(fā)者使用的創(chuàng)建Web Services的技術(shù)以外,Microsoft的.NET框架給客戶端提供了一套訪問并使用Web Services的精致且高深的工具和代碼。由于Web Services是基于如簡單對象訪問協(xié)議SOAP(Simple Object Access Protocol)和HTTP這樣的開放協(xié)議標(biāo)準(zhǔn)的,從而,我們就可以使用這種客戶端技術(shù)使用非ASP.NET的Web Services。當(dāng)然,這也需用高水平地合成ASP.NET Web Services和這種客戶端技術(shù)。
網(wǎng)絡(luò)應(yīng)用
SDK中有一個工具叫做WebServiceUtil.exe,我們可以使用它來下載一個Web Services的SDL描述語言,并創(chuàng)建表達(dá)這個Service的代理類。比如,當(dāng)我們輸入以下命令,就可以創(chuàng)建一個叫做HelloWorld.cs的代理類:
WebServiceUtil /c:proxy /pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL
這個類看起來與前面創(chuàng)建的類非常相似。它包含一個方法SayHelloWorld,該方法返回一個字符串。將這個代理類編譯到一個應(yīng)用程序中,然后調(diào)用這個代理類的方法,結(jié)果就是:通過HTTP,這個代理類包裝SOAP請求,然后接收SOAP編碼響應(yīng),最后匯集成為一個字符串。
請看關(guān)于Web Service的一個客戶端例程:
客戶端訪問的文件:clint.aspx,內(nèi)容如下:
<%@ Import Namespace="DataTypesService" %> <html> <style> div { font: 8pt verdana; background-color:cccccc; border-color:black; border-width:1; border-style:solid; padding:10,10,10,10; web教程網(wǎng) } </style> <script language="VB" runat="server"> Public Sub Page_Load(Sender As Object, E As EventArgs) Dim D As DataTypes = New DataTypes() Message1.InnerHtml = D.SayHello() Message1.InnerHtml = Message1.InnerHtml & D.SayHelloName("Bob") Message3.InnerHtml = Message3.InnerHtml & D.GetMode() Dim MyIntArray As Integer() = D.GetIntArray() Dim MyString As String = "Contents of the Array:<BR>" For I = 0 To MyIntArray.Length - 1 MyString = MyString & MyIntArray(I) & "<BR>" Next Message2.InnerHtml = Message2.InnerHtml & MyString Dim MyOrder As Order = D.GetOrder() Message4.InnerHtml = Message4.InnerHtml & "<BR>OrderID: " & MyOrder.OrderID Message4.InnerHtml = Message4.InnerHtml & "<BR>Price: " & MyOrder.Price Dim MyOrders As Order() = D.GetOrders() Message5.InnerHtml = Message5.InnerHtml & "<BR>OrderID: " & MyOrders(0).OrderID web教程網(wǎng) Message5.InnerHtml = Message5.InnerHtml & "<BR>Price: " & MyOrders(0).Price End Sub </script> <body style="font: 10pt verdana"> <H4>Using DataTypes with Web Services</H4> <h5>Methods that return a Primitive (String): </h5> <div id="Message1" runat="server"/> <h5>Methods that return an Array of Primitives (Integers): </h5> <div id="Message2" runat="server"/> <h5>Method that returns an Enum: </h5> <div id="Message3" runat="server"/> <h5>Method that returns a Class/Struct: </h5> <div id="Message4" runat="server"/> <h5>Method that returns an array of Classes/Structs: </h5> <div id="Message5" runat="server"/> </body> </html> |
在客戶端程序中,我們使用<%@ Import Namespace="DataTypesService" %>來引入DataTypesService這個我們自定義的名字空間。然后在程序中只是調(diào)用了DataTypesService中的方法。?
轉(zhuǎn)載于:https://www.cnblogs.com/hliq/archive/2007/04/24/2087291.html
總結(jié)
以上是生活随笔為你收集整理的asp.net web services的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 何时使用委托而不使用接口
- 下一篇: 日本通胀致苹果、小米等纷纷涨价:游戏机除