WCF中客户端生成代理的两种方式
来源:互联网 发布:网络销售股票是真的吗 编辑:程序博客网 时间:2024/04/28 08:43
WCF程序中客户端要生成代理才能调用服务,在客户端生成代理有多种方式,如用ChannelFactory和添加服务引用等。下面就分别来介绍下这两种生成代理的方式。
使用ChannelFactory
使用ChannelFactory创建代理需要的条件
1 服务端点的地址,即在宿主中用程序设置的或是配置文件中设置的。
2 服务端点的绑定协议。
3 服务契约的元数据,可以将服务契约复制一份到客户端或是在客户端添加对服务的引用。
下面的代码示例为通过ChannelFactory手动创建代理
EndpointAddress ea = new EndpointAddress("http://localhost:10000/Service/HelloWorldService");IHelloWorldService proxy = ChannelFactory<IHelloWorldService>.CreateChannel(new BasicHttpBinding(),ea);
EndpointAddress:端点地址,该类的实例作为CreateChannel方法的一个参数,实例化EndpointAddress时给的地址要和宿主中设置的地址一致。
IHelloWorldService:这个是服务契约在客户端的一个副本,不包含具体的实现。
ChannelFactory<T>:一个服务模型类型,可以产生客户代理和基础信道栈,使用该类的CreateChannel可以生成代理,有两个参数,绑定类型和端点地址,绑定类型和端点地址要和宿主中设置的一致。
添加服务引用的方式
1 在宿主的配置文件中配置元数据呢交换节点,并在行为中设置serviceMetadata,如下图:
2 在客户端添加服务引用时必须启动宿主。
3 配置文件设置好后,启动宿主,然后再客户项目上右击选择“Add Service Reference ”,在地址框中输入正确地址,如下图:
Http://localhost:10000/mex:是配置文件中的基地址http://localhost:10000加上端点地址mex组合而成。
oec2003:为服务契约中设置的属性Name的值,如下图:
HelloWorld:为自己定义的引用到客户端的名称。
4 添加服务引用后客户端的项目列表显示如下:
5 在客户端添加如下代码:
class Program{ static void Main(string[] args) { HelloWorld.oec2003Client proxy = new Client.HelloWorld.oec2003Client(); Console.WriteLine(proxy.SayHello()); Console.ReadLine(); }}
6 先运行宿主,然后运行客户程序就可以看到调用服务返回的结果。
出处: http://oec2003.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则 保留追究法律责任的权利。
- WCF中客户端生成代理的两种方式
- webservice生成客户端的两种简单方式
- 根据wsdl生成客户端Bean的两种方式
- webservice生成客户端的两种简单方式
- Wcf 客户端代理生成 通过SvcUtil.exe
- webservice生成客户端两种方式
- 引用WCF服务的两种方式.
- WCF REST的两种方式
- WCF客户端调用的几种方式
- 5.9 Spring中AOP的两种代理方式
- java中设置代理的两种方式
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- [构建自己的持久层]三、Type数据类型描述
- MySQL导出问题
- poj 1011 木棒
- 厦大上学期出成绩了。顺利过关了,不过分数都不高。。。。
- 【Linux操作下的进程管理利器 Supervise】
- WCF中客户端生成代理的两种方式
- Oracle 发送邮件 存储过程 代码
- IP TCP UDP header structure
- Exception starting filter struts2
- C++中的内存!(转载)堆 栈 全局/static变量区 常量区
- XML文件的解析--libxml库函数解释
- ob_get_clean()
- 安全性部分知识点
- 如何成为一个优秀的程序员