热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[WCF]WindowsCommunicationFoundation

WindowsCommunicationFoundation(WCF)是一套Windows平台上开发和发布服务(services)的软件开发工具包(SDK)。WCF提供服务运行环境

 Windows Communication Foundation (WCF) 是一套 Windows 平台上开发和发布服务(services)的软件开发工具包(SDK)。WCF 提供服务运行环境,使你能将 CLR 类型暴露为服务,或者反过来将服务封装为 CLR 类型。尽管理论上 WCF 不是必须的,但在实际开发中 WCF 会让我们的工作变得更加简单。WCF 是微软实现的一套工业标准,它定义了服务交互(service interactions)、类型转换(type conversion) 、封装(marshaling)、多协议管理(various protocols' management)等技术细节。也正因为其标准化,WCF 可以支持不同平台服务之间的互操作。WCF 为开发者提供了各种不同应用需求的支持,可大幅提高生产力。在 WCF 的第一个版本(first release)中包含了许多实用功能,比如宿主(hosting)、服务实例管理(service instance management)、异步调用(asynchronous calls)、可靠性(reliability)、事务管理(transaction management)、离线队列调用(disconnected queued calls)、安全(security)等等。WCF 拥有一套优雅(elegant)、可扩展(extensibility)的模型,WCF 本身就是基于该模型开发的。


面向服务(SOA, service-oriented application)示意图

2009050517515310.gif

WCF 架构示意图

2009050517521418.gif

WCF 宿主架构示意图

2009050517523667.gif

WCF 通讯方式示意图

2009050517525573.gif

 

2009050517530781.gif


  几乎所有的 WCF 的开发文章里都会提到一个名为 "ABC" 的说法,分别是 AddressBinding Contract。Address表示服务的地址。比如 "http://localhost:8080/myservice.svc";Binding表示绑定策略。可以为单个服务添加多个绑定,如内部采取 NetTcpBinding(Binary),外网则采取 WSHttpBinding(Text),当然一个 Binding 也可用于多个服务;Contract表示服务契约。在 SOA 中客户端和服务器之间并没有直接的对象继承和引用关系,双方通过一种约定的格式来传递消息(Message),这种约定就是契约。

  在实际开发中,我们往往会将 "ABC" 反过来进行。首先定义及实现契约,然后选择合适的绑定模式,最后定义服务的地址。在 WCF 中,服务对象不再需要从 MarshalByRefObject 继承,我们也无需再关心 SAO、CAO 之类的区别,其模式更类似于 ASP.NET WebService,同样也支持 Session。WCF 更多地使用声明式编程模式,通过大量的特性(Attribute)来描述服务策略。

 ABeen 测试代码:ABeen.Learn.rar



推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  •   ... [详细]
  • 范式转移:构建超级应用——胖应用 + 胖协议
    范式转移:构建超级应用——胖应用 + 胖协议 ... [详细]
  • Bro是一款强大的网络安全工具,以及协议识别与统计的工具。Broisapowerfulnetworkanalysisframeworkthatismuchdifferentfro ... [详细]
  • 本文说明了Linux系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、 ... [详细]
  • DWDM是DenseWavelengthDivisionMultiplexing(密集波分复用)的缩写,这是一项用来在现有的光纤骨干网上提 ... [详细]
  • Ajax智能匹配检索(含图含完整代码)
    使用谷歌搜索引擎的用户都知道,只要在文本框中输入部分关键字,就能显示相关搜索提示信息列表。如图:   本技术的核心是通过ASP.NETAjaxControlToolkit中的Aut ... [详细]
  • **步骤1:在DNS服务器的基础上,修改DNS的正向数据库文件varnamedchrootvarnamedtext.com.zone,添加MX资源记录。具体操作如下。** ... [详细]
author-avatar
捕鱼达人qq怎么刷金币
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有