WCF 简介

article/2025/10/5 14:14:56

一、WCF概述

1) 什么是WCF?

      Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务。终结点可以是从服务终结点请求数据的服务客户端。简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流。一些示例方案包括:

  • 处理企业事务的安全服务。
  • 将当前数据提供给其他服务(例如流量报告或其他监视服务)的服务。
  • 使两个人能够实时通信或交换数据的聊天服务。
  • 轮询一个或多个服务以查找数据并将其以逻辑表现形式展示出来的面板应用程序。
  • 将使用 Windows Workflow Foundation 实现的工作流作为 WCF 服务公开。
  • 轮询服务以查找最新数据源的 Silverlight 应用程序。

       虽然在 WCF 存在之前就可以创建此类应用程序,但 WCF 使终结点的开发比以前更容易。整合了windows中原有的通讯技术产,包括 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的技术。总之,WCF 设计提供一种用于创建 Web 服务和 Web 服务客户端的可管理的方式。

2) WCF 包括以下功能集。

  • 服务导向

       使用 WS 标准的一个结果是,WCF 允许您创建面向服务的应用程序。面向服务的体系结构 (SOA) 依赖 Web 服务发送和接收数据。这些服务具有松耦合的常规优点,而不是从一个应用程序到另一个应用程序进行硬编码。松耦合关系意味着只要符合基本协定,则在任何平台上创建的任何客户端均可连接到所有服务。

  • 互操作性

WCF 实现了 Web 服务互操作性的现代行业标准。

  • 多种消息模式

       采用多种模式之一交换消息。最常用的模式是请求/答复模式,其中一个终结点从另一个终结点请求数据,另一个终结点进行答复。还有其他模式,比如单向消息,其中只有一个终结点发送消息,而不期望得到答复。更复杂的模式是双工交换模式,在该模式下,两个终结点建立连接并来回发送数据,类似于即时消息传递程序。

  • 服务元数据

      WCF 支持使用行业标准(如 WSDL、XML 架构和 WS-Policy)中指定的格式发布服务元数据。该元数据可用于自动生成并配置客户端,以便访问 WCF 服务。可通过 HTTP 和 HTTPS 来发布元数据,也可使用 Web 服务元数据交换标准来发布元数据。

  • 数据协定

       由于 WCF 是使用 .NET Framework 生成的,因此它也包括代码友好的方法,用于提供希望强制执行的协定。数据协定就是其中一种通用类型的协定。实质上,当您使用 Visual C# 或 Visual Basic 对服务进行编码时,处理数据的最简单方法是使用属于数据实体的属性创建表示该数据实体的类。WCF 包括一个以这种轻松的方式处理数据的综合系统。在创建了表示数据的类之后,服务会自动生成使客户端能够符合所设计数据类型的元数据。

  • 安全性

      可对消息进加密以保护隐私,而且可以要求用户对其自身进行身份验证,然后才允许接收消息。可使用众所周知的标准(如 SSL 或 WS-SecureConversation)实现安全性。

  • 多种传输和编码方式

      可通过多种内置传输协议和编码中的任意一种发送消息。最常用的协议和编码是使用超文本传输协议 (HTTP) 发送文本编码的 SOAP 消息,以便在万维网上使用。此外,WCF 还允许通过 TCP、命名管道或 MSMQ 发送消息。这些消息可以编码为文本,也可以使用优化的二进制格式。使用 MTOM 标准可有效地发送二进制数据。如果所提供的传输或编码都不符合您的需要,您可以创建自己的自定义传输或编码。

  • 可靠的排队消息

     WCF 支持使用通过 WS-Reliable Messaging 实现的可靠会话和使用 MSMQ 进行可靠的消息交换。

  • 持久性消息

      持久性消息决不会由于通信中断而丢失。持久性消息模式的消息会始终保存到数据库中。如果发生中断,数据库将允许您在恢复连接后恢复消息交换。此外,也可以使用 Windows Workflow Foundation (WWF) 来创建持久性消息。

  • 事务

      WCF 还使用三个事务模型之一来支持事务:WS-AtomicTtransactions、System.Transactions 命名空间中的 API 以及 Microsoft 分布式事务协调器。

  • AJAX 和 REST 支持

        REST 是不断发展的 Web 2.0 技术的一个示例。WCF 可以配置为处理未包装在 SOAP 信封中的“纯文本”XML 数据。WCF 还可以扩展以支持特定的 XML 格式,如 ATOM(流行的 RSS 标准),甚至支持非 XML 格式(如 JavaScript 对象表示法 (JSON))。

  • 扩展性

       WCF 体系结构具有大量扩展点。如果需要额外功能,它还提供许多入口点,允许您自定义服务的行为。

