终结点是WCF最为核心的对象,因为它承载了所有通信功能。服务通过相应的终结点发布出来,客户端通过与之匹配的终结点对服务进行调用。终结点有地址、绑定和契约ABC三要素构成。

Address 

作为终结点的三要素之一地址(Address),在基于WCF通信中不仅仅用于定位服务,还提供额外的寻址信息,同时还包含着用于进行服务认证的服务身份信息。

其地址的URL规则如下:

[传输协议(Scheme)]://[主机名称|域名|IP地址]:[可选端口]/请求资源

如:http://test.com:81/testservices.svc

传输协议为:http

主机名称:test.com

端口:81

请求资源路径:testservices.svc

WCF下典型传输协议:

HTTP/HTTPS  (提供简单请求回复、无状态、无连接)

Net.Tcp  (有连接的传输协议(通过客户端和服务端握手),有状态,支持双工通信,支持可靠通信)

Net.Pipe 命名管道(Windows平台及UNIX系统下实现跨进程通信IPC的标准实现方式)

Net.Msmq 消息队列 MSMQ

EndpointAddress

终结点在WCF应用编程中通过ServiceEndpoint 类型表示,有三个核心属性:终结点地址,绑定,契约

表示终结点地址的Address属性是一个类型为System.ServiceModel.EndpointAddress的对象,地址的三个典型功能(服务标识、定位。辅助寻址和服务身份标识)分别对应URL、Headers和Identity三个只读属性。

ServerHost

WCF通过serverHost完成对服务的寄宿,而被寄宿的服务通过添加到ServiceHost的终结点暴露出来成为可调用寻址和调用的资源。

服务的调用

客户端通过服务代理(Service Proxy)、借助SvcUtil.exe、添加服务引用等方式,生产核心类是继承自ClientBase<TChannel>。

ClientBase<TChannel>针对服务的调用实际上是通过只读属性Channel表示内部代理实现的,这个内部代理则是通过只读属性ChannelFactory 返回的ChannelFactory<TChannel>对象来创建的。

HTTP.SYS

IIS6.0通过引入HTTP.SYS采用了一种全新的监听机制(之前是InetInfo.exe),严格来说HTTP.SYS不属于IIS的范畴之内,它是一个用于监听网络请求的网络驱动。HTTP.SYS运行于内核模式下,使IIS在性能和稳定性方面较之前的版本都有较大的改进。

IIS和其他WEB应用均可以使用它来作为自己的监听器,从而实现端口共享。

HTTP.SYS的端口共享仅仅正对HTTP协议,对于采用TCP的服务,需要通过其他的寄宿方式来实现。

菜鸟学习WCF笔记-Address的更多相关文章

  1. 菜鸟学习WCF笔记-概念

    背景 WCF这个词语一直不陌生,以前也使用过多次在实际的项目中,但是一直没有时间来做个系统的学习,最近抽点时间,看看 蒋金楠的<WCF全面解析>学习下,顺带做些笔记,如有错误,欢迎各路大神 ...

  2. 菜鸟学习WCF笔记-契约(Contract)

    契约,契约确保了服务的正常调用,客户端以契约的方式进行服务端调用,而服务则需要按照契约规定的方式提供服务. 契约是服务提供的一组操作的描述 功能上讲:每个操作对应着某个具体的功能实现,以及调用这个操作 ...

  3. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  4. 学习WCF笔记之二

    一.学习文章http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 二.步骤 学习WFC,按照大神的文章一步步学习,不过 ...

  5. 开心菜鸟学习系列笔记-----Javascript(1)

    js 一些常见的使用方法        // target : 不管是否出现冒泡,他都是代表最开始引发事件的对象   // this   : 是指当前函数.  //ie 事件对象   : window ...

  6. 开心菜鸟学习系列学习笔记------------nodejs util公共函数

    global  在最外层定义的变量:    全局对象的属性:    隐式定义的变量(未定义直接赋值的变量).  一.process   process 是一个全局变量,即 global 对象的属性 ...

  7. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  8. [转]学习 WCF (6)--学习调用WCF服务的各种方法

    转自:http://www.cnblogs.com/gaoweipeng/archive/2009/07/26/1528263.html 作者这篇博文写得很全面. 根据不同的情况,我们可以用不同的方法 ...

  9. WCF 笔记 (2) - 传输泛型 List 对象

    WCF 笔记 (2) - 传输泛型 List 对象 本帖介绍怎么在 WCF 中,在 Server-side 和 Client-side 之间,传递默认无法传输的 List<T>.List& ...

随机推荐

  1. RPC应用的java实现(转)

    一.RPC介绍 什么是RPC?Remote Procedure Call,远程过程调用.也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者二地之间的连接与通信.比较严格的定义是: ...

  2. 使用Aspose插件将程序中的表格,导出生成excel表格

    http://www.cnblogs.com/lanyue52011/p/3372452.html这个是原文地址 /// <summary> /// 点击按钮,将内存表导出excel表格! ...

  3. Python全栈之路---运算符与基本的数据结构

    运算符 一.算术运算符: 练习: + 加法 两个对象相加 1 + 2得到3:'a' + 'b'得到'ab'. - 减法 一个数减去另一个数或者是负数 5 - 3得到2:-2得到一个负数 * 乘法 两个 ...

  4. MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义

    问题描述:mysql中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了) 例:插入insert into tb('url') values('absc\eeee'); 结果数据库里的内容是 ...

  5. Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略

    一.安装 官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html 官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采 ...

  6. git 使用命令总结

    当远程仓库有README.md的时候我们创建的工程里没有这个文件这时候你提交的仓库和远程的不一致就会导致提交被拒绝 此时我们可以先拉取主干到本地的temp分支  然后和本地的master分支合并 通过 ...

  7. 在ASP.NET中引用自定义提示框

    在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

  8. XHTML跟HTML的区别

    其实二者并没有什么区别,只是THTML的要求更加严格,比如说 1.XHTML 元素必须被正确地嵌套. 错误:<p><span>this is example.</p> ...

  9. 图解——VS发布网站详细步骤

    1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自 ...

  10. 【转】Mysql 存储引擎中InnoDB与Myisam的主要区别

    1, 事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好.   2,select ,update ,insert ,delete 操作   MyISA ...