WCF的前世今生

在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/HTTP/Pipeline communication)以及基础的Winsock等通信支持。

由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性(例如.NET Remoting可以开发SOAP, HTTP通信),对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在用户有许多不便。

同时,服务导向架构(Service-Oriented Architecture)也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就WCF( Windows Communication Foundation)。

WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,由.NET Framework 3.0开始引入,是.NET Framework 3.5的重要组成部分。根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的企业级互联应用解决方案,且能与已有系统兼容协作。

WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;

以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。

WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。

WCF的优势

  • l  统一性

  WCF涵盖了之前微软推出的所有用于分布式开发的技术,包括Remoting、Web Services、WSE、MSMQ等,并以一种统一的编程模式来实现。

  • l  互操作性

  WCF最基本的通信机制是SOAP(Simple Object Access Protocol 简易对象访问协议),这就保证了系统之间的互操作性,也能够实现.NET客户端与.NET服务端的通信,提供了分布式事务的支持。

  • l  安全性和可靠性

  WCF在安全性上,它完全遵循了WS-*的标准,在SOAP 的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基于SOAP格式交换的信息,则支持两阶段的事务提交(two-phase commit transactions)。

  • l  兼容性

WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。

WCF与其他分布式技术对比表

特性

Web Service

.NET Remoting

Enterprise Services

WSE

MSMQ

WCF

具有互操作性的Web服务(跨平台)

支持

支持

.NET到.NET的通信

支持

支持

分布式事务

支持

支持

支持WS标准(安全可靠性)

支持

支持

消息队列

支持

支持

WCF的体系结构

WCF主要构成

 

Endpoint

Endpoint是WCF实现通信的核心要素。一个WCF Service由一个Endpoint集合组成,每个Endpoint就是用于通信的入口,客户端和服务端通过Endpoint交换信息。
Endpoint由三部分组成:Address,Binding,Contract。便于记忆,我们往往将这三部分称为是WCF的ABC。
Address

Address通过一个URI唯一地标识一个Endpoint,并告诉潜在的WCF service的调用者如何找到这个Endpoint。

Binding

Binding实现在Client和Service通信的所有底层细节。比如Client与Service之间传递的Message是如何编码的—— text/XML, binary,MTOM;这种Message的传递是采用的哪种Transport——TCP, Http, Named Pipe, MSMQ; 以及采用怎样的机制解决Secure Messaging的问题——SSL,Message Level Security。

Contract

Contract的主要的作用是定义通信协议,具体Service提供了哪些方法。

Behavior

Behavior: Behavior的主要作用是定制Endpoint在运行时的一些必要的Behavior。比如Service回调Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。

WCF构建流程

(1)、定义服务协定。 服务协定指定服务的签名、服务交换的数据和其他协定要求的数据
(2)、实现协定。 若要实现服务协定,请创建实现协定的类并指定运行时应具有的自定义行为。
(3)、通过指定终结点和其他行为信息来配置服务
(4)、承载服务
(5)、生成客户端应用程序。

引用链接:

1,WCF系列学习5天速成 http://www.cnblogs.com/huangxincheng/category/340145.html
2,WCF入门学习【Sheldon_Lou】http://www.cnblogs.com/sheldon-lou/category/648478.html
3,无废话WCF系列教程 http://www.cnblogs.com/iamlilinfeng/category/415833.html
4,WCF编程 http://www.cnblogs.com/zxj159/category/604460.html
5,WCF入门【停留的风】http://www.cnblogs.com/yank/category/568085.html
6,WCF初探【wangweimutou】http://www.cnblogs.com/wangweimutou/tag/WCF/
7,WCF【指尖流淌】http://www.cnblogs.com/zhijianliutang/category/277163.html
8,WCF【xfrog】---重点 http://www.cnblogs.com/xfrog/tag/WCF/

WCF 初识(一)的更多相关文章

  1. WCF学习笔记之WCF初识

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

  2. WCF初识

    WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域 ...

  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. Spring MVC 接收Json格式参数

    今天做了一个关于表格排序的功能,可以通过右边的箭头做排序操作,每次操作需要通过Ajax将每条记录的Id数组作为参数去发送请求, 后台Spring MVC接到参数后作更改序号操作. 前端页面发送请求的代 ...

  2. jq实现竞拍倒计时

    1jq的效果代码 //全局变量用于存储当前时间 var nows; function rightZeroStr(v) { ) { " + v; } return v + "&quo ...

  3. Computer Science Theory for the Information Age-1: 高维空间中的球体

    高维空间中的球体 注:此系列随笔是我在阅读图灵奖获得者John Hopcroft的最新书籍<Computer Science Theory for the Information Age> ...

  4. java_线程安全-service

    package com.demo.test; import java.util.Collections; import java.util.HashMap; import java.util.Map; ...

  5. oracle索引、 管理权限和角色

    索引 1 单列索引create index 索引名 on 表名(列名): 2复合索引在同一张表上可以有多个索引,但是要求列的组合必须不同.create index 索引名 on 表名(列名1, 列名2 ...

  6. C#中登录验证FormsAuthentication

    1:前台编写一个登录界面,这里为了简化,只有用户名和密码 代码如下: <form method="post" action="/User/CheckLogin&qu ...

  7. 管理Activity

     开源中国摘取的代码,这个可以管理activity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  8. Android 自学之滚动视图ScrollView

    滚动视图ScrollView由FarmeLayout派生而出,他就是一个用于为普通组件添加垂直滚动条的组件:ScrollView里面最多包含一个组件,而ScrollView的作用就是为该组件添加一个垂 ...

  9. Java反转单链表(code)

    主要是面试中可能会经常碰上该类似操作,尤其是稍大点公司,面试官可能并不在乎你能不能搞定该题,但是这类型题目最是能体现程序员的思维状态 ---一个迷糊头脑的程序员 怎能立志改变这个世界 /** * @a ...

  10. 【转】十二个移动App云测试服务盘点

    随着移动设备.操作系统版本的碎片化,测试工作对于移动开发团队而言越来越成为一个沉重的包袱,不过这也带来了商机,现在市场上有不少服务和平台提供云测试工具,可以对移动App进行自动化测试,提供测试报告和优 ...