编程方式配置客户端

2008-06-25 17:52:28.0     浏览:672     来源:e800.net频道
关键词:  编程     客户端  

编程方式配置客户端

如果不借助于配置文件,客户端也可以通过编程方式创建匹配服务终结点的地址与绑定对象,并将它们传递给代理类的构造函数。既然代理的泛型类型参数就是契约,因此不必为构造函数提供契约。为了表示地址,客户端需要实例化EndpointAddress类,定义如下:

public class EndpointAddress
{
public EndpointAddress(string uri);
//更多成员
}

例1-20演示了编程方式配置客户端的技术,所示代码的功能与例1-16等价,它们使用的目标服务则为例1-9的定义。

例1-20:编程方式配置客户端

Binding wsBinding = new WSHttpBinding();
EndpointAddress endpointAddress = new
EndpointAddress("http://localhost:8000/MyService/");
MyContractClient proxy = new MyContractClient(wsBinding,endpointAddress);
proxy.MyMethod();
proxy.Close();

与在配置文件中使用绑定节的方法相似,客户端可以通过编程方式配置绑定属性:

WSHttpBinding wsBinding = new WSHttpBinding();
wsBinding.SendTimeout = TimeSpan.FromMinutes(5);
wsBinding.TransactionFlow = true;
EndpointAddress endpointAddress = new
EndpointAddress("http://localhost:8000/MyService/");
MyContractClient proxy = new MyContractClient(wsBinding,endpointAddress);
proxy.MyMethod();
proxy.Close();

注意,使用Binding类的具体子类,是为了访问与绑定相关的属性,例如事务流。

编程方式配置与管理方式配置

目前介绍的配置客户端与服务的两种技术各有所长,相辅相成。管理配置方式允许开发者在部署服务之后,修改服务与客户端的主要特性,而不需要重新编译或重新部署。主要缺陷则是不具备类型安全,只有在运行时才能发现配置的错误。

如果配置的决策完全是动态的,那么编程配置方式就体现了它的价值,它可以在运行时基于当前的输入或条件对服务的配置进行处理。如果判断条件是静态的,而且是恒定不变的,就可以采取硬编码方式。例如,如果我们只关注于进程内托管的调用,就可以采取硬编码方式,使用NetNamePipeBinding以及它的配置。不过,大体而言,大多数客户端和服务都会使用配置文件。