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概念的更多相关文章

  1. WCF开发指南之构建服务

    一. 引言 Windows通讯基础(简称为WCF)是一种SDK,用于让你使用典型的CLR编程结构(例如用于发布和消费服务的类和接口等)来构建Windows面向服务的应用程序.WCF的编程模型是声明性的 ...

  2. WCF消息传递

    通过了解了WCF的一些基本概念并创建和编写WCF应用中的相应方法,实现了WCF服务和客户端之间的调用,就能够理解WCF应用是如何进行通信的.了解了一些基本的WCF概念后,还需要深入了解WCF消息的概念 ...

  3. WCF学习目录

    WCF 基本 WCF概念 WCF配置文件详解 多个不同类对象传输思路 WCF 大文件传输配置 Uri ? & = 毫秒数据字符串转换为DateTime POST请求——HttpWebReque ...

  4. 使用 ServiceStack 构建跨平台 Web 服务

    本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Fou ...

  5. 使用 ServiceStack 构建跨平台 Web 服务(转)

    出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Service ...

  6. 菜鸟学习WCF笔记-概念

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

  7. WCF回顾一、基本概念和应用场景

    一.WCF描述 wcf是一款基于面向服务的架构的通讯框架平台,在分布式框架中得到了广泛使用. wcf入门非常简单,只要花几分钟就能编写一个完整的wcf程序,而实际上WCF是概念非常多的一门技术,需要花 ...

  8. WCF分布式服务1-核心概念

    参考msdn library for WCF Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架. 借助 WCF,可以将数据作为异步消息从 ...

  9. WCF分布式开发步步为赢(1):WCF分布式框架基础概念

    众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推 ...

随机推荐

  1. ZOJ 2112 Dynamic Rankings(动态区间第 k 大+块状链表)

    题目大意 给定一个数列,编号从 1 到 n,现在有 m 个操作,操作分两类: 1. 修改数列中某个位置的数的值为 val 2. 询问 [L, R] 这个区间中第 k 大的是多少 n<=50,00 ...

  2. rm: 无法删除&quot;/run/user/root/gvfs&quot;: 是一个目录 问题

    2013-03-02    bxd@linux:~$ sudo su [sudo] password for bxd:  root@linux:/home/bxd# exit exit rm: 无法删 ...

  3. CSS基础汇总

    1. css的出现是为了是内容和表现分离.分为三种: 内联:不推荐 嵌入:没有利用浏览器缓存机制. 外联: 2. css优先级:①id优先级高于class②后面的样式覆盖前面的③指定的高于继承④行内样 ...

  4. Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.

    运行react-native项目时报错. 说明一下:项目本来是好的,再次运行就报错了 解决解决办法倒是有,不过具体什么原因不知道.希望有知道具体原因的童鞋能够补充一下 第一种情况:真的是注册的时候写错 ...

  5. 让我们一起Go(九)

    前言: 又好久么更新了,无奈公司项目多,自己又接了私活,于是时间更不够了......不过我是不会让它流产的,坚持! 一.Go语言中的函数 终于轮到函数了,其实也没有什么好说的,无非就是一个语法问题,c ...

  6. 【转载】[JS]让表单提交返回后保持在原来提交的位置上

    有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,非常不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好 ...

  7. Java知多少(107)几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

  8. webpack多页面开发与懒加载hash解决方案

    之前讨论了webpack的hash与chunkhash的区别以及各自的应用场景,如果是常规单页面应用的话,上篇文章提供的方案是没有问题的.但是前端项目复杂多变,应对复杂多页面项目时,我们不得不继续踩w ...

  9. [linux]重拾linux

    起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...

  10. C#语法糖之 ReflectionSugar 通用反射类

    用法很简单: ReflectionSugar rs = new ReflectionSugar(100);//缓存100秒 ,可以不填默认不缓存 rs.有嘛点嘛   性能测试: 性能测试类源码: ht ...