完全入門現(xiàn)在Internet正在不斷地發(fā)展著互聯(lián)網應用剛開始的時候_第1頁
完全入門現(xiàn)在Internet正在不斷地發(fā)展著互聯(lián)網應用剛開始的時候_第2頁
完全入門現(xiàn)在Internet正在不斷地發(fā)展著互聯(lián)網應用剛開始的時候_第3頁
完全入門現(xiàn)在Internet正在不斷地發(fā)展著互聯(lián)網應用剛開始的時候_第4頁
完全入門現(xiàn)在Internet正在不斷地發(fā)展著互聯(lián)網應用剛開始的時候_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Web第一章Webservice簡Internet正在不斷地發(fā)展著,在互聯(lián)網應用剛開始的時候,我們?yōu)g覽的網頁只是靜.net平臺給我們提供了一種運行環(huán)境,即公用語言運行環(huán)境(CLR,CommonLanguageRuntime序開發(fā)者和VB程序員來說,這將是一致、熟悉的。這種模型是可以重復使用,也可以再。ASP.NET使用.asmxWebServices的支持。.asmx文件和.aspx文件一樣都屬于文本文件。它包含在.aspx文件之中,成為ASP.NET應用程序的一部分。下面舉一個簡單的例子來介紹.asmx文件,我們還是從“o,World”這個經文件名:webservice\sisam.asmx<%@WebServiceLanguage="VB"Class="oWorld"%>ImportsSystem.Web.ServicesPublicFunction<WebMethod()>SayoWorld()AsStringReturn("oWorld")EndClass類來源于基類WebService,而且應該是public類型。么這個方法就不能從service中。一個局部應用可以使用任何的public類型的類,但是只有具備[WebMethod]的類才可以通過SOAP被地。service的請求發(fā)生時,.asmxASP.NET運行環(huán)境所編譯。隨后的 將代碼保存為 Bar這時,看到關于這個WebService的公用方法-也就是那些標記為在InternetExplorer的地址欄中輸入后,將產生基于服務描述語言(ServiceDescriptionLanguage:SDL)XML文件。這個SDL文件非常重要,客戶端就是使用它來service。如簡單對象協(xié)議SOAP(SimpleObjectAccessProtocol)和HTTP這樣的開放協(xié)議標準ASP.NETWebServices。當然,這也需用高水平地合成ASP.NETWebServices和這種客戶端技術。SDK中有一個工具叫做WebServiceUtil.exe,我們可以使用它來一個WebServices創(chuàng)建一個叫做oWorld.cs的類: 這個類看起來與前面創(chuàng)建的類非常相似。它包含一個方法Say 同樣為了對照方便,我們列出了使用VB、C#以及JScript三種語言編寫的代碼:oWorldmyoWorld=new DimmyoWorldAsNewvarmyoWorld:oWorld=newoWorld();通過上面的例程,你可能對WebServices有了初步的印象。下面,介紹WebServices議時WebServices支持的數(shù)據(jù)類型:也即標準基礎類型,包括:String、Int32、Decimal、DateTime(類似XML 中的timeInstant)、DateTime(類似XML中的date)、DateTime(類似XML中的time)以及blue=2[]ADO.NETDataSet類型。DataSetsXmlNodeXML文檔片斷的內存表示,就說,""就可以在一個XmlNode類型變量XmlNodes作為參數(shù)傳遞,以SOAP兼容方式附加到傳遞給WebServicesXML文檔上。返回值也是同樣原(有限的Int32、String、DateTime、TimeSpan、UInt16、UInt32、UInt64和"publicenumcolorred=1,blue=2類,這可以通過設置WebService標識的Class屬性來實現(xiàn),代碼如下:<%@WebServiceLanguage="VB"Class="DataTypes"%>ImportsSystemPublicEnumModeEOn=EndEnumPublicClassPublicPriceAsDoubleEndPublicClassReturn oEnd Return" EndFunctionDimIAsIntegerForI=0toA(I)=EndEndFunctionDimMyOrderAsNewEndFunctionDimMyOrder(2)AsOrderMyOrder(0)=NewOrder()MyOrder(1)=NewOrder()EndFunctionEnd對于使用客戶端應用程序而言,使用WebServiceUtil生成工具配置這些數(shù)據(jù)類型是透明的。請看關于WebService的一個客戶端例程:{font:8ptverdana;}DimDAsDataTypes=NewDataTypes()Message1.InnerHtml=D.Say Message1.InnerHtml=Message1.InnerHtml&D.Say Message3.InnerHtml=Message3.InnerHtml&D.GetMode()DimMyIntArrayAsInteger()=DimMyStringAsString="ContentsoftheForI=0ToMyIntArray.Length-MyString=MyString&MyIntArray(I)&Message2.InnerHtml=Message2.InnerHtml&MyStringDimMyOrderAsOrder=D.GetOrder()Message4.InnerHtml=Message4.InnerHtml&"<BR>OrderID:"&MyOrder.OrderIDMessage4.InnerHtml=Message4.InnerHtml&"<BR>Price:"&MyOrder.PriceDimMyOrdersAsOrder()= Message5.InnerHtml=Message5.InnerHtml&"<BR>Price:"&MyOrders(0).PriceEndSub<bodystyle="font:10pt<h5>MethodsthatreturnaPrimitive(String):<h5>MethodthatreturnsanEnum:<h5>MethodthatreturnsaClass/Struct:在客戶端程序中,我們使用<%@ImportNamespace="DataTypesService"%>來引入DataTypesServiceDataTypesServiceImportsSystem.Xml.SerializationImportsSystem.Web.ServicesPublicClass PublicSubNew()EndPublicSayo()AsStringDimresults()AsObject=Me.Invoke("Sayo",NewObject(0){})ReturnCType(results(0),String)EndPublicFunctionBeginSayo(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Sayo",NewObject(0){},callback,asyncState)EndFunctionDimresults()AsObject=Me.EndInvoke(asyncResult)ReturnCType(results(0),String)End IsNullable:=true)>nameAsString)AsStringDimresults()AsObject=Me.Invoke("SayoName",NewObject(){name})ReturnCType(results(0),String)EndPublicFunctionBeginSay oName(ByValnameAsString,ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturn oName",NewObject(){name},EndPublicFunction oName(ByValasyncResultAsSystem.IAsyncResult)

Dimresults()AsObject=Me.EndInvoke(asyncResult)ReturnCType(results(0),String)End Dimresults()AsObject=Me.Invoke("GetIntArray",NewObject(0){})ReturnCType(results(0),Integer())EndPublicFunctionBeginGetIntArray(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("GetIntArray",NewObject(0){},callback,asyncState)EndFunctionPublicFunctionEndGetIntArray(ByValasyncResultAsSystem.IAsyncResult)

Dimresults()AsObject=Me.EndInvoke(asyncResult)ReturnCType(results(0),Integer())End GetMode()AsModeDimresults()AsObject=Me.Invoke("GetMode",NewObject(0){})ReturnCType(results(0),Mode)EndPublicFunctionBeginGetMode(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("GetMode",NewObject(0){},callback,asyncState)EndFunctionPublicFunctionEndGetMode(ByValasyncResultAsSystem.IAsyncResult)AsModeDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunction GetOrder()AsOrderDimresults()AsObject=Me.Invoke("GetOrder",NewObject(0){})ReturnCType(results(0),Order)EndPublicFunctionBeginGetOrder(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("GetOrder",NewObject(0){},callback,asyncState)EndFunctionPublicFunctionEndGetOrder(ByValasyncResultAsSystem.IAsyncResult)AsOrderDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunction Dimresults()AsObject=Me.Invoke("GetOrders",NewObject(0){})ReturnCType(results(0),Order())EndPublicFunctionBeginGetOrders(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("GetOrders",NewObject(0){},callback,asyncState)EndFunctionPublicFunctionEndGetOrders(ByValasyncResultAsSystem.IAsyncResult)AsOrder()Dimresults()AsObject=Me.EndInvoke(asyncResult)EndFunctionEnd [Namespace]:="",IsNullable:=false)>ModeEnd [Namespace]:="",IsNullable:=true)>Order PriceAsDoubleEndClassvb文件中,我們定義了一個名字空間DataTypesService。請看vb文件的其中一段代碼段:PublicFunction odAttribute("")>Sayo()AsStringDimresults()AsObject=Me.Invoke("Say o",NewObject(0){})ReturnCType(results(0),String)EndPublicFunctionBeginSayo(ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Sayo",NewObject(0){},callback,EndPublicFunctionEndSayo(ByValasyncResultAsSystem.IAsyncResult)AsStringDimresults()AsObject=Me.EndInvoke(asyncResult)ReturnEnd要生成上面的名字空間,我們使用webserviceutil.exe來編譯。 5.1.1中,webservice文件后綴名采用.asmx,開始應使用<%@WebService…%>申明,接著System.Web.Services命名空間,然后定義一個前面加上WebMethod屬性。第二章一個簡單的WebService案在這個例子中,定義一個mathservice類,來對兩個數(shù)字分別進行加,減,乘,除。當然這個類需要從基類webservice中繼承。請先看該程序的源代碼:<%@WebServiceLanguage="VB"Class="MathService"%>ImportsSystemPublicClassMathService:InheritsPublicFunction<WebMethod()>Add(AAsInteger,BAsInteger)AsIntegerReturnA+BEndReturnA-BEndFunctionPublicFunction<WebMethod()>Multiply(AAsInteger,BAsInteger)AsIntegerReturnA*BEndPublicFunction<WebMethod()>Divide(AAsInteger,BAsInteger)AsIntegerIfB=0Return-1EndIfEndFunctionEnd一個類( DimOp1AsInteger=0DimOp2AsInteger=PublicSubSubmit_Click(SenderAsObject,EAsEventArgs)Op2=CatchExpAsException'IgnoredEndDimServiceAsMathService=NewMathService()Select(CType(sender,Control).ID)Case"Add"Result.Text="<b>Result</b>="&Service.Add(Op1,Op2).ToString()Case"Subtract":Result.Text="<b>Result</b>="&Service.Subtract(Op1,Op2).ToString()Case"Multiply":Result.Text="<b>Result</b>="&Service.Multiply(Op1,Op2).ToString()Case"Divide":Result.Text="<b>Result</b>="&Service.Divide(Op1,Op2).ToString()EndSelectEnd<bodystyle="font:10pt<h4>UsingaSimpleMathService<formOperand1:<br><asp:TextBoxid="Operand1"Text="15"runat="server"/><br>Operand2:<br><asp:TextBoxid="Operand2"Text="5"runat="server"/><p> <inputtype="submit"id="Subtract"value="Subtract"OnServerClick="Submit_Click"<inputtype="submit"id="Multiply"value="Multiply"OnServerClick="Submit_Click" sdl文件,當然這個文件不用手工輸入,我們在瀏覽一個.asmx的時候,在后綴名后直接加上?sdl可以自動生成sdl文件。ImportsSystem.Xml.SerializationImportsSystem.Web.ServicesNamespaceMathServiceSpacePublicClass PublicSubNew() ""&End <System.Xml.Serialization.XmlElementAttribute("A",IsNullable:=false)>aAsInteger,<System.Xml.Serialization.XmlElementAttribute("B",IsNullable:=false)>bAsInteger)AsDimresults()AsObject=Me.Invoke("Add",NewObject(){a,b})ReturnCType(results(0),Integer)EndPublicFunctionBeginAdd(ByValaAsInteger,ByValbAsInteger,ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Add",NewObject(){a,b},callback,asyncState)EndFunctionPublicFunctionEndAdd(ByValasyncResultAsSystem.IAsyncResult)AsIntegerDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunction Subtract(ByVal<System.Xml.Serialization.XmlElementAttribute("A",IsNullable:=false)>aAsInteger,ByVal<System.Xml.Serialization.XmlElementAttribute("B",IsNullable:=false)>bAsDimresults()AsObject=Me.Invoke("Subtract",NewObject(){a,b})ReturnCType(results(0),Integer)EndPublicFunctionBeginSubtract(ByValaAsInteger,ByValbAsInteger,ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Subtract",NewObject(){a,b},callback,asyncState)EndFunctionPublicFunctionEndSubtract(ByValasyncResultAsSystem.IAsyncResult)AsIntegerDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunction Multiply(ByVal<System.Xml.Serialization.XmlElementAttribute("A",IsNullable:=false)>aAsInteger,ByVal<System.Xml.Serialization.XmlElementAttribute("B",IsNullable:=false)>bAsInteger)AsIntegerDimresults()AsObject=Me.Invoke("Multiply",NewObject(){a,b})ReturnCType(results(0),Integer)EndPublicFunctionBeginMultiply(ByValaAsInteger,ByValbAsInteger,ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Multiply",NewObject(){a,b},callback,asyncState)EndFunctionPublicFunctionEndMultiply(ByValasyncResultAsSystem.IAsyncResult)AsIntegerDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunction Divide(ByVal<System.Xml.Serialization.XmlElementAttribute("A",IsNullable:=false)>aAsInteger,ByVal<System.Xml.Serialization.XmlElementAttribute("B",IsNullable:=false)>bAsInteger)AsIntegerDimresults()AsObject=Me.Invoke("Divide",NewObject(){a,b})ReturnCType(results(0),Integer)EndPublicFunctionBeginDivide(ByValaAsInteger,ByValbAsInteger,ByValcallbackAsSystem.AsyncCallback,ByValasyncStateAsObject)AsSystem.IAsyncResultReturnMe.BeginInvoke("Divide",NewObject(){a,b},callback,asyncState)EndFunctionPublicFunctionEndDivide(ByValasyncResultAsSystem.IAsyncResult)AsIntegerDimresults()AsObject=Me.EndInvoke(asyncResult)EndFunctionEndClass 5.2.1webservice服務的步驟和注意事項,雖然這個例子和實際使用的應用環(huán)境有第三章數(shù)據(jù)我們的這個例子說明了 一個基于XML技術的強大的數(shù)據(jù)分離技術能夠WebService方法返回。DataSet能夠在一個智能化的結構中復雜的信息和關系,這另外一個返回字體大小的列表。方法把兩個結果用一個DataSet來,并返回一個DataSet中的“Table“表的行數(shù)。雖然這個方法執(zhí)行起來有點簡單,但是ImportsPublicFunction<WebMethod()>Getcolor()AsDataSetDimMyConnectionAsSQLConnection=New mand1As mand=Newmand("select*fromcolor",MyConnection) mand2As mand=Newmand("select*fromsize",MyConnection)DimDSAsNewmand2.FillDataSet(DS,"size")ReturnDSEndFunctionPublicFunctionWebMethodPutcolor(DSAsDataSetAsIntegerEndFunction文件保存為webservice.asmx,放在虛擬 <%@WebServiceLanguage="VB"Class="DataService"%>ImportsSystemImportsImportsPublicClassDataServicePublicFunctionWebMethodGetcolorAsDat

溫馨提示

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

評論

0/150

提交評論