终结点是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. iOS 设置button文字过长而显示省略号的解决办法

    UIButton * button =[UIButton buttonWithType:UIButtonTypeCustom];button.titleLabel.adjustsFontSizeToF ...

  2. mormot 数据集转换为JSON字串

    mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...

  3. aspectj pointcut 找不到类型pointcut cannot be resolved to a type

    引入了aspectJ后,文件提示找不到pointcut类型.修改如下: .project文件添加内容,红色字体为添加的引用 <?xml version="1.0" encod ...

  4. JS-定时器管理实例

    /** * Created by 12461 on 2016/11/6. */window.onload = function () { var oBtn1 = document.getElement ...

  5. MYSQL 查询出最大/最小值所在的记录

    基本上都知道用MAX()/MIN()来求出所需的最大/最小值,但是只能查出那个最值的字段,而想查出整条记录或是对应的其他值却不行(SELECT MAX(grade), name FROM test;- ...

  6. React与ES6(三)ES6类和方法绑定

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  7. SP_APPROVALSET_OVERTIME 插入單據

    CREATE OR REPLACE PROCEDURE SP_APPROVALSET_OVERTIME(VAPPLY_NO varchar2,VAPPLYKIND_NO varchar2,VFAC_N ...

  8. 【转】Fiddler的基本介绍

    转:http://kb.cnblogs.com/page/130367/#basic Fiddler的官方网站:  www.fiddler2.com Fiddler的官方帮助:http://docs. ...

  9. AngularJS-Controller的使用-读书笔记

    最近在读<Angular JS权威教程>读到第9页,按着示例做,居然报错,说MyController undefined,初学者不懂啊,找了个官方的文档,按着改了一下,貌似成功了,有需要的 ...

  10. extjs中form.reset(true)出现的bug修复

    在之前的开发extjs中,用ext.form.panel开发了一个表单,当使用了reset(true)之后,再次使用getRecord()却还是可以得到值,该值为上一次的旧值,查看了api文档,再结合 ...