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
- [WCF] Address
- [WCF] Address
- WCF-Address
- WCF之Address详解
- WCF 中的Address
- WCF的address
- WCF学习笔记——Address
- WCF 学习笔记心德体会(三)------Address
- (1-2)WCF Address正确含义解析
- 初探WCF 如何在配置文件中指定Address?
- address
- Address
- address
- address
- address
- address
- Address
- address
- 小马哥-----高仿米3系列刷机拆机主板与开机界面展示, 版本很多。注意区分
- c progrmming language gets函数
- 第14周项目2-带姓名的成绩单-(3)
- Sqlite 数据库恢复技术,源代码出售
- 机器学习实战之k-近邻算法(5)--- 完整版约会网站数据分类
- WCF-Address
- POJ3046 Ant Counting 【母函数】
- java Reflection 反射
- SDUT 2894 最短路(SPFA or Bleman)
- 风中奇缘
- Ubuntu-安装配置Mysql
- linux操作的常用指令
- 四舍五入精确算法 遇到5(有时)不进位的问题
- cocos2d-js 编译android apk 用cocos Code IDE 还是 cmd命令