3) WCF 体系结构

 

4) WCF与WEB API的异同

      WCF 是 Microsoft 为生成面向服务的应用程序而提供的统一编程模型。借助这一模型,开发人员可以构建既能跨平台与现有投资集成又能与现有投资交互的安全、可靠的事务处理解决方案。 ASP.NET Web API 是一个用来方便地生成 HTTP 服务的框架,这些服务可访问广泛的客户端,包括浏览器和移动设备。ASP.NET Web API 是用于在 .NET Framework 上生成 RESTful 应用程序的理想平台。

WCF

ASP.NET Web API

启用支持多种传输协议(HTTP、TCP、UDP 和自定义传输)的生成服务,并允许在这些服务之间切换。

仅限 HTTP。用于 HTTP 的第一类编程模型。更适合从各种浏览器、移动设备等进行访问,可实现大范围访问。

启用支持同一消息类型的多种编码(文本、MTOM 和二进制)的生成服务,并允许在这些服务之间切换。

启用支持广泛的媒体类型(包括 XML、JSON 等)的生成 Web API。

支持采用 WS-* 标准的生成服务,如可靠消息传递、事务、消息安全性。

使用基本协议和格式,如 HTTP、WebSocket、SSL、JQuery、JSON 和 XML。不支持较高级别的协议,如消息传递或事务。

支持请求-答复、单向和双工消息交换模式。

HTTP 是请求/响应,不过,通过 SignalR 和 WebSocket 集成,可集成其他模式。

可以在 WSDL 中描述 WCF SOAP 服务,从而可通过自动工具,针对具有复杂架构的服务来生成客户端代理。

可通过各种方法来描述 Web API:从用于描述代码片段的自动生成的 HTML 帮助页,直至用于 OData 集成 API 的结构化元数据。

随 .NET Framework 一起提供。

随 .NET Framework 一起提供,但它是一个开放源代码程序,也可通过独立下载以带外方式获得。

5)WCF的优势

      在David Chappell所撰的《Introducing Windows Communication Foundation》一文中,用了一个活鲜鲜的例子,来说明WCF的优势所在。假定我们要为一家汽车租赁公司开发一个新的应用程序,用于租车预约服务。该租车预约服务会被多种应用程序访问,包括呼叫中心(Call Center),基于J2EE的租车预约服务以及合作伙伴的应用程序(Partner Application)

      从功能的角度来看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的并集。(注:这种说法仅仅是从功能的角度。事实上WCF远非简单的并集这样简单,它是真正面向服务的产品,它已经改变了通常的开发模式。)因此,对于上述汽车预约服务系统的例子,利用WCF,就可以解决包括安全、可信赖、互操作、跨平台通信等等需求。开发者再不用去分别了解.Net Remoting,ASMX等各种技术了。

      从实际开发来讲,基于Asp.Net的应用程序开发与基于WCF 的面向服务的应用程序开发的区别:

      (1)在基于Asp.net 的应用程序开发中。我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。大家可以观察到,基本上所有的应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的应用。如下图。

 

      (2) 基于WCF面向服务的应用程序开发中。客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服 务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性。如下图。

 

转载自:https://www.cnblogs.com/chillsrc/p/5345456.html


http://chatgpt.dhexx.cn/article/KLoEfxyd.shtml

相关文章

网络编程之WCF编程:WCF服务和客户端的建立,回调

