在.NET Framework 2.0中,泛型第一次被引入。我们可以定义泛型接口、泛型类型、泛型委托和泛型方法。序列化依赖于真实具体的类型,而泛型则刻意模糊了具体类型概念。而集合代表一组对象的组合,集合具有可迭代(Enumerable)的特性,可以通过某个迭代规则遍历集合中的每一个元素。由于范型类型和集合类型在序列化和反序列化上具有一些特殊的行为和规则,在这篇文章中,我将会对此进行详细介绍。上篇先来说所泛型数据契约。 一、泛型与数据契约 面向对象通过继承实现了代码的重用,而泛型则实现了“算法的重用”。我们
老的Windows通讯开发平台有:WebService和.net Remoting等。
Windows Communication Foundation (WCF)是一个面向服务编程的综合分层架构。该架构的顶层称为服务模型层(Service Model Layer),使用户用最少的时间和经历建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。我将通过几篇文章和大家一起学习WCF,希望能对新手学习WCF有些帮助。 从功能的角度来看,WCF 完全可以看作是ASMX,.Net Remoting,Enterprise Serv
客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用。服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件。
Windows Communication Foundation (WCF)是一个面向服务编程的综合分层架构。该架构的顶层称为服务模型层(Service Model Layer),使用户用最少的时间和经历建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。我将通过几篇文章和大家一起学习WCF,希望能对新手学习WCF有些帮助。
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式。记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winform时,使用过Remoting,再之后做B/S架构时,就会经常使用.NET平台下的Web Service,直到使用上WCF。看上去有了一些WCF的使用经验,实则不然,比如对安全、分布式事务、可靠会话等主题仍然接触甚少,因而决定重新回顾学习一下相关知识,尤其是对WCF框架的理解(已于2015年开源,可下载源码,h
作为一个通信基础平台,WCF必须保证通信的可靠性。由于消息交换是WCF采用的通信手段,通信可靠性的保障体现在确保消息的可靠传输。WCF本质上是一个消息处理框架,作为整个消息交换系统的两个终端,即发送端和接收端。换句话说,WCF仅仅负责对消息的发送和接收,一旦消息通过WCF的信道层进入了网络,就脱离了WCF的控制范围。但是,由于网络环境的限制,网络层不能百分之百地确保对消息的有效交付。如何克服中间环节的制约,确保从一端发送的消息能够被有效地交付给另一端,这就是可靠消息传输(Reliable Messaging
Windows CommunicationFoundation(WCF)是由微软发展的一组数据通信的应用程序开发接口。能够翻译为Windows通讯接口。它是.NET框架的一部分。
第一次邂逅WCF是在微软举办的一场关于Windows Vista技术推广培训上,时间大概是2005年10月份,当时对WCF可谓是一见钟情。如果读者也像我一样,之前习惯了采用.NET Remoting、XML Web Service、WSE、MSMQ来架构你分布式应用的话,应该不难想象我第一次接触WCF时心中的那份震撼。WCF是Windows平台下所有分布式技术集大成者,它将这一系列独立的分布式技术整合,提供一个统一的应用编程接口,这本身就是一项创举。这些被整合的分布式技术不仅仅包含提到的这些,还包括DCOM
菜菜刚开始接触WCF,一切都要从零开始,所以在此也记下笔记,以作日后翻看,大家也可以多多指点。
在面向服务的应用系统中,最重要的概念就是消息,消息的传输是一个非常重要的问题。而在大多数情况下,消息要经历多个网络节点,这里会涉及到消息路由问题。WS规范很早就制定了对于消息路由问题的解决办法,这里最早的就是WS-Routing 。当然后来逐渐为更完善的规范WS-Addressing取代。 支持对于消息路由,WCF4.0之前的框架没有提供支持,在WCF4.0里又重新加入对于消息路由机制的支持。当然这里我们学习消息路由,首先还是来了解一下与消息路由相关的一些规范,下面我们就来依次看一下WS-Routing和W
经过WCF基础的ABC学习,已经可以构建简单的WCF的服务,使用不同的服务地址和绑定类型,根据业务提供所需的服务契约。但不禁想问,服务所使用的消息报文是什么样的形式么?蕴含什么样内容呢?WCF服务是否
WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。 WCF是.Net框架中的技术,用来创建面向服务的应用程序,交换不同通信方案里的消息,以及执行服务操作生成的工作流。WCF应用程序由三部分组成 - WCF服务,WCF服务主机和WCF服务客户端。WCF平台有时也被称为服务模型。WCF的基本特征是互操作性。这是微软用于构建面向服务的应用程序的最新技术之一。根据基于消息的通信的概念中,一个HTTP请求可以被均匀地表示,WCF是一个统一的API而不管不同的传输机制。
2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本。对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束。Matt Connew 用3 周的时间来构建一个基于 .NET Core 的 WCF 服务实现的POC 基本原型。在3周结束时,Matt Connew 有了一个可以工作的玩具,可以使用BasicHttpBinding托管服务。然后,Matt Connew 的原型作为概念证明坐在那里收集灰尘,同时决定如何处理它。.NET团队在2019年的Build 大会上 已经决定了不在继续在.NET Core中支持WCF,这也是微软官宣的事情,我想大家都记忆尤新,没有资源将这个玩具开发为具有与 WCF 功能奇偶校验的完整产品,但是有许多客户 无法在不对其WCF服务进行完全重写的情况下迁移到 .NET Core。 Matt Connew最终决定 将花一些时间打磨一下的原型实现,包括添加NetTcp支持,并将代码捐赠给开源社区,托管到.NET基金会,看看这是否社区将围绕它构建的东西,以便在Microsoft之外生存下去。
OData开放数据协议是微软针对Google的GData推出的,旨在推广Web程序数据库格式标准化的开放数据协议,微软将 OData 定义为基于 HTTP、AtomPub 和 JSON 的协议,增强各种网页应用程序之间的数据兼容性,以提供多种应用、服务和数据商店的信息访问。并且,微软已经正式推出了 OData SDK,包含了 .NET、Java、PHP、Palm WebOS 和 iPhone 的支持。其中 .Net OData 客户端基于 Apache 授权开源。微软多款产品已经支持 OData 包括 S
《我的WCF之旅》系列自开篇以来,得到了园子里很多朋友的厚爱,并荣登了博客园2007年度系列博文Top 10。由于工作原因,沉寂了几个月,今天开始WCF新的旅程。如果说《我的WCF之旅》主要是对WCF基本原理概括性介绍,而对于这个新的系列,我将和大家分享我对WCF的一些实现机制、设计原理的理解,以及我在实际的项目开发中的一些实践经验(比如在后续的一些文章中,我将介绍通过WCF Extension实现一些在真正的分布式项目开发中很有现实意义的功能)。 Windows Communication Foundat
Policy Injection Application Block(PIAB)是Enterprise Library众多Application Block中的一个。在我看来,PIAB和后来的Unity Application Block的推出在Enterprise Library的发展历程中具有重要的意思,它标志着Enterprise Library向真正框架上面发展。不再是仅仅关注于某个具体功能实现(比如Logging、Caching、DA、Security等等)。PIAB提供了一种易用的、可扩展的机制
关于WCF的概念、原理、优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多。 这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此
本文主要来自MSDN杂志《Building Cross-Platform Web Services with ServiceStack》,Windows Communication Foundation (WCF) 是一个相当优秀的服务框架,当我们讨论跨平台的服务的时候,虽然WCF对WebService的支持还行,在面对一些高级应用的不太好,微软重新发展了ASP.NET WebAPI框架,关于这两个框架的讨论可以看我另外一篇文章《WCF和ASP.NET Web API在应用上的选择》 。在讨论跨平台的Web
第1章 WCF简介 (WCF Overview) 1.1 SOA基本概念的和设计思想 1.2 WCF是对现有Windows平台下分布式通信技术的整合 1.3 构建一个简单的WCF应用 步骤一:构建整个解决方案 步骤二:创建服务契约 步骤三:创建服务 步骤四:通过自我寄宿的方式寄宿服务 步骤五:创建客户端调用服务 步骤
WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows通信开发平台
其实不太了解为什么第21集才讲这个Binding,下面都是一些概念性的东西,不过作为一个入门视频,了解一下也无妨吧。
前面的两篇文章(《从两个重要的概念谈起:Identity与Principal[上篇]》和《从两个重要的概念谈起:Identity与Principal[下篇]》)主要探讨基于安全主体的授权。通过这些介绍我们知道:如果我们在实施授权的时候,当前线程的安全主体能够被正确设置,我们就可以正确地完成授权。基于相同的原理,对于WCF的服务授权,如果正确的安全主体能够在服务操作被执行之前被正确设置到当前线程,借助于这个安全主体,我们不但可以采用命令式编程的方式将授权逻辑写在相应的操作中,也可以采用声明式编程的方式将授权策
如果一个类型,不一定是数据契约,和给定的数据契约具有很大的差异,而我们要将该类型的对象序列化成基于数据契约对应的XML。反之,对于一段给定的基于数据契约的XML,要通过反序列化生成该类型的对象,我们该如何实现这样的场景? 比如下面定义了两个类型Contact和Customer,其中Customer是数据契约,Contact的Sex属性相当于Customer的Gender属性,而Contact的FullName可以看成是Customer的FirstName和LastName的组合。现在我们要做的是将一个Co
本系列适合新手,从0学起。共同学习,共同探讨。 基础概念 SOA:就是采用Web服务的架构 它有一些特性,需要了解: 1、自治的:不依赖于访问它的客户端和其他服务,可以独立的进行部署和实施版本策略和安全策略。 2、依赖于开放的标准:让不同的厂商开发的服务能够进行互操作。 3、支持跨平台 4、鼓励创建可组合的服务 5、鼓励服务的复用 6、强调松耦合:契约的实现 WCF应用实例,帮助理解WCF服务的基本结构 过程: 1、构建解决方案 Contracts:定义服务的契约(接口部分) Services:定义服务的实
本章节将进行元数据和异常处理的介绍,这部分内容概念型比较强,可以快速浏览一下就好。 客户端和服务器借助于终结点进行通信,服务的提供者通过一个或者多个终结点将服务发布出来,服务的消费者则通过创建与之匹
在WCF中,每个终结点都包含两个不同的地址——逻辑地址和物理地址。逻辑地址就是终结点Address属性表示的地址。至于物理地址,对于消息发送放来讲,就是消息被真正发送的目的地址;而对于消息的接收放来讲,就是监听器真正监听的地址。 一、服务端的物理地址 在默认的情况下,终结点的逻辑地址和物理地址是同一个URI。换句话说,终结的逻辑地址是必须的,如何物理地址没有指定的,默认使用逻辑地址作为物理地址。对于消息接收方的终结点来讲,物理地址就是监听地址,通过ServiceEndpoint的ListenUri表示:
Microsoft最近发布了SvcPerf,它是一个端到端的基于Windows事件追踪(ETW)的追踪查看器,可用于基于清单的追踪。你能够通过这个工具查看ETL文件或者实时跟踪会话,还能创建自定义的查询。 这个端到端的追踪分析工具基于Linq over Traces(TX),可以用于WCF、WF以及其他基于活动的ETW跟踪。你能够通过这个工具查看ETL文件或者实时跟踪会话,还能创建自定义的查询。 还可以在命令行提示符中使用SvcPerf转储原始的事件或者使用Linq over Traces(TX)执行自定义
从VS2005推出WCF以来,WCF逐步取代了Remoting, WebService成为.NET上分布式程序的主要技术。WCF统一的模型整合了以往的 WebService、Remoting、MSMQ
在《模拟(Impersonation)与委托(Delegation)》一文中,我们对模拟和委托这两个概念以及相关编程实现进行了详细说明。如果将模拟使用在WCF上面,就意味着WCF可以模拟客户端身份(而不是启动寄宿进程的Windows帐号)执行服务操作。这篇文章主要介绍WCF关于模拟的编程。 一、命令式模拟编程 如果我们有一个具有模拟级别为Impersonation或者Delegation的WindowsIdentity,我们就可以通过调用其Impersonate对其进行身份模拟。在采用WCF认证的情况下,我
这部分主要涉及企业级应用的安全问题,一般来说安全框架主要提供3个典型的安全行为:认证、授权和审核。除了典型的安全问题,对于一个以消息作为通信手段的分布式应用,还需要考虑消息保护(Message Pro
本文转载自https://msdn.microsoft.com/zh-cn/library/ff384253.aspx,主要内容是对msdn中对AppFabric介绍内容的整合以及一些自己的理解。
在本系列的每篇文章中,我多次提到WCF是一个极具可扩展性的分布是消息通信框架。为了让读者对WCF Extension有一个总体的的认识,在这里我会简单列举了我们经常使用的绝大部分的扩展点,以及通过这些扩展点能够解决实现项目开发中的那些问题。 有一点需要特别提醒的是:对WCF extensions的灵活应用依赖于你对channel layer和service mode dispatching system的深入理解。所以,如果你对channel layer不甚了解,可以参阅本系列的第一个部分(WCF是如何通过
近半年以来,一直忙于我的第一本WCF专著《WCF技术剖析(卷1)》的写作,一直无暇管理自己的Blog。在《WCF技术剖析(卷1)》写作期间,对WCF又有了新的感悟,为此以书名开始本人的第三个WCF系列。本系列的目的在于对《WCF技术剖析》的补充,会对书中的一些内容进行展开讲述,同时会囊括很多由于篇幅的原因忍痛割弃的内容。 [第1篇] 通过一个ASP.NET程序模拟WCF基础架构 本系列的第一篇,我将会对WCF的基本架构作一个大致的讲解。不过,一改传统对WCF的工作流程进行平铺直叙,我将另辟蹊径,借助于我
在上一篇分布式系统系列中《分布式系统中的必备良药 —— 服务治理》中阐述了服务治理的一些概念,那么与服务治理配套的必然会涉及到RPC框架。在当前互联网的大背景下,RPC的运用应该大家或多或少都有涉及,国内外的RPC框架也是百花齐放。那么各个RPC框架各自有什么特点,另外RPC的核心点又是哪些,我们该如何去选择是本文需要讲述的内容。本文会围绕.Net技术栈来展开,暂不讨论诸如dubbo之类对.Net 不太友好的框架。
微软.NET的最新版本,.NET Framework 3.0,为开发下一代业务解决方案软件系统开启了新的可能。它的设计目标是:提高生产力,降低基础设施复杂性,提供一个一致的元系统,让企业级服务、工作流解决方案和用户体验软件系统的开发更容易。 在我和大量的构架师讨论的过程中,我听到解决方案构架师非常关心安全、开放的标准、互操作性、面向服务的构架、关键技术间的关系(例如Workflow Foundation和Biztalk)和生产力。在这篇文章当中,我将按照构架师社区最感兴趣的领域来逐一介绍.NET 3.0。
在这篇文章中,我们对信道分发器本身作一个深入的了解,首先来看看它具有哪些可供扩展的组件,以及我们可以针对信道分发器对WCF实现哪些可能的扩展。 目录: ErrorHandler & ServiceThrottle ChannelInitializer IncludeExceptionDetailInFaults ManualAddressing MaxPendingReceives ReceiveSynchronously
WCF中传输的数据不想传统的面向对象编程,它只传递了一些对象的属性,但是自身并不知道自己属于什么对象,所以,他没有子类和父类的概念,因而也就没有Is-a的关系,所以在WCF中,如果想维持这种继承关系,就需要做一些特殊的处理了。 假设有如下定义, namespace KnownTypeExampleInterface { [DataContract] public class Employee { [DataMember] public string N
通过前面一系列的博文(《WCF 并发(Concurrency)的本质》、《并发中的同步》、《实践重于理论》、《并发与实例上下文模式》、《回调与并发》、《ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗[上篇]》、《ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗[下篇]》、《控制并发访问的三道屏障[上篇]》和《控制并发访问的三道屏障[下篇]》),我对WCF的并发体系进行了深入的剖析,在接下来的博文中,我只要专注于WCF的可靠会话
在《实例篇》中,我通过可靠会话成功地进行了美女图片的传输,相信大家在保了眼福之余,会对WCF的可靠会话的功用具有一个深刻的认识。实际上,这涉及到WS中一个重要的概念——可靠消息传输(RM:Reliable Messaging)。如果想对可靠会话有一个深入的认识,对可靠消息传输的了解是必须的。 一、可靠消息传输(Reliable Messaging) 我们可以将一个通过WCF构建的分布式应用划分为两个部分,即客户端应用和服务端应用,它们之间的交互方式即采用某种MEP的消息交换。在这里,我们需要通过可靠消息传输
浏览器安全模型规定,XMLHttpRequest、框架(frame)等只能在一个域中通信。从安全角度考虑,这个规定很合理;但是,也确实给分布式(面向服务、混搭等等本周提到的概念)Web开发带来了麻烦。如果尝试从不同的域请求数据,会出现安全错误。如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误。 源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作
昨天早上去医院做入职体检,被告知要预约,本以为是要排队,我连视频都准备好了。。。结果就回来了。下午去了新公司那边找房子,2了,因为公司提供了班车列表,我既然就只在班车所经过的几个地方找,却遗漏了公司附近这个重要的地址。最后找了一个“江景房”,上阳台就能看到钱塘江。价格和现在的比翻了一倍,累了,不想找了。
在本系列的第一部分、第二部分中,我们对WCF的channel layer进行了深入的讨论。我们接下来继续讨论WCF的service mode layer。本篇文章着重介绍service 端的ServiceMode。写作此篇文章旨在达到以下两个目的: 希望读者对ServiceMode有一个大致的了解,结合前面介绍的channel layer的相关知识,帮助读者了解WCF的整个实现机制和执行的流程。 介绍ServiceMode涉及到的绝大部分extension point,让读者在具体的项目开发中能够根据实
任何一个程序都需要运行于一个确定的进程中,进程是一个容器,其中包含程序实例运行所需的资源。同理,一个WCF服务的监听与执行同样需要通过一个进程来承载。我们将为WCF服务创建或指定一个进程的方式称为服务寄宿(Service Hosting)。服务寄宿的本质通过某种方式,创建或者指定一个进程用以监听服务的请求和执行服务操作,为服务提供一个运行环境。 服务寄宿的方式大体分两种:一种是为一组WCF服务创建一个托管的应用程序,通过手工启动程序的方式对服务进行寄宿,所有的托管的应用程序均可作为WCF服务的宿主,比如C
第1章 WCF简介 (WCF Overview) 1.1 SOA的基本概念和设计思想 1.2 WCF是对现有Windows平台下分布式通信技术的整合 1.3 构建一个简单的WCF应用 1.3.1 步骤一 构建整个解决方案 1.3.2 步骤二 创建服务契约 1.3.3 步骤三 创建服务 1.3.4 步骤四 通过自我寄宿的方式寄宿服务 1.3.5 步骤五 创建客户端调用服务 1.3.6 步骤六 通过IIS寄宿服务(S104) 第2章 地址(Address) 2.1. 统一资源标识符(URI) 2.1.1. HT
dynamic是FrameWork4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性。比如,即使你对GetDynamicObject方法返回的对象一无所知,你也可以像如下那样进行代码的调用,编译器不会报错:
Windows Server AppFabric 扩展了 Windows Server 以为 Web 应用程序和中间层服务提供增强的托管、管理和缓存功能。 AppFabric 托管功能向 Internet 信息服务 (IIS)、Windows Process Activation Service (WAS) 和 .NET Framework 4 添加了服务管理扩展。其中包括托管服务和托管管理工具,这些工具使部署、配置和管理基于 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 的服务变得更加容易。 AppFabric 缓存功能向 Windows Server 添加了一个分布式的内存中对象缓存,它使扩展高性能 .NET 应用程序(特别是 ASP.NET 应用程序)变得更加容易。
作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象。站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象。如果站在WCF服务端运行时框架来说,终结点实际上指代的是终结点分发器(EndpointDispatcher)。而ServiceEndpoint与EndpointDispatcher是一一匹配的,并且前者是创建后者的基础。而终结点分发器具有自己的运行,即分发运行时(DispatchRuntime)。 目录 一、终结点分发器(EndpointDisp
WCF 数据服务默认使用IIS 作为 Data Service 宿主,很显然这是个极好的选择,我们可以利用 IIS 强大的基础功能。除此以外,我们页可以像 WCF 那样直接使用 Self-Host 模式。可以使用 WCF ServiceHost 或 WebServiceHost 类承载 WCF Data Services,具体参见MSDN http://msdn.microsoft.com/zh-cn/library/cc668805.aspx WCF Data Services / WCF Behavio
我们知道,WCF是MS基于SOA建立的一套在分布式环境中各个相对独立的Application进行Communication的构架。他实现了最新的基于WS-*规范。按照SOA的原则,相对独自的业务逻辑以service的形式封装,调用者通过Messaging的方式调用Service。对于承载着某个业务功能的实现的Service应该具有Context无关性、甚至是Solution无关性,也就是说个构成Service的operation不应该绑定到具体的调用上下文,对于任何调用,具有什么样的输入,就会有与之对应的输出。因为SOA的一个最大的目标就是尽可能地实现重用,只有具有Context无关性/Solution无关性,Service才能实现最大限度的重用。此外Service的Context无关性/Solution无关性还促进了另一个重要的面向服务的特征的实现:可组合性,把若干相关细粒度的Service封装成一个整体业务流程的Service。
领取专属 10元无门槛券
手把手带您无忧上云