當前位置:工程項目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊
.NET中的Web service的開發(fā)
.NET中的Web service的開發(fā)
.NET平臺內建了對Web service的支持,包括Web service的構建和使用。
與其它開發(fā)平臺不同,使用.NET平臺,你不需要其他的工具或者SDK就可以完成Web service的開發(fā)了。.NET Framework本身就全面支持Web
service,包括服務器端的請求處理器和對客戶端發(fā)送和接受SOAP消息的支持。本節(jié)將帶你用.NET創(chuàng)建和使用一個簡單的Web
service。
要在.NET中創(chuàng)建Web
service,你只需建立一個.asmx文件。這個文件中有一個WebService標簽,包含Language和class兩個屬性,分別用于指定編程語言和Web
service中暴露出的類。然后你就可以像平常一樣編寫你的類了。最后,在每個你想要暴露出的方法前面加一個System.Web.Services.WebMethodAttribute屬性就可以了。最終代碼類似于下面的程序清單。
'a
WebService in VB.NET (calc_vb.asmx)
<%@WebService Language="VB"class="Calc"
%>
Imports System.Web.Services
Public Class Calc
<WebMethod()>
_
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 的名字并列出了可以調用的方法。列表后面有一段文字,意思是你正在使用缺省的命名空間http://tempuri.org/,如果你想要發(fā)布這個Web
service的話,最好換一個你自己的命名空間,以避免名字上的沖突。本書后面的部分將會討論Web service
命名空間的問題。在第六章中,我還會介紹怎樣使用.NET的屬性來指定命名空間和其他一些東西。
自動生成的Web service測試頁
在測試頁里點擊Add方法,你會得到一個HTML表單,用來測試這個方法(見下圖)。在這個表單里,Add方法所接受的所有參數都有一個相應的文本框。填好所有的參數,點擊"Invoke"按鈕,這個表單就會被提交到Web服務器。實際上,這就是通過HTTP
GET的形式在調用Web service。得到的結果是一個如下的簡單XML文檔:
<double xmlns="158http://tempuri.org/">158</double>
瀏覽下面這個URL,可以直接調用Add方法:
http://localhost/myService/calc_vb.asmx/Add?a=123&b=35
如你所見,方法的名字是你所請求的資源(注意,這里是區(qū)分大小寫的),而函數中的每個參數都映射為查詢字符串中的一個參數。這種形式對快速測試一個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元素都已折疊起來。
Calc Web
service的WSDL文檔。注意,為了顯示更多內容,所有的XML元素都已折疊起來。
要在.NET中調用一個Web service
,你需要先運行wsdl.exe工具。這個工具會從Web service中讀出它的WSDL描述文檔,生成一個可以調用這個Web
service的代理類。例如,在命令行中執(zhí)行下面的命令,可以生成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
'省略其他代碼
<System.Diagnostics.DebuggerStepThroughAttribute(),_
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 Object =
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的創(chuàng)建和調用還有很多的內容。不過,在深入這些細節(jié)之前,我們需要先理解Webservice里面的幾個關鍵技術:XSD、SOAP和WSDL。
- 1Web服務分類:混亂前的準備
- 2提供云計算服務 從行業(yè)應用開始
- 3如何選擇運行ERP系統(tǒng)的服務器?
- 4杜絕管理漏洞 打響信息化之戰(zhàn)(四)
- 5ITIL運維落地將為中國企業(yè)帶來什么
- 6轉貼PPT--中國公司治理:進展、挑戰(zhàn)與對策
- 7使用UDDI的Web服務描述和發(fā)現(第一部分)
- 8[原創(chuàng)]ITIL系列專題(二)—認識服務管理中的概念
- 9物流業(yè):小企業(yè)抓營銷 大企業(yè)抓管理
- 10網絡銀行在金融信息化中改變了什么
- 112013年,地區(qū)級OA軟件市場何去何從,我們無從得知
- 12將lT技術轉化為銀行競爭力
- 13服務器常見的十四個故障及分析
- 14ITIL與IT運維管理的“前世姻緣”
- 15電信企業(yè)IT系統(tǒng)的SOA實施策略
- 16體制改革:電力企業(yè)信息化怎么改
- 17IT基礎設施庫ITIL的力量:ITIL介紹及應用案例(四)(AMT 張純棣 編譯)
- 18使用UDDI的Web服務描述和發(fā)現(第二部分)
- 19ITIL讓小公司成就大作為
- 20中華醫(yī)院信息網絡大會2009側記
- 21外包中的IT治理結構
- 22如何對終端零售店進行銷售管理
- 23馬文東:EHR建設企業(yè)還需“量力而行”
- 24打好企業(yè)信息戰(zhàn) 商務智能軟件派上用場
- 25從經濟普查看保險業(yè)信息化建設
- 26關于ERP 五個最容易被誤解的事實
- 27保險業(yè)網上投保的五大發(fā)展趨勢
- 28三大實施策略 電信業(yè)邁向動態(tài)數據中心
- 29微軟反唇相譏:Sun ONE毫無競爭性
- 30ITSM落地
成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