WCF能干什么?

在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域中的对象能进行直接的访问和控制,但超出这个范围,便不能进行直接的访问和控制了,所以说进程或这应用程序域有一定的隔离作用,如果是分布在不同的网路,不同操作系统上的不同进程,他们进行通信的难度就更大,而分布式应用程序要求的就是将原本隔离的作用域通过一定的契约联系起来。从而达成多个系统的沟通协作。当然能实现这种目的的方式远不止WCF一个,比如在WIN32时代,经常使用映射内存文件来实现进程之间的相互操作问题,还有在window程序中,用window消息WM也能实现不同进程之间的通讯问题,但这些都有局限性,因为他们不能很好的解决跨平台,跨网络问题,而WCF可以。

WCF开发模型和以往其他分布式技术有何区别?

总结一下,主要包含以下几种特性:

①基于声明性编程模型。 (xml web service的特点)

②充分利用配置来实现框架的灵活。(.net remoting 的特点)

③使用配置的同时,仍保留代码变成的模型,使得框架的模型更加丰富,便于控制。 ()

④默认的CIA支持,极大地简化了安全控制。 Confidentiality 机密性,Integrity 完整性 Authentication可验证性。

什么是契约?

任何一个分布式应用程序,它之所以能够互相传递消息,都是事先制定好数据交换规则的,这个规则正是交换数据的双方(比如服务器端和客户端)能彼此理解对方的依据,WCF作为分布式开发技术的一种,同样具有这样一种特性。在WCF中制定的规则就被称之为契约(Contract),它是WCF的消息标准,是任何一个WCF程序不可或缺的一部分。以下介绍四中契约:

1,用于定义服务操作的服务契约:Service Contract

这种级别的契约又包括两种:ServiceContract和OperationContract 前者用于类或结构上,用于指示WCF此类或者结构能够被远程调用,而OperationContract用于类中的方法(Method)上,用于指示WCF该方法可被远程调用。

2.用于定义数据结构的数据契约:Data Contract

数据契约也分两种:DataContract和DataMember。DataContract用于类或者结构上,指示WCF此类或者结构能够被序列化并传输,而DataMember只能用在类或者结构的属性或者字段上,指示WCF该属性或字段能够被序列化并传输

3.用于自定义错误异常的异常契约:Fault Contract

FaultContract用于自定义错误异常的处理方式,默认情况下,当服务端抛出异常的时候,客户端能接受到异常信息的描述,但这些描述往往格式统一,有时比较难以从中获取有用的信息,此时,我们可以自定义异常消息的格式,将我们关心的消息放到错误消息中传递给客户端,此时需要在方法上添加自定义一个错误消息的类,然后在要处理异常的函数加上FaultContract,并将异常信息指示返回为自定义格式。

4.用于控制消息格式的消息契约:Message Contract

简单的说,它能自定义消息格式,包括消息头,消息体,还能指示是否对消息内容进行加密和签名。

契约独立于平台

什么是地址?

基地址通常采用以下格式:[传输协议]://[机器名或域名][:可选端口]

一个要和服务端通讯的客户端要做的第一件事情,就是搞清楚数据要发给谁?目的地在哪?而Address正是通过一个Uri来唯一标示一个WCF的终节点(EndPoint)的,它标示了消息的发送的目的地。在WCF数通讯中,它解决了服务在哪里的问题。

Address在WCF中的用System.ServiceModel.EndpointAddress对象来表示的,它的结构如下:

此外,Address还包括IsAnonymous属性,用于指示终节点是否能匿名访问。

除了能在配置文件中设置地址外,如下可通过编程方式设置地址

 

特殊用途:

在WCF中,能够将服务同时发布到几个地址上面,只要这些地址采用的都是一种访问方式。这一份程序,多个发布地址的做法,在以往的技术中是没有的。 

什么是绑定?

绑定就是解决了EndPoint提供什么功能的问题。

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

binding的三个组成:NameSpace,Name,BindingElement 前两者服务元数据meta data的唯一标志,换句话说,二者就像Binding的姓名一样,而BindingElement则描述Binding的特征,我们说Binding能解决通讯方式的问题,

关键是靠BindingElement来进行描述。

Binding Element中最核心的组成部分,它分为以下三种类型

1.Encoding Binding Element:它用于描述传输数据的编码方式,比如用text/xml进行编码,用binary编码,用MTOM进行编码都是在这个上面定义,每个BindingElement必须包含一个Encoding Binding Element

2.Transport Binding Element:它用于描述数据的传输方式,例如使用tcp进行传输,还是用http进行传输,还是用msmq,这些都是由Transport Binding Element来定义,每一个BindIng Element必须包含一个Transport Binding Element