1.概念 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口。它是.NET框架的一部分,由 .NET Framework 3.0 开始引入。 WCF的终结点有三个要素组成,分别是地址(Add…

WCF 学习总结2 -- 配置WCF

前面一篇文章《WCF 学习总结1 -- 简单实例》一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫。现在回过头来看看IDE提供的Wcf Service Library项目模板中的默认服务端配置文件——App.config里面…

[老老实实学WCF] 第一篇 Hello WCF

老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用程序的编程模型,涉及面之广,技术之复杂,结构之零散,让我们…

WCF入门教程(一)

WCF入门教程(一) 一、 概述二、基于Asp.net 的应用程序开发与面向服务开发三、第一个WCF程序IUser代码:User代码 四、场景五、将WCF程序寄宿在B服务器的IIS之上六、在客户端[A服务器]创建服务的引用七、使用WCF的方法九、代码下载 一、 概述 Windows Co…

WCF简介

WCF是Windows Communication Foundation的缩写,是MS为SOA(Service Oriented Architecture 面向服务架构)而设计的一套完整的技术框架。WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,使用该框架,开发人员可以构建跨…

无废话WCF入门教程一[什么是WCF]

一、概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。 WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Inter…

C# WCF入门

目录标题 一、什么是WCF二、第一个WCF程序三、WCF服务的使用 一、什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分…

wcf学习--建立最简单的WCF服务

在VS2010里建立一个最简单的WCF服务,基本流程如下: 一:新建WCF应用 首先,新建一个WCF服务的应用(这里以framework 4.0为例),如下图所示, 建立完成之后,VS将自动生成一个最…

什么是WCF

文章目录 一、概述二、基于Asp.net 的应用程序开发与面向服务开发三、第一个WCF程序四、场景五、将WCF程序寄宿在B服务器的IIS之上六、在客户端[A服务器]创建服务的引用七、使用WCF服务端的方法 一、概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应…

面向服务的WCF编程(一)

第七章:WCF入门 课后习题: 1.简要介绍WCF服务的承载方式及其特点。 WCF服务的承载方式包括:利用IIS或者WAS承载、利用Windows服务承载、自承载。其特点如下: (1)用IIS或者WAS承载:这是最常用…

WCF 详解

一、什么是WCF? ​ .NET Framework 3.0 中开始引入一种专门用来构建分布式系统的API——WCF,与过去所有的其他分布式API(如DCOM,.NET Remoting,XML WebService,消息队列)有所不同,WCF提供统一的,可扩展的编…

Windows内核原理与实现之 GDI (图形设备接口)

文章摘录自《Windows内核原理与实现》一书。 图形用户界面是 Windows 操作系统的重要特色,这也是在 Windows 子系统中提供的。概括而言,Windows 的图形系统有两方面特点:首先,它提供了一套与设备无关的编程接口,即 G…

windows 驱动与内核调试 学习

概述 本文讲述笔者在学习内核和驱动开发的笔记。 驱动概述 一般驱动需要运行内核权限下运行(因为涉及硬件读取),比如Intel下的ring 0 权限下。在windwos大量病毒和杀软为了特殊目的往往都是通过将自身升级为内核驱动方式进行运作。如果病毒程序首先进入ring 0理论…

Windows内核--CPU和内核(1.7)

Windows内核支援哪些CPU? Intel x86/x86_64 IA64已不再支持. AMD amd64 ARM (Windows On Arm: WOA) ARM具备低功耗优势, 除了高通, 还有Broadcom/NXP等都支援ARM架构. 苹果自研M系列开了头,ARM不仅有低功耗,同样有性能,Windows也想分一杯羹…

windows内核驱动

内核&驱动基础 WDK(Windows Driver Kit) 内核编程需要使用WDK WDK 下载 windows xp wdk 下载地址 WDK 安装 勾选所有的安装项,避免错过一些例子 默认安装目录: C:\WinDDKfirst驱动开发 源码 first.c #include <ntddk.h>#define DEBUG/** 卸载函数*/ VOID Driver…

Windows 内核会换为 Linux 吗?

关注、星标公众号&#xff0c;不错过精彩内容 来源&#xff1a;网络 编辑整理&#xff1a;strongerHuang 如果装个纯linux&#xff0c;则一些windows软件没法用。如果用windows然后装个虚拟机&#xff0c;在虚拟机上安装linux&#xff0c;又感觉麻烦而且占用电脑资源。 现在win…

Windows内核之系统架构

一.架构概述 下图显示了Windows的基本结构。Windows采用双模式来保护操作系统本身&#xff0c;以避免被应用程序的错误所波及。操作系统核心运行在内核模式下&#xff0c;应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块&#xff08;内核驱动程…

Windows内核原理与实现之Windows设备驱动程序

文章摘录自《Windows内核原理与实现》一书。 设备驱动程序是操纵设备的内核模块&#xff0c;I/O 管理器、即插即用管理器和电源管理器都需要与设备的驱动程序打交道。 在Windows I/O 系统中&#xff0c;设备驱动程序不仅为操作系统提供了支持各种 I/O 设备的能力&#xff0c;…

Windows内核的基本概念

Windows内核的基本概念 1 处理器模式 Windows使用 0 和3 两种特权级。0 表示CPU处于内核模式(kernel mode)&#xff1b;3 表示用户模式(user mode)。 1.1 内存管理 Windows 将32位虚拟内存空间按照0~4 GB的线性地址空间看待。其中2~4GB是所有进程共享的&#xff0c;为系…

Windows内核--源代码在哪里?(1.1)

大部分人能看到这篇帖子, 想必已经用过Windows系统多年了... 微软官方并不完全公开源代码 想清楚Windows技术内幕&#xff0c;就需要逆向工具。幸运的是: WRK源代码(Windows Research Kernel) (XP/Server 2003)Windows 2000源代码(Kernel和用户层) 深入解析Windows操作系统(最…