資料庫.NET中的Web service的開發
.NET平臺內建了對Web service的支援,包括Web service的構建和使用。 與其它開發平臺不同,使用.NET平臺,你不需要其他的工具或者SDK就可以完成Web service的開發了。.NET Framework本身就全面支援Web service,包括伺服器端的請求處理器和對客戶端傳送和接受SOAP訊息的支援。本文將帶你用.NET建立和使用一個簡單的Web service。
要在.NET中建立Web service,你只需建立一個.asmx檔案。這個檔案中有一個WebService標籤,包含Language和class兩個屬性,分別用於指定程式語言和Web service中暴露出的類。然後你就可以像平常一樣編寫你的類了。最後,在每個你想要暴露出的方法前面加一個System.Web.Services.WebMethodAttribute屬性就可以了。最終程式碼類似於下面的程式清單。
'a WebService in VB.NET (calc_vb.asmx)
Imports System.Web.Services
Public Class Calc
_
Public Function Add(ByVal a As Double, _
ByVal b As Double) As Double
Return a + b
End Function
End Class
用瀏覽器來瀏覽這個.asmx檔案,你可以得到一張測試這個Web service的頁面。例如,你把calc_vb.asmx 檔案放到了Web伺服器的myService目錄下,那麼相應的URL就是:
http://localhost/myService/calc_vb.asmx
自動生成的Web service測試頁
在測試頁裡點選Add方法,你會得到一個HTML表單,用來測試這個方法。在這個表單裡,Add方法所接受的所有引數都有一個相應的文字框。填好所有的引數,點選"Invoke"按鈕,這個表單就會被提交到Web伺服器。實際上,這就是通過HTTP GET的形式在呼叫Web service。得到的結果是一個如下的簡單XML文件:
158
瀏覽下面這個URL,可以直接呼叫Add方法:
http://localhost/myService/calc_vb.asmx/Add?a=123&b=35
如你所見,方法的名字是你所請求的資源(注意,這裡是區分大小寫的),而函式中的每個引數都對映為查詢字串中的一個引數。這種形式對快速測試一個Web service 是非常方便的。不過,因為這種方式使用的是HTTP GET,所以它在資料型別和引數傳遞方向等方面都有一些侷限。
自動生成的Add方法測試頁
回到前面的Web service測試頁,我們還可以看到頁面的頂部有一個Service Description連結。點選過去你就可以得到描述這個Web service的WSDL文件。在Web service的URL後面加上一個"WSDL"查詢字串,你也可以直接瀏覽到這一頁:
http://localhost/myService/calc_vb.asmx?wsdl
Calc Web service的WSDL文件。注意,為了顯示更多內容,所有的XML元素都已摺疊起來。
要在.NET中呼叫一個Web service ,你需要先執行wsdl.exe工具。這個工具會從Web service中讀出它的WSDL描述文件,生成一個可以呼叫這個Web service的代理類。例如,在命令列中執行下面的命令,可以生成Calc Web service的代理類:
wsdl.exe /language:VB http://localhost/myService/calc_vb.asmx?wsdl
程式清單1-2擷取自生成的VB代理類原始碼。這個代理類繼承自System.Web.Services.Protocols.SoapHttpClientProtocol類,並且暴露出一個Add方法,這個方法接收兩個double型浮點數,返回一個double型浮點數。
程式清單1 2 擷取自wsdl.exe 生成的Web service代理類原始碼
Imports System.Web.Services.Protocols
'省略其他程式碼
Public Class Calc
Inherits SoapHttpClientProtocol
'省略其他程式碼
SoapDocumentMethodAttribute( _
"http://tempuri.org/Add", _
Use:=System.Web.Services.Description.SoapBindingUse.Literal,_
ParameterStyle.:= SoapParameterStyle.Wrapped)>_
Public Function Add(ByVal a As Double, ByValb As Double) As Double
Dim results() As bject = Me.Invoke("Add",_
New Object() {a, b})
Return CType(results(0), Double)
End Function
'省略其他程式碼
End Class
此後的工作就非常簡單了。要呼叫CalculatorWeb service,只需例項化一個Calc的代理物件,再呼叫它的Add方法:
Dim ws As New Calc()
Dim result As Double = ws.Add(20.5, 10.9)
MessageBox.Show("結果是:" &result.ToString)
實際上,代理類中的Add方法僅僅是通過.NET Framework的SoapHttpClientProtocol類來呼叫Web service,然後再把Web service 的返回值返回給呼叫者。
要在.NET中建立Web service,你只需建立一個.asmx檔案。這個檔案中有一個WebService標籤,包含Language和class兩個屬性,分別用於指定程式語言和Web service中暴露出的類。然後你就可以像平常一樣編寫你的類了。最後,在每個你想要暴露出的方法前面加一個System.Web.Services.WebMethodAttribute屬性就可以了。最終程式碼類似於下面的程式清單。
'a WebService in VB.NET (calc_vb.asmx)
Imports System.Web.Services
Public Class Calc
Public Function Add(ByVal a As Double, _
ByVal b As Double) As Double
Return a + b
End Function
End Class
用瀏覽器來瀏覽這個.asmx檔案,你可以得到一張測試這個Web service的頁面。例如,你把calc_vb.asmx 檔案放到了Web伺服器的myService目錄下,那麼相應的URL就是:
http://localhost/myService/calc_vb.asmx
自動生成的Web service測試頁
在測試頁裡點選Add方法,你會得到一個HTML表單,用來測試這個方法。在這個表單裡,Add方法所接受的所有引數都有一個相應的文字框。填好所有的引數,點選"Invoke"按鈕,這個表單就會被提交到Web伺服器。實際上,這就是通過HTTP GET的形式在呼叫Web service。得到的結果是一個如下的簡單XML文件:
瀏覽下面這個URL,可以直接呼叫Add方法:
http://localhost/myService/calc_vb.asmx/Add?a=123&b=35
如你所見,方法的名字是你所請求的資源(注意,這裡是區分大小寫的),而函式中的每個引數都對映為查詢字串中的一個引數。這種形式對快速測試一個Web service 是非常方便的。不過,因為這種方式使用的是HTTP GET,所以它在資料型別和引數傳遞方向等方面都有一些侷限。
自動生成的Add方法測試頁
回到前面的Web service測試頁,我們還可以看到頁面的頂部有一個Service Description連結。點選過去你就可以得到描述這個Web service的WSDL文件。在Web service的URL後面加上一個"WSDL"查詢字串,你也可以直接瀏覽到這一頁:
http://localhost/myService/calc_vb.asmx?wsdl
Calc Web service的WSDL文件。注意,為了顯示更多內容,所有的XML元素都已摺疊起來。
要在.NET中呼叫一個Web service ,你需要先執行wsdl.exe工具。這個工具會從Web service中讀出它的WSDL描述文件,生成一個可以呼叫這個Web service的代理類。例如,在命令列中執行下面的命令,可以生成Calc Web service的代理類:
wsdl.exe /language:VB http://localhost/myService/calc_vb.asmx?wsdl
程式清單1-2擷取自生成的VB代理類原始碼。這個代理類繼承自System.Web.Services.Protocols.SoapHttpClientProtocol類,並且暴露出一個Add方法,這個方法接收兩個double型浮點數,返回一個double型浮點數。
程式清單1 2 擷取自wsdl.exe 生成的Web service代理類原始碼
Imports System.Web.Services.Protocols
'省略其他程式碼
Public Class Calc
Inherits SoapHttpClientProtocol
'省略其他程式碼
"http://tempuri.org/Add", _
Use:=System.Web.Services.Description.SoapBindingUse.Literal,_
ParameterStyle.:= SoapParameterStyle.Wrapped)>_
Public Function Add(ByVal a As Double, ByValb As Double) As Double
Dim results() As bject = Me.Invoke("Add",_
New Object() {a, b})
Return CType(results(0), Double)
End Function
'省略其他程式碼
End Class
此後的工作就非常簡單了。要呼叫CalculatorWeb service,只需例項化一個Calc的代理物件,再呼叫它的Add方法:
Dim ws As New Calc()
Dim result As Double = ws.Add(20.5, 10.9)
MessageBox.Show("結果是:" &result.ToString)
實際上,代理類中的Add方法僅僅是通過.NET Framework的SoapHttpClientProtocol類來呼叫Web service,然後再把Web service 的返回值返回給呼叫者。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-400061/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 循序漸進學.Net Core Web Api開發系列【9】:常用的資料庫操作WebAPI資料庫
- .NET 基礎拾遺(7):Web Service 的開發與應用基礎Web
- Android中的Web ServiceAndroidWeb
- .NET調PHP Web Service的典型例子PHPWeb
- 基於gin的golang web開發:使用資料庫事務GolangWeb資料庫
- 基於gin的golang web開發:訪問mysql資料庫GolangWebMySql資料庫
- Web 開發中 20 個很有用的 CSS 庫WebCSS
- JSON資料格式及其在WEB開發中的應用JSONWeb
- Flask web開發第五章資料庫FlaskWeb資料庫
- 基於.Net開發的資料庫匯入匯出的開源專案資料庫
- 資料庫開發(19)基於物件的資料庫資料庫物件
- .Net Web 開發研習(1) —— Web開發的“十事要說”Web
- 軟體開發中的資料庫測試技術資料庫
- 資料庫和開發行業中的IDE工具資料庫行業IDE
- 後端開發中關聯式資料庫的開發管理新思路後端資料庫
- 關於Web開發中的“程式=資料結構+演算法”Web資料結構演算法
- 【ASP.NET開發】ASP.NET對SQLServer的通用資料庫訪問類ASP.NETSQLServer資料庫
- GO web 開發 實戰二,資料庫相關GoWeb資料庫
- .net將資料庫中的html標籤展示資料庫HTML
- web開發中的路徑Web
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- 使用 CXF 整合 Spring 開發 Web ServiceSpringWeb
- ChatGPT “眼”中的開源資料庫ChatGPT資料庫
- SQL資料庫開發中的SSIS 延遲驗證方法SQL資料庫
- WP7開發中的資料庫系統選擇資料庫
- 關於Web開發中“程式=資料結構+演算法”的思考Web資料結構演算法
- ASP.NET Web開發 Echarts圖表空資料優化ASP.NETWebEcharts優化
- GO web 開發 實戰三,資料庫預處理GoWeb資料庫
- 第6章:複製資料庫之克隆開啟的risenet資料庫資料庫SENet
- vb.net 存取資料庫中的圖片 (轉)資料庫
- 資料庫開發程式設計師在開發過程中的注意事項資料庫程式設計師
- WinCE資料通訊之Web Service篇Web
- WEB應用開發中的ServletWebServlet
- WEB開發中的cookie與sessionWebCookieSession
- 資料庫應用程式開發入門篇—— 關聯式資料庫中的基本概念資料庫
- 視訊直播系統開發中的資料庫建立方案資料庫
- SQL Server 資料庫開發中的十大問題VYSQLServer資料庫