挖掘创建使用WCF代理技巧

开发 后端
文章就创建和使用WCF代理SvcUtil生成的代理类派生自类ClientBase<T>的定义规范,有详细的代码演示,希望大家看了会有帮助。

WCF代理还是比较常用的,于是我研究了一下WCF代理,在这里拿出来和大家分享一下,希望对大家有用。SvcUtil生成的代理类派生自类ClientBase<T>,定义为:

public class ClientBase<T> : IDisposable  
{  
protected ClientBase(string endpointConfigurationName);  
protected ClientBase(Binding binding,EndpointAddress remoteAddress);  
public void Dispose();  
protected T InnerProxy{get;}  
 //其它成员  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

#T#这个InnerProxy属性是客户端需要消费的合同类型,并且SvcUtil生成的ClientBase<T>的子类简单地把它WCF代理到方法调用。客户端需要实例化一个代理对象并且提供给其构造器端点信息-或者是来自配置文件的端点节名或者是在不使用一个配置文件时的端点地址和绑定对象。然后,该客户端可以使用代理方法来调用该服务,并且客户端完成后,它需要关闭该代理实例:

MyContractProxy proxy = new 
MyContractProxy("MyEndpoint");  
proxy.MyMethod();  
proxy.Close(); 
  • 1.
  • 2.
  • 3.
  • 4.

关闭WCF代理将终止与服务的会话并且关闭连接。作为选择,你可以使用代理的Dispose()方法来关闭它。Dispose()方法的优点在于,你可以使用using语句来调用它,即使在面临异常处理时:

using(MyContractProxy proxy = new MyContractProxy("MyEndpoint"))  
{  
proxy.MyMethod();  

  • 1.
  • 2.
  • 3.
  • 4.

在客户端配置文件中的每个合同类型的一个端点可以被指派为一个默认端点。默认端点是一个没有名字标志或只有一个空名("")的端点节:

<system.serviceModel> 
<client> 
<endpoint 
...  
contract="IMyContract" 
/> 
<endpoint name="OtherEndpoint" 
...  
contract="IMyContract" 
/> 
</client> 
</system.serviceModel> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

一个默认的端点仅仅是一种理想情况;当创建一个针对默认端点的代理时,你可以使用WCF代理的默认构造器来让它使用默认端点:

MyContractProxy proxy = new MyContractProxy();  
proxy.MyMethod();  
proxy.Close();  
  • 1.
  • 2.
  • 3.
责任编辑:田树 来源: 博客
相关推荐

2009-11-05 13:00:25

WCF客户端

2009-11-09 12:30:23

WCF生成代理

2009-11-05 09:59:59

WCF绑定

2009-12-22 19:00:08

WCF回调

2009-11-09 10:35:10

WCF REST服务

2010-02-24 13:48:44

MSMQ使用WCF

2009-11-06 10:11:34

WCF和Web Ser

2010-02-24 12:49:39

WCF枚举

2009-12-07 17:13:23

WCF技术

2009-11-12 12:39:16

ADO.NET Sta

2010-02-22 11:25:50

WCF DateSet

2010-02-23 09:44:12

WCF dataCon

2023-02-27 08:09:42

SpringAOP代理

2009-11-05 15:18:19

WCF扩展

2010-03-01 13:06:49

WCF继承

2010-02-22 17:58:06

WCF异步上传

2009-12-23 11:24:42

WCF附加属性

2015-09-22 11:09:47

Java 8动态代理

2009-11-09 13:23:35

WCF协定

2009-12-07 16:33:55

WCF 缓存
点赞
收藏

51CTO技术栈公众号