背景

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

  本章意在对Windows通信编程涉及到的相关词汇进行一个大概的理解不深究。  

  参考:http://baike.baidu.com/view/1140438.htm?fr=aladdin(不得不说百度百科,维基百科等资料很丰富),《WCF全面解析》。

WCF介绍

  Windows Communication Foundation(WCF) 直译:Windows通信基础

  它是.NET框架的一部分,由 .NET Framework3.0 作为一个组件发布,为顺应SOA发展潮流,整合原有的Windows通讯的.NET Remoting,WebService,Socket,MSMQ 等技术的机制(WCF是对现有分布式通信技术的整合),并融合有HTTP和FTP相关技术。

SOA面向服务架构

  面向服务(Service Orientation,SO)代表的是一种设计理念,和面向对象,面向组件一样,体现的是一种思想,与技术无关。

  面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

  WSDL,UDDI和SOAP是SOA基础的基础部件。

  WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。

  SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。

    网络服务描述语言是一个用来描述Web服务和说明如何与Web服务通信的XML(标准通用标记语言的子集)语言。为用户提供详细的接口说明书。
    WSDL是Web Service的描述语言,是一种接口定义语言,用于描述Web Service的接口信息等。
    WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。 

    Universal Description Discovery and Integration即统一描述、发现和集成协议。企业可以使用它对 Web services 进行注册和搜索。

    简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

    SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。

    它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。

在过去若干年终,微软先后推出了一系列分布式通信技术,比较典型的包括COM/DCOM,Enterprise Service、.NET Remoting、XML Web 服务、MSMQ等。

COM和DCOM

  COM 是微软自1993年便提出的组件式软件平台,用来做进程间通信(Inter-process communication, IPC)以及当作组件式软件开发的平台。

  DCOM 支持不同的两台机器上的组件间的通信,而且不论它们是运行在局域网、广域网、还是Internet上。是为了实现分布式远程调用而对COM进行的扩展。

.NET Remoting

  .NET Remoting 是微软推出的第一个基于.NET的分布式通信技术,它在一定的程度上借鉴了DCOM的设计,并加强了DCOM很多方面,使其可以成为一个高性能和可扩展的分布式通信框架。但是它不能提供跨平台支持,仅仅提供服务端和客户端均处于.NET平台下的通信。

  笔者最近有研究一下,如有问题欢迎各路大神指正:http://i.cnblogs.com/EditPosts.aspx?catid=615438

Web服务

为了实现跨平台支持,微软推出了ASP.NET Web Service,Web Service之所以能够提供跨平台的互操作性,是因为它建立在一系列开放的标准之上,这些标准包包括XML,XSD,SOAP,WSDL等。

XML

可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。
它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

XSD

XML Schema Definition,它的作用是定义一份XML文档的合法组件群,就像文档类型定义(外语缩写:DTD)的作用一样。可扩展标记语言架构是以可扩展标记语言(标准通用标记语言的子集)为基础的,它用于可替代文档类型定义(外语缩写:DTD);一份XML schema文件描述了可扩展标记语言文档的结构,比 DTD 更强大。

WSDL

网络服务描述语言是一个用来描述Web服务和说明如何与Web服务通信的XML(标准通用标记语言的子集)语言。为用户提供详细的接口说明书。

WSDL是Web Service的描述语言,是一种接口定义语言,用于描述Web Service的接口信息等。

WSE

为了支持WS-*,微软在ASP.NET Web 服务的基础上推出了WSE(Web Services Enhancements) ,推出WSE是为了弥补ASP.NET Web Service 的不足,它在很多方面实现了对现有ASP.NET Web Service服务功能的加强。

WS-*

为扩展WEB服务能力,一些新的标准已经或正在被开发。这些标准通常被冠以WS字头(Web Service的简称),以下是一个WS系列追加标准的不完全列表:

  • WS安全(WS-Security)

    定义了如何在SOAP中使用XML加密或XML签名来保护消息传递。可作为HTTPS保护的一种替代或扩充。

  • WS信赖性(WS-Reliability)

    一个来自OASIS的标准协议,用来提供可信赖的WEB服务间消息传递。

  • WS可信赖消息(WS-ReliableMessaging)

    同样是一个提供信赖消息的协议,由Microsoft, BEA 和IBM发布。目前OASIS正对其实施标准化工作。

  • WS寻址(WS-Addressing)

    定义了在SOAP消息内描述发送/接收方地址的方式。

  • WS事务(WS-Transaction)
    定义事务处理方式。
 

MSMQ

  消息队列,是微软对消息服务领域的开创性尝试,它采用了特殊的通信机制,对改善和提高系统的可伸缩性、可用性具有重要的意义。

  优点:离线通信方式支持,发送方和处理方分离,可靠消息传输和错误处理,对事务的支持。

总结

笔记写的有点乱,只是把相关的介绍和概念写出,如有错误欢迎指正。

作者:释迦苦僧 出处:http://www.cnblogs.com/woxpp/p/4013670.html 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

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

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

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

  2. 菜鸟学习WCF笔记-Address

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

  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 笔记 (2) - 传输泛型 List 对象

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

  9. 深度学习word2vec笔记之算法篇

    深度学习word2vec笔记之算法篇 声明:  本文转自推酷中的一篇博文http://www.tuicool.com/articles/fmuyamf,若有错误望海涵 前言 在看word2vec的资料 ...

随机推荐

  1. [html]兼容 IE6 IE7 的简单网页框架

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Search and Replace

    function myReplace(str, before, after) { //return str; if(before[0] === before[0].toUpperCase()){ af ...

  3. SQL保留关键字不能用作表名

    com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'User' 附近有语法错误. 一看就是SQL语句错误,发现控制台console上打印出来的S ...

  4. 使用 xlrd 模块实现对excel 的读取、excel转json 、excel 转 mysql insert 语句

    #-*- coding:utf-8 -*- # 处理 excel 中的 area 为 Mysql insert 语句 import xlrd, json, codecs, os # data = xl ...

  5. throw er; Unhandled 'error' event Error: listen EADDRINUSE的解决方法

    先把错误贴出来,如下: 出现此问题的原因是端口被占用,解决方法如下: 查看程序执行用到的端口的运行情况,本例是端口号3000; 占用该端口3000的进程是node,pid为244156,用kill命令 ...

  6. Daily Scrum 12.2

    今日完成任务: 完成数据库文档说明:整理数据库(没整理完),明天继续:文档功能的修改以及在服务器上测试 明日任务: 黎柱金 整理数据库 孙思权 整理数据库 晏旭瑞 文档上传下载功能 冯飘飘 修复问题提 ...

  7. C#字段中加入list<类字段> 的两种写法

    类1 public class NumCon { public string zsNum { get; set; } } 类2 public class RepeatMess //重复数据响应 { p ...

  8. stsdb开发指南

    摘自:http://www.iopenworks.com/Products/ProductDetails/DevelopmentGuide?proID=387 多线程问题,请参见线程安全小结 1 ST ...

  9. IOS 导航栏

    系统状态栏改为白色:在Supporting Files文件的info.plist文件中添加 新的key,名字为View controller-based status bar appearance,并 ...

  10. load-on-startup在web.xml中的含义

    在servlet的配置当中,<load-on-startup>1</load-on-startup>的含义是: 标记容器是否在启动的时候就加载这个servlet. 当值为0或者 ...