构建一个WCF程序通常分为三个部分:服务类(Server)、宿主(Host)、客户程序(Client)。有一个很重要的程序集(System.ServeiceModel)要引用,它包含WCF的核心功能。

主要内容

1.地址(addresses)

2.契约(contracts)

3.绑定(bindings)

4.端点(endpoints)

5.寄存

一、地址(addresses)

地址由模式、域、端口和路径组成。模式指所用的传输协议如TCP、命名管线、HTTP、MSMQ等,WCF中针对这些协议的模式为net.tcp 、net.pipe、 http 、net.msmq。

地址通常采用如下格式:
    [基地址]/[可选的URI]
    基地址(Base Address)通常的格式如下:
    [传输协议]://[机器名或域名][:可选端口]

http://localhost:8001
  http://localhost:8001/MyService
    net.tcp://localhost:8002/MyService
    net.pipe://localhost/MyPipe
    net.msmq://localhost/private/MyService
    net.msmq://localhost/MyService

二、契约(contracts)

WCF 的所有服务都会公开为契约(Contract)。契约与平台无关,是描述服务功能的标准方式。WCF 定义了四种类型的契约。

服务契约: 定义一个接口,给接口附加[ServiceContract] ,给接口方法附加[OperationContract]

数据契约: 数据契约定义将在客户端与服务器端传送的各种数据类型。定义数据契约时需要使用[DataContract] 和[DataMember] 。

消息契约: 可以使用消息契约来定制WCF 服务与WCF 客户间相互通讯的SOAP 消息格式。

错误契约: 定义在服务中如何处理异常,以及这些异常又如何传送到客户端。

三、绑定(bindings)

Binding实现的是在客户端和服务端进行通讯的底层细节,包括数据如何传输(比如采用Tcp,Http等),如何解决安全问题(SSL,Message Level Security等),传输的消息的格式(如text/xml,MTOM,binary等)。

Binding包括三个组成部分:NameSpace,Name和BindingElement

HTTP协议:BasicHttpBinding 、 WSHttpBinding 和WSFederationHttpBinding 。

两个HTTP 通道实现双向通讯:WSDualHttpBinding。

TCP协议:NetTcpBinding。

P2P:NetPeerTcpBinding。

命名管道:NamedPipeBinding。

消息队列:NetMsmqBinding 和MsmqIntegrationBinding。

四、端点(endpoints)

  端点的用处是方便客户程序调用服务的操作。端点定义了在什么地方可以访问服务、用什么方式访问以及有哪些操作可用,这就是端点的三要素(地址 绑定 契约)。端点可以在程序中设置也可以用配置文件的形式设置。

五、寄存

服务做好了后需要能够运行,因为客户在调用服务的时候服务必须是处在运行状态的,这就需要将服务寄存在一个地方,在一些Demo中会使用控制台程序来做宿主寄存服务,除此之外还可以是WinForm程序、WPF应用、Windows 服务、IIS、WAS等。

参考资料有http://www.cnblogs.com/wujy/archive/2013/04/07/3006196.html

http://www.cnblogs.com/jillzhang/category/121346.html

WCF入门(一)——基本知识的更多相关文章

  1. 学习WCF入门的第一个实例

    一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...

  2. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

  3. WCF入门教程(四)通过Host代码方式来承载服务

    WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...

  4. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  5. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  6. WCF入门教程(一)简介

    WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foundation), 是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NE ...

  7. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  8. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  9. WCF 入门(25,26,27,28)

    前言 项目赶时间,工期紧,熬过这段时间应该就好了吧.希望如此. 今天把自己那部分写的差不多了,回来和小伙伴一起又看了一遍<夏洛特烦恼>,还挺好看的,明天继续加班,do it. 第25-28 ...

  10. WCF入门(22)

    前言 本还想写一集WCF入门教程的,心情实在不好,明天又还有面试,改天再写吧. 说一下今天遇到的入职坑.面试能坑,上班能坑,完全没想到入职也能坑.切身经历. 今年10月份想换工作,更新了一下简历,接到 ...

随机推荐

  1. 2014年度辛星css教程夏季版第四节

    接下来的这一节我计划讲解的是超链接和列表的样式,然后我们做出一个导航栏出来,其实导航栏是非常常见的,但是我们这里做得这个有点并不那么完善,等我们学完了css之后再完善它. ************** ...

  2. javaWeb中的/路径问题

    在写javaweb的时候,在写路径的时候,/有时候表示站点根目录,有时候表示当前web应用根目录,究竟如何区分呢? 首先,我们建议开发的时候,跳转之类的都是用绝对路径(注意:不是物理路径),而不是使用 ...

  3. unity3d游戏开发(一)——圈圈叉叉

    参考:http://game.ceeger.com/forum/read.php?tid=1719 ———————————————————开始————————————— 好吧,吹了那么多我们开始吧,先 ...

  4. C#基础|面向对象之继承

      面向对象的世界 在现实的世界里,发现事物可以进行分类,并且各个分类中又有这关系. 在面向对象的世界里,人们用类来模拟现实世界中的各种关系. 从大的范围来说,人属于人类,如果按照不同的身份将人类进行 ...

  5. pptpvpn记录用户登录和流量信息

    这个问题困扰了我很久,终于在pppd的man文档里,发现了踪迹.在man中的SCRIPTS下有一系列的参数,其中PEERNAME就是登陆的用户名,并且在/etc/ppp/ip-up和/etc/ppp/ ...

  6. 批处理:遍历输出指定后缀格式的文件名.bat

    批处理:遍历输出指定后缀格式的文件名.bat @echo off type nul >C:\result.txt for /r "d:\我的文档\桌面\交接\webservice\We ...

  7. PHP漏洞全解(八)-HTTP响应拆分

    本文主要介绍针对PHP网站HTTP响应拆分,站在攻击者的角度,为你演示HTTP响应拆分. HTTP请求的格式 1)请求信息:例如“Get /index.php HTTP/1.1”,请求index.ph ...

  8. Unity3D中的第三人称镜头的脚本控制

    原地址:http://blog.csdn.net/mobanchengshuang/article/details/27591271 好久没有敲Blog了,谢谢大家的留言.关注.私信等支持,但是我好像 ...

  9. eclipse, Log4j配置(真心的详细~)

    转自: http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html a). 新建Java Project>>新建pa ...

  10. 汇编中,BP,SP有何区别?分别怎么使用?

    bp寄存器,跟其它什么BX,AX一样的用法, SP是用在栈上的,配合SS使用,像SS:SP SS上放段地址,SP上放偏移地址. 寻址时,像[bp],相当于SS:[bp] 就是说它默认使用SS 像BX默 ...