完全入门现在Internet正在不断地发展着互联网应用刚开始的时候_第1页
完全入门现在Internet正在不断地发展着互联网应用刚开始的时候_第2页
完全入门现在Internet正在不断地发展着互联网应用刚开始的时候_第3页
完全入门现在Internet正在不断地发展着互联网应用刚开始的时候_第4页
完全入门现在Internet正在不断地发展着互联网应用刚开始的时候_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web第一章Webservice简Internet正在不断地发展着,在互联网应用刚开始的时候,我们浏览的网页只是静.net平台给我们提供了一种运行环境,即公用语言运行环境(CLR,CommonLanguageRuntime序开发者和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的请求发生时,.asmxASP.NET运行环境所编译。随后的 将代码保存为 Bar这时,看到关于这个WebService的公用方法-也就是那些标记为在InternetExplorer的地址栏中输入后,将产生基于服务描述语言(ServiceDescriptionLanguage:SDL)XML文件。这个SDL文件非常重要,客户端就是使用它来service。如简单对象协议SOAP(SimpleObjectAccessProtocol)和HTTP这样的开放协议标准ASP.NETWebServices。当然,这也需用高水平地合成ASP.NETWebServices和这种客户端技术。SDK中有一个工具叫做WebServiceUtil.exe,我们可以使用它来一个WebServices创建一个叫做oWorld.cs的类: 这个类看起来与前面创建的类非常相似。它包含一个方法Say 同样为了对照方便,我们列出了使用VB、C#以及JScript三种语言编写的代码:oWorldmyoWorld=new DimmyoWorldAsNewvarmyoWorld:oWorld=newoWorld();通过上面的例程,你可能对WebServices有了初步的印象。下面,介绍WebServices议时WebServices支持的数据类型:也即标准基础类型,包括:String、Int32、Decimal、DateTime(类似XML 中的timeInstant)、DateTime(类似XML中的date)、DateTime(类似XML中的time)以及blue=2[]ADO.NETDataSet类型。DataSetsXmlNodeXML文档片断的内存表示,就说,""就可以在一个XmlNode类型变量XmlNodes作为参数传递,以SOAP兼容方式附加到传递给WebServicesXML文档上。返回值也是同样原(有限的Int32、String、DateTime、TimeSpan、UInt16、UInt32、UInt64和"publicenumcolorred=1,blue=2类,这可以通过设置WebService标识的Class属性来实现,代码如下:<%@WebServiceLanguage="VB"Class="DataTypes"%>ImportsSystemPublicEnumModeEOn=EndEnumPublicClassPublicPriceAsDoubleEndPublicClassReturn oEnd Return" EndFunctionDimIAsIntegerForI=0toA(I)=EndEndFunctionDimMyOrderAsNewEndFunctionDimMyOrder(2)AsOrderMyOrder(0)=NewOrder()MyOrder(1)=NewOrder()EndFunctionEnd对于使用客户端应用程序而言,使用WebServiceUtil生成工具配置这些数据类型是透明的。请看关于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类,来对两个数字分别进行加,减,乘,除。当然这个类需要从基类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服务的步骤和注意事项,虽然这个例子和实际使用的应用环境有第三章数据我们的这个例子说明了 一个基于XML技术的强大的数据分离技术能够WebService方法返回。DataSet能够在一个智能化的结构中复杂的信息和关系,这另外一个返回字体大小的列表。方法把两个结果用一个DataSet来,并返回一个DataSet中的“Table“表的行数。虽然这个方法执行起来有点简单,但是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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论