使用svcutil.exe生成代理代码
2009-12-06 13:07
429 查看
25.9 构建WCF客户应用程序
现在已经设置好主机,最后一个任务是构建用于与这个WCF服务类型通信的软件部分。虽然可以手动执行大量工作并构建必要的基础结构(可行但需要大量劳动的任务),但是.NET Framework 3.5 SDK提供了一些方法来快速生成客户端代理。首先,创建名为MagicEightBallServiceClient的新控制台应用程序。
25.9.1 使用svcutil.exe生成代理代码
构建客户端代理的第一种方法是通过Visual Studio 2008命令提示符使用svcutil.exe命令行工具。通过使用svcutil.exe,可以生成表示代理代码自身以及客户端配置文件的新VB语言文件。为了执行该操作,只需要指定作为第一个形参的服务端点。/language:标记允许指定希望生成VB代码(而不是默认的C#代码)。/out:标记用于定义包含代理的*.vb文件的名称,而/config:选项指定生成的客户端*.config文件的名称。
假设您的服务当前正在运行,传入svcutil.exe的如下命令集将在工作目录中生成两个新的文件(当然,该命令集在Visual Studio 2008命令提示符中应该作为一行输入):
如果打开myProxy.vb文件,就会看到IEightBall接口的客户端表示,以及作为代理类的名为EightBallClient的新类。该类派生自泛型类System.ServiceModel.ClientBase(Of T),其中T是已注册的服务接口(也就是IEightBall)。
除了许多自定义的构造函数之外,将会实现服务接口中使用<OperationContract()>属性修饰的每个方法,从而委托给父类的Channel特性以调用正确的外部方法。下面是该代理类型的部分代码:
在创建该代理类型的实例时,基类将使用在客户端应用程序配置文件中指定的设置建立端点的连接。非常类似于服务器端的配置文件,生成的客户端App.config文件包含<endpoint>元素和用于与服务通信的basicHttpBinding的相关细节。
此外,您将看到如下的<client>元素,该元素再次从客户的角度建立ABC:
到目前为止,可以在项目中包括这两个文件(以及引用System.ServiceModel.dll程序集),并且使用代理类型与远程WCF服务通信。然而,此处并没有这样做,而是介绍Visual Studio 2008如何帮助进一步自动化客户端代理文件的创建。
现在已经设置好主机,最后一个任务是构建用于与这个WCF服务类型通信的软件部分。虽然可以手动执行大量工作并构建必要的基础结构(可行但需要大量劳动的任务),但是.NET Framework 3.5 SDK提供了一些方法来快速生成客户端代理。首先,创建名为MagicEightBallServiceClient的新控制台应用程序。
25.9.1 使用svcutil.exe生成代理代码
构建客户端代理的第一种方法是通过Visual Studio 2008命令提示符使用svcutil.exe命令行工具。通过使用svcutil.exe,可以生成表示代理代码自身以及客户端配置文件的新VB语言文件。为了执行该操作,只需要指定作为第一个形参的服务端点。/language:标记允许指定希望生成VB代码(而不是默认的C#代码)。/out:标记用于定义包含代理的*.vb文件的名称,而/config:选项指定生成的客户端*.config文件的名称。
假设您的服务当前正在运行,传入svcutil.exe的如下命令集将在工作目录中生成两个新的文件(当然,该命令集在Visual Studio 2008命令提示符中应该作为一行输入):
svcutil http://localhost:8080/MagicEightBallService /language:VB /out:myProxy.vb /config:app.config
如果打开myProxy.vb文件,就会看到IEightBall接口的客户端表示,以及作为代理类的名为EightBallClient的新类。该类派生自泛型类System.ServiceModel.ClientBase(Of T),其中T是已注册的服务接口(也就是IEightBall)。
除了许多自定义的构造函数之外,将会实现服务接口中使用<OperationContract()>属性修饰的每个方法,从而委托给父类的Channel特性以调用正确的外部方法。下面是该代理类型的部分代码:
<System.Diagnostics.DebuggerStepThroughAttribute(), _ System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", _ "3.0.0.0")> _ Partial Public Class EightBallClient Inherits System.ServiceModel.ClientBase(Of IEightBall) Implements IEightBall ... Public Function ObtainAnswerToQuestion(ByVal userQuestion As String) _ As String Implements IEightBall.ObtainAnswerToQuestion Return MyBase.Channel.ObtainAnswerToQuestion(userQuestion) End Function End Class
在创建该代理类型的实例时,基类将使用在客户端应用程序配置文件中指定的设置建立端点的连接。非常类似于服务器端的配置文件,生成的客户端App.config文件包含<endpoint>元素和用于与服务通信的basicHttpBinding的相关细节。
此外,您将看到如下的<client>元素,该元素再次从客户的角度建立ABC:
<client> <endpoint address="http://localhost:8080/MagicEightBallService" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IEightBall" contract="IEightBall" name="BasicHttpBinding_IEightBall" /> </client>
到目前为止,可以在项目中包括这两个文件(以及引用System.ServiceModel.dll程序集),并且使用代理类型与远程WCF服务通信。然而,此处并没有这样做,而是介绍Visual Studio 2008如何帮助进一步自动化客户端代理文件的创建。
相关文章推荐
- WCF 使用svcutil.exe生成代理代码
- 使用svcutil.exe生成代理代码
- [WCF]使用Svcutil.exe生成客户端代理
- 使用svcutil.exe 生成服务的代码
- 使用SvcUtil.exe生成客户端代码和配置、WCF Test Client调试WCF
- 使用pyinstaller工具打包python项目代码生成exe文件
- 使用SVCUtil.exe生成客户端代理类和配置文件
- WCF基础_使用svcutil.exe 工具来生成调用文件
- 通过SvcUtil.exe生成客户端代码和配置
- 使用pyinstaller工具打包python项目代码生成exe文件
- wcf的svcutil.exe工具生成代码的奇怪问题
- wcf生成代理类(SVCUtil.exe的用法)
- 通过SvcUtil.exe 生成 Wcf 客户端代理
- WCF 系列:通过SvcUtil.exe生成客户端代码和配置
- C# 如何使用 svcutil.exe 创建 WCF 客户端代码
- WCF 客户端代理生成 通过SvcUtil.exe
- 使用SVCUtil.exe生成客户端代理类和配置文件
- WCF_通过使用svcutil.exe将http://*.svc?wsdl生成客户端可调用的.cs文件
- 使用SvcUtil生成客户端代理
- 使用java的wsimport.exe工具生成wsdl的客户端代码