WCF概念
WCF 概念
WCF是.NET Framework 上灵活通讯技术。在.NET 3.0推出之前,一个企业解决方案需要几种通讯方式。对于独立于平台的通讯,使用ASP.NET Web服务。对于比较高级的 Web 服务-可靠性、独立于平台的安全性和原子事务等技术-Web Service Enhancements 增加了ASP.NET Web 服务的复杂性。如果要求通讯比较快,客户和服务都是.NET 应用程序,就应使用.NET Remoting 技术。 .NET Enterprise Services 支持自动事务处理,它默认使用DCOM 协议,比用.NET Remoting 快。 DCOM也是允许传递事务的唯一协议。所有这些技术都有不同的编程模型,这些模型都需要开发人员有许多的技巧。
.NET Framework 3.0 引入了一种通讯技术WCF,它包含上述技术的所有功能,把他们合并到一个编程模型中:Window Communication Foundation(WCF)。
本章介绍的明明空间是System.ServiceModel。
WCF合并了ASP.NET Web服务、.NET Remoting 、消息列队和Enterprise Service 的功能,WCF 的功能包括:
存储组件和服务
与联合使用自定义主机、.NET Remoting 和 WSE 一样,也可以将WCF 服务存放在ASP.NET运行库、WINDOW服务、COM+进程 或 WINDOW 窗体应用程序中。
声明行为
不要求派生自基类(.NET Remoting 和 Enterprise Service 有这个要求),也可以使用属性定义服务。这类似于用ASP.NET开发Web服务。
通信信道
在改变通信信道方面,.NET Remoting 非常灵活,WCF 也不错 ,因为它提供了相同的灵活性。WCF提供了用HTTP、TCP和IPC 信道进行通信的多条信道。也可以创建使用不同的传输协议的自定义信道。
安全结构
为了实现独立于平台的Web服务,必须使用标准化的安全环境。所提出的标准用WSE 3.0 S实现,这在WCF中被继承下来。
可扩展性
.NET Remoting 有丰富的扩展功能。他不仅能创建自定义信道、格式化程序和代理,还能将功能注入客户端和服务器上的消息流。WCF提供了类似的可扩展性。但是WCF的扩展性用SOAP标题创建。
支持以前的技术
要使用WCF,根本不需要完全重写分布式解决方案,因为WCF可以与已有的技术集成。WCF提供的信道使用DCOM与服务组件通信。用ASP.NET开发的Web服务也可以与WCF集成。
最终目标是通过进程和不同的系统、通过本地网络和通过Internet 收发客户和服务之间的消息。
如果需要以独立于平台的方式尽快收发消息,就应这么做。在远程试图上,服务提供了一个端点,她用协定、绑定和地址来描述。协定定义了服务提供的操作,绑定给除了协议和编码信息,地址是服务的位置。呵护需要一个兼容的端点来访问服务。
客户调用代理上的一个方法。代理提供了服务定义的方法。但把方法调用转换为一条消息,并把该消息传输倒信道上。信道有一个客户端部分和一个服务器端部分,他们通过一个网络协议来通信。在信道上,吧消息传递给调度程序,调度程序再把消息转换为用服务调用的方法调用。
WCF支持几个通信协议。为了进行独立于平台的通信,需要支持Web服务标注。要在.NET应用程序之间通讯,可以使用较快的通信协议,其系统开销较小。
下面几节介绍独立于平台的通讯所使用的核心服务的功能。
SOAP
为了记性独立于平台的通讯,可以使用SOAP协议,它得到WCF 的直接支持。
WSDL
文档描述了服务的操作和信息。
REST
WCF还提供了使用REST进行通信的功能。REST并不是一个协议,但定义了使用服务访问资源的几条规则。支持REST的Web服务是基于HTTP协议和REST规则的简单服务。
JSON
除了发送SOAP消息之外,从Javascript中访问服务最好使用JSON。.NET包含一个数据协定序列化程序,可以用JSON标记创建对象。
WCF概念的更多相关文章
- WCF开发指南之构建服务
一. 引言 Windows通讯基础(简称为WCF)是一种SDK,用于让你使用典型的CLR编程结构(例如用于发布和消费服务的类和接口等)来构建Windows面向服务的应用程序.WCF的编程模型是声明性的 ...
- WCF消息传递
通过了解了WCF的一些基本概念并创建和编写WCF应用中的相应方法,实现了WCF服务和客户端之间的调用,就能够理解WCF应用是如何进行通信的.了解了一些基本的WCF概念后,还需要深入了解WCF消息的概念 ...
- WCF学习目录
WCF 基本 WCF概念 WCF配置文件详解 多个不同类对象传输思路 WCF 大文件传输配置 Uri ? & = 毫秒数据字符串转换为DateTime POST请求——HttpWebReque ...
- 使用 ServiceStack 构建跨平台 Web 服务
本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Fou ...
- 使用 ServiceStack 构建跨平台 Web 服务(转)
出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Service ...
- 菜鸟学习WCF笔记-概念
背景 WCF这个词语一直不陌生,以前也使用过多次在实际的项目中,但是一直没有时间来做个系统的学习,最近抽点时间,看看 蒋金楠的<WCF全面解析>学习下,顺带做些笔记,如有错误,欢迎各路大神 ...
- WCF回顾一、基本概念和应用场景
一.WCF描述 wcf是一款基于面向服务的架构的通讯框架平台,在分布式框架中得到了广泛使用. wcf入门非常简单,只要花几分钟就能编写一个完整的wcf程序,而实际上WCF是概念非常多的一门技术,需要花 ...
- WCF分布式服务1-核心概念
参考msdn library for WCF Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架. 借助 WCF,可以将数据作为异步消息从 ...
- WCF分布式开发步步为赢(1):WCF分布式框架基础概念
众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推 ...
随机推荐
- ZOJ 2112 Dynamic Rankings(动态区间第 k 大+块状链表)
题目大意 给定一个数列,编号从 1 到 n,现在有 m 个操作,操作分两类: 1. 修改数列中某个位置的数的值为 val 2. 询问 [L, R] 这个区间中第 k 大的是多少 n<=50,00 ...
- rm: 无法删除"/run/user/root/gvfs": 是一个目录 问题
2013-03-02 bxd@linux:~$ sudo su [sudo] password for bxd: root@linux:/home/bxd# exit exit rm: 无法删 ...
- CSS基础汇总
1. css的出现是为了是内容和表现分离.分为三种: 内联:不推荐 嵌入:没有利用浏览器缓存机制. 外联: 2. css优先级:①id优先级高于class②后面的样式覆盖前面的③指定的高于继承④行内样 ...
- Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
运行react-native项目时报错. 说明一下:项目本来是好的,再次运行就报错了 解决解决办法倒是有,不过具体什么原因不知道.希望有知道具体原因的童鞋能够补充一下 第一种情况:真的是注册的时候写错 ...
- 让我们一起Go(九)
前言: 又好久么更新了,无奈公司项目多,自己又接了私活,于是时间更不够了......不过我是不会让它流产的,坚持! 一.Go语言中的函数 终于轮到函数了,其实也没有什么好说的,无非就是一个语法问题,c ...
- 【转载】[JS]让表单提交返回后保持在原来提交的位置上
有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,非常不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好 ...
- Java知多少(107)几个重要的java数据库访问类和接口
编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...
- webpack多页面开发与懒加载hash解决方案
之前讨论了webpack的hash与chunkhash的区别以及各自的应用场景,如果是常规单页面应用的话,上篇文章提供的方案是没有问题的.但是前端项目复杂多变,应对复杂多页面项目时,我们不得不继续踩w ...
- [linux]重拾linux
起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...
- C#语法糖之 ReflectionSugar 通用反射类
用法很简单: ReflectionSugar rs = new ReflectionSugar(100);//缓存100秒 ,可以不填默认不缓存 rs.有嘛点嘛 性能测试: 性能测试类源码: ht ...