第五章 Web service 第一章 Web service简介 现在 Internet正在不断地发展着,在互联网应用刚开始的时候,我们浏览的网页只是静 态的,不可交互的。而现在随着技术的日益发展,将提供给网页浏览者一个可编程的Web站 点。这些站点将在组织、应用、服务、驱动上更加紧密的结合在一起,这些站点将通过一些 应用软件直接连接到另一个Web站点,这些可编程的Web站点相比传统的web站点来说, 将变得更加能重复使用,也更加智能化 net平台给我们提供了一种运行环境,即公用语言运行环境(CLR, Common language Runtime)。对CLR来说,它提供了一种内置机制来创建一个可编程的站点,、对于Web程 序开发者和VB程序员来说,这将是一致、熟悉的。这种模型是可以重复使用,也可以再 扩展。它包含了开放的 Internet标准(HTP,XML,SOAP,SDL)。以便它能被网页浏览者 访问。 ASPNET使用asmx文件来对 Web services的支持。asmx文件和aspx文件一样都属 于文本文件。它包含在aspx文件之中,成为 ASPNET应用程序的一部分。 下面我们将举一个简单的例子来介绍asmx文件,我们还是从“Hlo, World”这个经 典的例子说起,代码如下: % WebService Language="VB"Class="Hello World "%> Imports System. Web Services Public Class Hello World Inherits WebService Public Function <WebMethod( ) Say Hello World()As strin Return("Hello World") End Function End class 说明 1.编码最开始必须进行 WebService声明,从而定义这个文件为一个 Web Service而且, 在同一行中设置好编程语言的类型。 2.然后,引入名字空间 System. Web Services。注意,这个名字空间属于最基本的元素 必须要包含它。 3.接着,声明 service中的功能模块,也就是类模块,这里的类名叫 Hello World。这个 类来源于基类 WebService,而且应该是 public类型
第五章 Web Service 第一章 Web service 简介 现在 Internet 正在不断地发展着,在互联网应用刚开始的时候,我们浏览的网页只是静 态的,不可交互的。而现在随着技术的日益发展,将提供给网页浏览者一个可编程的 Web 站 点。这些站点将在组织、应用、服务、驱动上更加紧密的结合在一起,这些站点将通过一些 应用软件直接连接到另一个 Web 站点,这些可编程的 Web 站点相比传统的 web 站点来说, 将变得更加能重复使用,也更加智能化! .net 平台给我们提供了一种运行环境,即公用语言运行环境(CLR,Common Language Runtime)。对 CLR 来说,它提供了一种内置机制来创建一个可编程的站点,、对于 Web 程 序开发者和 VB 程序员来说,这将是一致、熟悉的。这种模型是可以重复使用,也可以再 扩展。 它包含了开放的 Internet 标准(HTTP, XML, SOAP, SDL)。以便它能被网页浏览者 访问。 ASP.NET 使用.asmx 文件来对 Web Services 的支持。.asmx 文件和.aspx 文件一样都属 于文本文件。它包含在.aspx 文件之中,成为 ASP.NET 应用程序的一部分。 下面我们将举一个简单的例子来介绍.asmx 文件,我们还是从“Hello,World”这个经 典的例子说起,代码如下: Imports System.Web.Services Public Class HelloWorld :Inherits WebService Public Function SayHelloWorld( ) As String Return("Hello World") End Function End Class 说明: 1.编码最开始必须进行 WebService 声明,从而定义这个文件为一个 Web Service。而且, 在同一行中设置好编程语言的类型。 2.然后,引入名字空间 System.Web.Services。注意,这个名字空间属于最基本的元素, 必须要包含它。 3.接着,声明 service 中的功能模块,也就是类模块,这里的类名叫 HelloWorld。这个 类来源于基类 WebService,而且应该是 public 类型
4.最后,定义 service的可访问方法。在表示方法的符号前面,要设置好自定义属性 对应于C#语言,属性值就是[ WebMethod];对应于ⅤB,就是。如果没有设置这个属性,那 么这个方法就不能从 service中访问。一个局部应用可以使用任何的 public类型的类,但是 只有具备[ WebMethod]的类才可以通过SOAP被远程地访问 当对 service的请求发生时,asmx文件将自动地被 ASPNET运行环境所编译。随后的 请求就可以由缓冲的预编译类型对象执行 为了测试编写好的代码,我们需用一个支持 ASPNET的Web服务器。假设这个Web 服务器的名称叫做 serverl,其上有一个虚拟目录test。请跟随下面步骤开始测试: 1.将代码保存为 Hello world. asmx 2.放到Web服务器Foo的虚拟目录Bar下 3.打开 Internet Explorer5,在地址栏输入htp/ server l/ test/Hello world. asmx 这时,我们将看到关于这个 Web service的公用方法一也就是那些标记为 WebMethod 属性的字符,并得知调用这些方法可以使用的协议,比如SOAP或者 Http Get。 在 Internet Explorer的地址栏中输入htp/Fo0Bar/ Hello World.asmx?SDL后,将产生基 于服务描述语言( Service Description Language:SDL)语法的具备相同信息的ⅩML文件 这个SDL文件非常重要,客户端就是使用它来访问 service 我们来看一下程序运行的效果 aHelloWorld YebService-Nicrosoft Internet Explorer 回 交件①)繃辑)查看①收流()工具①)帮助) 翻是疆 历史邮件 打中 Helloworld Webservice The Helloworld Web service exposes the following web methods For a formal XML definition of the Helloworld webservice, please review its: SDL Contract. web Method Reference SayHelloworld web Method No additional reference information about the SayHelloworld web method is available at this time esponse type strin evoke the sayHelloworld web method Enter parameter values and then click the 'Invoke button to invoke the SayHello world web method Invoke 「本地 Intranet 从客户端进行访问 除了允许开发者使用的创建 Web services的技术以外, Microsoft的NET框架给客户端
4.最后,定义 service 的可访问方法。在表示方法的符号前面,要设置好自定义属性。 对应于 C#语言,属性值就是[WebMethod];对应于 VB,就是。如果没有设置这个属性,那 么这个方法就不能从 service 中访问。一个局部应用可以使用任何的 public 类型的类,但是 只有具备[WebMethod]的类才可以通过 SOAP 被远程地访问。 当对 service 的请求发生时,.asmx 文件将自动地被 ASP.NET 运行环境所编译。随后的 请求就可以由缓冲的预编译类型对象执行。 为了测试编写好的代码,我们需用一个支持 ASP.NET 的 Web 服务器。假设这个 Web 服务器的名称叫做 server1,其上有一个虚拟目录 test。请跟随下面步骤开始测试: 1.将代码保存为 HelloWorld.asmx 2.放到 Web 服务器 Foo 的虚拟目录 Bar 下 3.打开 Internet Explorer5,在地址栏输入 http://server1/test/HelloWorld.asmx 这时,我们将看到关于这个 Web Service 的公用方法-也就是那些标记为 WebMethod 属性的字符,并得知调用这些方法可以使用的协议,比如 SOAP 或者 HTTP GET。 在 Internet Explorer 的地址栏中输入 http://Foo/Bar/HelloWorld.asmx?SDL 后,将产生基 于服务描述语言(Service Description Language :SDL)语法的具备相同信息的 XML 文件。 这个 SDL 文件非常重要,客户端就是使用它来访问 service。 我们来看一下程序运行的效果: 从客户端进行访问: 除了允许开发者使用的创建 Web Services 的技术以外,Microsoft 的.NET 框架给客户端
提供了一套访问并使用 Web Services的精致且高深的工具和代码。由于 Web Services是基于 如简单对象访问协议SOAP( Simple Object Access Protocol)和HITP这样的开放协议标准 的,从而,我们就可以使用这种客户端技术使用非 ASPNET的 Web services。当然,这也 需用高水平地合成 ASPNET Web services和这种客户端技术。 SDK中有一个工具叫做 WebServiceUtil. exe,我们可以使用它来下载一个 Web services 的SDL描述语言,并创建表达这个 Service的代理类。比如,当我们输入以下命令,就可以 创建一个叫做 HelloWorld. cs的代理类: WebserviceuTil/c:proxy/pa:http://somedomain.com/somefolder/helloWorldasmx?sdl 这个类看起来与前面创建的类非常相似。它包含一个方法 Say Hello World,该方法返回 一个字符串。将这个代理类编译到一个应用程序中,然后调用这个代理类的方法,结果就是 通过HITP,这个代理类包装SOAP请求,然后接收SOAP编码响应,最后汇集成为一个字 符串。 从客户端来看,代码是很简单的,返回的结果也很简单,就是一个字符串" Hello world"。 同样为了对照方便,我们列出了使用ⅤB、C#以及 JScript三种语言编写的代码: Hello World my Hello World= new Hello World String sReturn=my Hello World. Say Hello World Dim my World As New Hello World Dim rEturn As String=my Hello World. Say Hello World var myHello World Hello World=new Hello World var sReturn: String=my Hello World. Say Hello World 通过上面的例程,你可能对 Web services有了初步的印象。下面,我们将介绍 Web services 中涉及到的各种数据类型,也就是 Web Services方法的输入输出参数类型。因为 Web services 的执行是建立在ⅩML架构之上的,所以它能够支持丰富的数据类型。下表列出了使用SOAP 协议时 Web Services支持的数据类型: 描述 基础类型 也即标准基础类型,包括: String、Int32、 Int16、Int64、 Single、 Doubl Decimal、 DateTime(类似XML中的 timelnstant)、 Date Time(类似XML中的date)、 DateTime(类似XML中的time)以及 nIqualifiedName(类似XML中的 QName) 枚举类型 枚举类型。例如:" public enum color{red=1
提供了一套访问并使用 Web Services 的精致且高深的工具和代码。由于 Web Services 是基于 如简单对象访问协议 SOAP(Simple Object Access Protocol)和 HTTP 这样的开放协议标准 的,从而,我们就可以使用这种客户端技术使用非 ASP.NET 的 Web Services。当然,这也 需用高水平地合成 ASP.NET Web Services 和这种客户端技术。 SDK 中有一个工具叫做 WebServiceUtil.exe,我们可以使用它来下载一个 Web Services 的 SDL 描述语言,并创建表达这个 Service 的代理类。比如,当我们输入以下命令,就可以 创建一个叫做 HelloWorld.cs 的代理类: WebServiceUtil /c:proxy /pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL 这个类看起来与前面创建的类非常相似。它包含一个方法 SayHelloWorld,该方法返回 一个字符串。将这个代理类编译到一个应用程序中,然后调用这个代理类的方法,结果就是: 通过 HTTP,这个代理类包装 SOAP 请求,然后接收 SOAP 编码响应,最后汇集成为一个字 符串。 从客户端来看,代码是很简单的,返回的结果也很简单,就是一个字符串"Hello World"。 同样为了对照方便,我们列出了使用 VB、C#以及 JScript 三种语言编写的代码: C# HelloWorld myHelloWorld = new HelloWorld(); String sReturn = myHelloWorld.SayHelloWorld(); VB Dim myHelloWorld As New HelloWorld() Dim sReturn As String = myHelloWorld.SayHelloWorld() JScript var myHelloWorld:HelloWorld = new HelloWorld(); var sReturn:String = myHelloWorld.SayHelloWorld(); 通过上面的例程,你可能对 Web Services 有了初步的印象。下面,我们将介绍 Web Services 中涉及到的各种数据类型,也就是Web Services方法的输入/输出参数类型。因为Web Services 的执行是建立在 XML 架构之上的,所以它能够支持丰富的数据类型。下表列出了使用 SOAP 协议时 Web Services 支持的数据类型: 类型 描述 基础类型 也即标准基础类型,包括: String、Int32、 Byte、Boolean、Int16、Int64、Single、Double、 Decimal 、 DateTime( 类 似 XML 中 的 timeInstant)、DateTime(类似XML中的date)、 DateTime( 类 似 XML 中 的 time) 以 及 XmlQualifiedName(类似 XML 中的 QName)。 枚举类型 枚举类型。例如:. "public enum color { red=1, blue=2 }
基础,枚举数组 上而提到的类型数组。例如:m和m 类和结构 带有公用域或属性的类和结构,公用域和属 性是串行结构的 类和结构体数组 上述类型的数组 DataSet ADO. NET DataSet类型。 DataSets能在类和 结构体作为字段来使用 DataSet数组 上述类型的数组 mINd XmINode是XML文档片断的内存表示,就 好像一个轻量级的XML文档对象模型。比如 说,"”就可以存储在一个 XmINode类型变量 中。我们可以将 XmINodes作为参数传递 以SOAP兼容方式附加到传递给Web Services的ⅹML文档上。返回值也是同样原 理。 XmlNode也可看成是类或结构中的字段 iNOde数组 上述类型的数组 当通过SOAP或者 HTIP GET/POST调用 Web Services时,返回值可以是上述提到的任 何一种数据类型 参数的数据类型 使用SOAP协议时,"通过值"以及"通过引用"这两种输入/输出参数形式都可被支持。如 果是"通过引用"的参数类型,就会产生两种方式的数据发送效果:到服务器的以及返回到客 户端的。但是,当通过 Http Get/POST传递输入参数给 Web services时,就只支持有限的 数据类型了,而且还必须是"通过值形式的参数。这些类型如下 类型 描述 支持大多数标准基础类型,包括:Int32、 String、 Int16、Int64、 boolean、 Single、 Double、 Decimal 基础类型(有限的) Date Time、 TimeSpan、 INtl6、Ulnt32、Ulnt64和 Currency。从客户端来看,所有这些类型都转变为 枚举类型 比如:" public enum color{red=1,blue=2}"。 基础类型数组,枚举类型数组 上述类型的数组,比如 string]和int 现在我们将举一个例子,来说明上面我们介绍的数据类型: 这个例子利用 WebServiceutil. exe建立的SOAP代理来使用上面列出的数据类型。注意: 因为在asmx文件中定义了多于一个的公用类,所以,我们必须要指定哪一个作为 Web service 类,这可以通过设置 WebService标识的 Class属性来实现,代码如下
基础,枚举数组 上面提到的类型数组。例如:string[] 和 int[] 类和结构 带有公用域或属性的类和结构,公用域和属 性是串行结构的 类和结构体数组 上述类型的数组 DataSet ADO.NET DataSet 类型。DataSets 能在类和 结构体作为字段来使用。 DataSet 数组 上述类型的数组 XmlNode XmlNode 是 XML 文档片断的内存表示,就 好像一个轻量级的 XML 文档对象模型。比如 说,"" 就可以存储在一个 XmlNode 类型变量 中。我们可以将 XmlNodes 作为参数传递, 以 SOAP 兼 容 方 式附 加 到 传 递给 Web Services 的 XML 文档上。返回值也是同样原 理。XmlNode 也可看成是类或结构中的字段。 XmlNode 数组 上述类型的数组 当通过 SOAP 或者 HTTP GET/POST 调用 Web Services 时,返回值可以是上述提到的任 何一种数据类型。 参数的数据类型 使用 SOAP 协议时,"通过值"以及"通过引用"这两种输入/输出参数形式都可被支持。如 果是"通过引用"的参数类型,就会产生两种方式的数据发送效果:到服务器的以及返回到客 户端的。但是,当通过 HTTP GET/POST 传递输入参数给 Web Services 时,就只支持有限的 数据类型了,而且还必须是"通过值"形式的参数。这些类型如下: 类型 描述 基础类型 (有限的) 支持大多数标准基础类型,包括: Int32、String、 Int16、Int64、Boolean、Single、Double、Decimal、 DateTime、TimeSpan、UInt16、UInt32、UInt64 和 Currency。从客户端来看,所有这些类型都转变为 string。 枚举类型 比如: "public enum color { red=1, blue=2 }"。 基础类型数组,枚举类型数组 上述类型的数组,比如 string[]和 int[] 现在我们将举一个例子,来说明上面我们介绍的数据类型: 这个例子利用 WebServiceUtil.exe 建立的 SOAP 代理来使用上面列出的数据类型。注意: 因为在.asmx 文件中定义了多于一个的公用类,所以,我们必须要指定哪一个作为 WebService 类,这可以通过设置 WebService 标识的 Class 属性来实现,代码如下:
源文件 webservice\datatype. asmx的内容如下: % WebService Language=VB"Class="Data types Imports s Imports System. Web Services Public Enum mode EOff=2 End enum Public class order Public OrderlD As Integer Public price as doubl End class Public Class Data types Say Hello方法显示从 service中返回的一个字符串信息 Public Function SayHello(As String Return "Hello World! End Function Say HelloName方法返回一个字符串,并接受一个字符串参数。 Public Function Say HelloName(Name As String)As String Return"Hello& Name End Function GetIntArray方法显示了如何返回一个整数数组 Public Function GetInt Array( As Integer( Dim I As Integer Dim A(5)As Integer
源文件 webservice\datatype.asmx 的内容如下: Imports System Imports System.Web.Services Public Enum Mode EOn = 1 EOff = 2 End Enum Public Class Order Public OrderID As Integer Public Price As Double End Class Public Class DataTypes ‘SayHello 方法显示从 service 中返回的一个字符串信息。 Public Function SayHello() As String Return "Hello World!" End Function ‘SayHelloName 方法返回一个字符串,并接受一个字符串参数。 Public Function SayHelloName(Name As String) As String Return "Hello" & Name End Function ‘GetIntArray 方法显示了如何返回一个整数数组。 Public Function GetIntArray() As Integer() Dim I As Integer Dim A(5) As Integer
For i= o to 4 A(1)=1*10 Return a End Function GetMode方法返回一个枚举数值 Public Function GetMode( As mode Return mode. eoff End Function GetOrder方法返回一个类 Public Function GetOrderO As Order Dim myOrder As New Order MyOrder. Price=34 My Order. OrderID=323232 Return MyOrder End function GetOrders方法返回定单对象数组。 Public Function GetOrderso As OrderO Dim MyOrder(2)As Order My Order(0)=New OrderO My Order(O). Price=34.5 My Order(o). OrderID=323232 MyOrder()= New Ordero My Order( 1). Price=99.4 My Order( 1).OrderID=645645 Return MyOrder End function End class
For I = 0 to 4 A(I) = I*10 Next Return A End Function ‘GetMode 方法返回一个枚举数值。 Public Function GetMode() As Mode Return Mode.EOff End Function ‘GetOrder 方法返回一个类。 Public Function GetOrder() As Order Dim MyOrder As New Order MyOrder.Price=34.5 MyOrder.OrderID = 323232 Return MyOrder End Function ‘GetOrders 方法返回定单对象数组。 Public Function GetOrders() As Order() Dim MyOrder(2) As Order MyOrder(0) = New Order() MyOrder(0).Price=34.5 MyOrder(0).OrderID = 323232 MyOrder(1) = New Order() MyOrder(1).Price=99.4 MyOrder(1).OrderID = 645645 Return MyOrder End Function End Class
程序运行的效果如下 文件①)铜辑①)查看①)收流工具①)帮助 SayhelloName Web Method Response type Invoke the SayHelloName Web Method Enter parameter values and then click the Invoke button to invoke the SayHelloName web method Parameter value Invoke No additional reference information about the GetIntArray web method is available at this time 本地 Intranet 当我们单击 invoke的时候,将显示 helloworld 对于使用客户端应用程序而言,使用 Web Serviceutil代理生成工具配置这些数据类型是 透明的。请看关于 Web Service的一个客户端例程: 客户端访问的文件: clint. aspx,内容如下 <@ Import Namespace="Data Types Service"% background-color: cccccc, border-color black
程序运行的效果如下: 当我们单击 invoke 的时候,将显示: 对于使用客户端应用程序而言,使用 WebServiceUtil 代理生成工具配置这些数据类型是 透明的。请看关于 Web Service 的一个客户端例程: 客户端访问的文件:clint.aspx,内容如下: div { font: 8pt verdana; background-color:cccccc; border-color:black; border-width:1;
border-style: solid ding:l0,10,10,10 Public Sub Page Load(Sender As Object, E As EventArgs) Dim DAs Data Types New Data types Messagel. InnerHtml= D Say Helloo Messagel Inner Html= Messagel Inner Html D Say HelloName("Bob") Message3. InnerHtml= Message3 Inner Html D GetModeo Dim Mylnt Array As Integer(=D. GetIntArrayO Dim MyString As String="Contents of the Array: For 1=0 To MyInt Array Length-1 My String- My String MyIntArray()&"OrderlD: MyOrder OrderID Message4 Inner Html= Message 4. Inner Html &"Price: " MyOrder Price Dim MyOrders As Order(=D. GetOrderso Messages. InnerHtml Messages Inner Htm "OrderID. MyOrders(o). OrderID Messages. Inner Html= Messages. Inner Html &"Price: Myorders(O). Price End Sub script> Using Data Types with Web Services h5>Methods that return a Primitive(String) Methods that return an Array of Primitives (Integers):
border-style:solid; padding:10,10,10,10; } Public Sub Page_Load(Sender As Object, E As EventArgs) Dim D As DataTypes = New DataTypes() Message1.InnerHtml = D.SayHello() Message1.InnerHtml = Message1.InnerHtml & D.SayHelloName("Bob") Message3.InnerHtml = Message3.InnerHtml & D.GetMode() Dim MyIntArray As Integer() = D.GetIntArray() Dim MyString As String = "Contents of the Array:" For I = 0 To MyIntArray.Length - 1 MyString = MyString & MyIntArray(I) & "" Next Message2.InnerHtml = Message2.InnerHtml & MyString Dim MyOrder As Order = D.GetOrder() Message4.InnerHtml = Message4.InnerHtml & "OrderID: " & MyOrder.OrderID Message4.InnerHtml = Message4.InnerHtml & "Price: " & MyOrder.Price Dim MyOrders As Order() = D.GetOrders() Message5.InnerHtml = Message5.InnerHtml & "OrderID: " & MyOrders(0).OrderID Message5.InnerHtml = Message5.InnerHtml & "Price: " & MyOrders(0).Price End Sub Using DataTypes with Web Services Methods that return a Primitive (String): Methods that return an Array of Primitives (Integers):
div id="Message2"runat="server"> Method that returns an enum: id="Message"runat="server"/> Method that returns a ClassStruct: Method that returns an array of Classes/Structs: div id= Messages"runat="server" html 在客户端程序中,我们使用 Say Hello(As String Dim results( As Object= Me Invoke("SayHello", New Object(O)) Return Ctype(results(O), String) End Function Public Function Begin Say Hello(By Val callback As System. AsyncCallback, By Val asyncState As Object)As System. IAsyncResult Return Me BeginInvoke("Say Hello", New Object(O)0, callback, asyncState End function Public Function EndSay Hello( By Val asyncResult As System IAsyncResult)As String
Method that returns an Enum: Method that returns a Class/Struct: Method that returns an array of Classes/Structs: 在客户端程序中,我们使用来引入 DataTypesService 这个我们自定义的名字空间。然后在程序中只是调用了 DataTypesService 中的方法。 现在我们来看如何生成名字空间: 1.Datatype.vb 中的内容: Imports System.Xml.Serialization Imports System.Web.Services.Protocols Imports System.Web.Services Namespace DataTypesService Public Class DataType Inherits System.Web.Services.Protocols.SoapClientProtocol Public Sub New() MyBase.New Me.Url="http://localhost/QuickStart/aspplus/samples/services/DataTypes/VB/DataTypes.asmx" End Sub Public Function SayHello() As String Dim results() As Object = Me.Invoke("SayHello", New Object(0) {}) Return CType(results(0),String) End Function Public Function BeginSayHello(ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult Return Me.BeginInvoke("SayHello", New Object(0) {}, callback, asyncState) End Function Public Function EndSayHello(ByVal asyncResult As System.IAsyncResult) As String
Dim results(As Object=Me. EndInvoke(asyncResult) Return CType(results(O), String) End function ublic Function Say HelloName( By val System. Xml Serialization XmlElementAttribute("Name IsNullable: =true)> name As String)As String Dim results( As Object=Me Invoke("SayHelloName" New Objecto(name)) Return CType(results(O), String) End Function Public Function Begin SayHelloName( By Val name As String By Val callback A stem Async Callback, By Val asyncState As Object)As System. IAsyncResult Return Me BeginInvoke("Say HelloName", New Objecto (name), callback asyncState) End function Public Function EndSay Hello Name(By Val async Result As System. IAsync Result) As Dim results( As Object=Me. EndInvoke(asyncResult) Return CType(results(O), String) End Function Public Function GetInt Array (As Integero Dim results( As Object=Me Invoke("GetInt Array", New Object(O)o) End Function Public Function Begin GetInt Array( By Val callback As System. AsyncCallback, By asyncState As Object)As System. IAsyncResult Return Me BeginInvoke("GetInt Array", New Object(O)0, callback, asyncState) End function Public Function End GetInt Array(By Val asyncResult As System IAsyncResult) Dim results( As Object=Me. EndInvoke(async Result) Return CType(results(O), IntegerO) End Function Public Function GetMode( As Mode Dim results( As Object= Me Invoke("Get Mode", New Object(0)D) Return CType(results(O), Mode) End function
Dim results() As Object = Me.EndInvoke(asyncResult) Return CType(results(0),String) End Function Public Function SayHelloName(ByVal name As String) As String Dim results() As Object = Me.Invoke("SayHelloName", New Object() {name}) Return CType(results(0),String) End Function Public Function BeginSayHelloName(ByVal name As String, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult Return Me.BeginInvoke("SayHelloName", New Object() {name}, callback, asyncState) End Function Public Function EndSayHelloName(ByVal asyncResult As System.IAsyncResult) As String Dim results() As Object = Me.EndInvoke(asyncResult) Return CType(results(0),String) End Function Public Function GetIntArray() As Integer() Dim results() As Object = Me.Invoke("GetIntArray", New Object(0) {}) Return CType(results(0),Integer()) End Function Public Function BeginGetIntArray(ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult Return Me.BeginInvoke("GetIntArray", New Object(0) {}, callback, asyncState) End Function Public Function EndGetIntArray(ByVal asyncResult As System.IAsyncResult) As Integer() Dim results() As Object = Me.EndInvoke(asyncResult) Return CType(results(0),Integer()) End Function Public Function GetMode() As Mode Dim results() As Object = Me.Invoke("GetMode", New Object(0) {}) Return CType(results(0),Mode) End Function