WCF-Address

来源:互联网 发布:汽车销售app软件 编辑:程序博客网 时间:2024/06/05 12:53
         WCF,就是在windows平台下解决通信问题的基础框架,而终结点是WCF服务最核心的对象,因为终结点承载了所有通信功能.服务是通过相应的终结点发布出来,客户端通过与之匹配的终结点对服务进行调用.终结点由代表地址,绑定和契约的ABC三要素构成.而作为三要素之一的地址(Address),在基于WCF的通信中不仅仅用于定位服务,还提供了额外的寻址信息.除此之外,终结点地址还和安全有关系.因为他包含着用于进行服务认证的服务身份信息.
     Web服务作为一种网络资源,通过URI进行唯一标识,而服务通过终结点的形式发布出来,我们所说的一个服务在大部分场景中实际上指的是服务的某个终结点.终结点地址的核心就是一个URI,作为终结点的唯一标识.除了标志功能之外,终结点地址还具有路由或者寻址功能.地址对应的URI不仅代表了服务所在的位置,也代表了消息路由的目标地址.
      对于这个URI:http://localhost:8089/UserInfoServiceWCF.svc?wsdl
            传输协议(scheme):http
            主机名称:localhost
            端口:8089
            资源路径:UserInfoServiceWCF.svc
下边是几种常见的URI传输协议:


            终结点在WCF应用编程接口中通过System.ServiceModel.Description.ServiceEndPoint类型标识,ServiceEndpoint有三个和兴属性,分别代表了地址,绑定,和契约三要素;如下:
Public class ServiceEndpoint
{
            public EndpointAddress  Address{get;set;}
        public Binding Binding{get;set;}
        public ContractDescription  Contract{get;set;}
}
       表示终结点地址的Address属性是一个类型为System.ServiceModel.EndpointAddress的对象.地址的三个代女性功能(服务标识/定位,辅助寻址和服务身份标识)分别对应Uri,Headers和Identity三个只读属性如下:
public class EndpointAddress
{
            public Uri      Uri{get;}
            public AddressHeaderCollection      Headers{get;}
            public EndpointIdentity      Identity{get;}
}
 
            WCF通过ServiceHost完成对服务的寄宿,而被寄宿的服务通过添加到ServiceHost的终结点暴露出来成为可被寻址和调用的资源.而客户端通过服务代理实现对服务的调用.调用方式有两种.其一,通过添加服务引用或者借助于SvcUtil.exe这样的元数据解析同居生成的服务代理类,生成的类型继承自ClientBase<TChannel>;其二,直接通过ChannelFactory<TChannel>创建服务代理; 
        其实无论是直接借助于SvcUtil.exe,还是添加服务引用的方式生成的核心类都是继承自ClientBase<TChannel>的子类.而泛型参数TChannel代表服务契约的类型.    




































0 0
原创粉丝点击