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