3.Protocol Binding Element :指定诸如安全性,可靠性,上下文流设置(context flow setting)

一个binding包含着丰富的信息,每种信息都描述了服务端和客户端交互过程中的一方面,如下表所示,Bing描述了这些层面的信息:

选择正确的Binding

binding是可以自定义实现的,可WCF框架已经为我们实现了足够多的 Binding,供我们选择,如下表所示:

除此之外,面向服务编程里的一张图也能说明各自的特征:

WCF架构

下图为WCF架构图

WCF初识的更多相关文章

  1. WCF学习笔记之WCF初识

    这篇博客将介绍WCF的最基础内容,让我们对WCF有一个基本的认识.后续的博客中将会介绍WCF其他方面内容.本篇博客将通过一个简单的例子,介绍如何创建WCF服务,并承载这个服务,让客户端来访问它.下面请 ...

  2. WCF 初识(一)

    WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/H ...

  3. C# WCF初识

    原文:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 方式1: 需引用 System.ServiceModel namespa ...

  4. WCF:初识

    结构: using System.ServiceModel; namespace MyServices { [ServiceContract] public interface IHomeServic ...

  5. WCF编程系列(一)初识WCF

    WCF编程系列(一)初识WCF   Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念:  地址:定义服务的 ...

  6. 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

    前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wc ...

  7. WCF系列教程之初识WCF

    本随笔参考自WCF编程系列(一)初识WCF,纯属读书笔记,加深记忆. 1.简介:Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程 ...

  8. 初识WCF

    以前,总是说自己的基础知识不牢靠,就是因为自己总是不总结.昨天,学费交了,顿时感觉不一样了,心里有劲也有力了,知道了以前的自己到底为什么会那样了,因为没有压力. --题记 我参加过浩哥的招标项目,参加 ...

  9. WCF(一):初识WCF

    目录: 一.什么是WCF 二.WCF能做什么 三.WCF的模型 四.WCF的基本概念 五.WCF的快速创建 1.WCF是什么 A.WindowsCommunication Foundation(WCF ...

随机推荐

  1. oralce CASE WHEN 用法

    如何将时间日期分隔成“上半月”“下半月” select ( THEN '上半月' THEN '下半月' ELSE 'NULL' END) AS mon from BFBHDD8.SKTXSJL

  2. soapui中文操作手册(二)----通过您的WSDL请求创建一个测试

      1.通过您的WSDL请求创建一个测试 点击加号旁边的导航拓展项目树的Web服务,并选择请求: 在SoapUI Pro中,所述请求编辑出现在右边.SoapUI Pro有一个编辑器,它简化了XML的层 ...

  3. 编程之路 - 写给打算进入IT行业的新人们

    IT=挨踢,这是IT人的自嘲,进入IT行业是有四五年了,也算得上是一个“老人”了吧,见了不少新人,面试了不少新人,也带了一些新人,多多少少还是有点发言权的. 关于书本 新人们常常会说我看了多少多少的书 ...

  4. IO中同步、异步与阻塞、非阻塞的区别

    一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ...

  5. ACM A problem is easy

    A problem is easy 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 When Teddy was a child , he was always th ...

  6. IP地址分类整理

    什么是IP地址? IP地址就是计算机在网络中地址. IP地址有多少个? IP地址范围是:0.0.0.0~225.225.225.255,这只是人为了方便记录才转为十进制的,ip地址实际是一个32位地址 ...

  7. Excel中COUNTIFS函数统计词频个数出现次数

    Excel中COUNTIFS函数统计词频个数出现次数   在Excel中经常需要实现如下需求:在某一列单元格中有不同的词语,有些词语相同,有的不同(如图1所示).需要统计Excel表格中每个词语出现的 ...

  8. C语言(3)

    C语言(3)----数据输入 输入时的关键字为scanf.如我们要从键盘上输入一个数,放在变量a里面,则可以写成scanf("%d",&a); "&&qu ...

  9. Bootstrap_Datatable Ajax请求两次问题的解决

    最近一个项目中使用JQuery Datatable,用起来比较方便,但在测试过程中,发现当条件改变时,有时查询结果中的数据不正确. 使用FireBug跟踪时,发现在使用Ajax请求时,点击一次搜索按钮 ...

  10. XML 参考:XML基础 XML 简介

    XML 参考:XML基础 -- XML简介和用途 转:http://www.cnblogs.com/Dlonghow/archive/2009/01/22/1379799.html XML 参考:XM ...