C# Application Domain的隔离性

评论(0)浏览(189)分类:Asp.Net/C#/WCF
C# Application Domain的隔离性  Application Domain可以看作是一个Assembly的逻辑容器。在程序执行过程中,如果遇到需要的Type并没有定义在已经加载的Assemblies 中,CLR会把相应的Assembly加载的该Application Domain中。每个Application Domain都有一个属于自己的加载器堆(Loader Heap),用于维护从Application Domain创建以后所用到的所有的Type,以及这些Type对应的方..

C#字符串的驻留(String Interning)

评论(0)浏览(97)分类:Asp.Net/C#/WCF
C#字符串的驻留(String Interning)  关于C#字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:static void Main(string[] args) { string str1 = ABCD1234; string str2 = ABCD1234; string str3 = ABCD; string st..

分布式事务-SOA事务控制方式

评论(0)浏览(140)分类:Asp.Net/C#/WCF
分布式事务-SOA事务控制方式  在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑, 均实现在相应的服务之中。服务对外提供统一的接口,服务之间采用标准的通信方式进行交互,各个单一的服务精又有效的组合、编排成为一个有机的整体。在这样 一个分布式系统中某个活动(Activity)的实现..

分布式事务-于DTC的分布式事务管理模型

评论(0)浏览(181)分类:Asp.Net/C#/WCF
分布式事务-于DTC的分布式事务管理模型  通过上一篇的 介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事 务管理系统,这是一个复杂的架构体系。WCF,作为Windows平台下基于SOA的分布式框架,对分布式事务提供全面的支持。不过,WCF并不是另起炉 灶,而是充分地利用了Windows现有的..

分布式事务-System.Transactions事务详解[下篇]

评论(0)浏览(118)分类:Asp.Net/C#/WCF
分布式事务-System.Transactions事务详解[下篇]  在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法。该方法对用于创建基于现有Transaction对 象的依赖事务(DependentTransaction)。不像可提交事务是一个独立的事务对象,依赖事务依附于现有的某个事务(可能是可提交事 务,也可能是依赖事务)。依赖事务可以帮助我们很容易地编写一些事务型操作,当..

分布式事务-System.Transactions事务详解[上篇]

评论(0)浏览(145)分类:Asp.Net/C#/WCF
分布式事务-System.Transactions事务详解[上篇]  在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务。.NET 2.0为了带来了全新的事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集中的System.Transactions命名空间下,我们直接称基于此的事务为System.Transactions事务。System.Transactions事务编程模型使我们可以显式(通过System.Transactions.Tra..

分布式事务-基于DTC的分布式事务实现

评论(0)浏览(153)分类:Asp.Net/C#/WCF
分布式事务-基于DTC的分布式事务实现  [续上篇] 当基于LTM或者KTM的事务提升到基于DTC的分布式事务后,DTC成为了本机所有事务型资源管理器的管理者;此外,当一个事务型操作超出了本机的范 围,出现了跨机器的调用后,本机的DTC需要于被调用者所在机器的DTC进行协助。上级对下级(包括本机DTC对本机所有资源管理器,以及上下级DTC) 的管理得前提是下级在上级那里登记,即事务登记..

WCF运行时框架的构建与扩展目录

评论(0)浏览(85)分类:Asp.Net/C#/WCF
WCF运行时框架的构建与扩展目录WCF服务端运行时框架的构建WCF服务端运行时架构体系详解[上篇]WCF服务端运行时架构体系详解[中篇]WCF服务端运行时架构体系详解[下篇]WCF服务端运行时架构体系详解[续篇]WCF客户端运行框架的构建WCF客户端运行时架构体系详解[上篇]WCF客户端运行时架构体系详解[下篇]WCF扩展通过四大行为对WCF的扩展[原理篇]通过四大行为对WCF的扩展[实例篇]通过自..

通过自定义ServiceHost实现对WCF的扩展[实例篇]

评论(0)浏览(139)分类:Asp.Net/C#/WCF
通过自定义ServiceHost实现对WCF的扩展[实例篇]  在《原理篇》 中我们谈到了通过自定义ServiceHost对WCF进行扩展的本质,以及在IIS/WAS寄宿情况下ServiceHostFactory的作用。接 下来通过一个具体的例子来演示如何通过WCF扩展实现以Unity为代表的IoC框架的集成,以及应用该扩展的ServiceHost和 ServiceHostFactory如何定义。[源代码从这里下载]目录一、IoC/DI简介步骤一、自定义InstanceProv..

通过自定义ServiceHost实现对WCF的扩展[原理篇]

评论(0)浏览(143)分类:Asp.Net/C#/WCF
通过自定义ServiceHost实现对WCF的扩展[原理篇]  除了采用自定义特性声明(服务行为、契约行为和操作行为)或者配置的方式(服务行为和终结点行为)应用自定义的行为之外,我们还可以通过自定义ServiceHost来应用这些自定义的行为。自定义ServiceHost是对WCF的服务端进行扩展的一种常用的方式。  在创建ServiceHost的时候,WCF会加载服务相关的配置并将其作为服务的描述信息附加到Service..

通过“四大行为”对WCF的扩展[实例篇]

评论(0)浏览(133)分类:Asp.Net/C#/WCF
通过“四大行为”对WCF的扩展[实例篇]  为了让读者对如何利用相应的行为对WCF进行扩展有个深刻的认识,在这里我提供一个简单 的实例演示。本实例模拟的场景是这样的:我们创建一个支持多语言的资源服务,该服务旨在为调用者提供基于某种语言的文本型资源。但是,我们不希望客户端在 每次调用服务的时候都显式地制定具体的语言,而是根据客户端服务调用线程表示语言文化的上下文来自..

通过“四大行为”对WCF的扩展[原理篇]

评论(0)浏览(109)分类:Asp.Net/C#/WCF
通过“四大行为”对WCF的扩展[原理篇]  整个WCF框架由两个基本的层次构成,即服务模型层和信道层。对信道层的扩展主要通过针对绑定的扩展实现,具体来说就是自定义绑定元素,以及相关的信道管理器(信道监听器和信道工厂)、信道来改变对消息的处理和传输方式。  而对于服务模式型层的扩展则主要体现服务端和客户端运行时框架的定制,进而让WCF按照我们希望的方式进行运作。由于..

WCF客户端运行时架构体系详解[上篇]

评论(0)浏览(70)分类:Asp.Net/C#/WCF
WCF客户端运行时架构体系详解[上篇]  客户端调用WCF服务的方式不外乎有两种:其一、通过代码生成工具(比如SvcUtil.exe)导入服务的元数据生成服务代理相关的类型;其二、通过ChannelFactoryTChannel创建服务代理对象。对于前者,生成的服务代理是一个继承自ClientBaseTChannel的 类型。对于这样一个服务代理对象,其内部本质上还是借助于ChannelFactoryTChannel创建真正用于进行..

WCF客户端运行时架构体系详解[下篇]

评论(0)浏览(63)分类:Asp.Net/C#/WCF
WCF客户端运行时架构体系详解[下篇]  当基于某个终结点创建的ChannelFactoryTChannel被 开启的之后,位于服务模型层的客户端运行时框架被成功构建。站在编程的角度看ChannelFactoryTChannel,它就是一个 创建用于服务调用的服务代理对象的工厂。由于服务调用需要借助于服务代理来完成,我们很有必要从整个客户端运行架构层面来了解服务代理和基于服务代理的服 务调用是如何实现的..

WCF技术剖析目录

评论(0)浏览(106)分类:Asp.Net/C#/WCF
WCF技术剖析目录  本系列的目的在于对《WCF技术剖析》的补充,会对书中的一些内容进行展开讲述,同时会囊括很多由于篇幅的原因忍痛割弃的内容。[第1篇] ASP.NET模拟WCF基础架构本系列的第一篇,我将会对WCF的基本架构作一个大致的讲解。不过,一改传统对WCF的工作流程进行平铺直叙,我将另辟蹊径,借助于我们熟悉的ASP.NET作为请求处理平台,通过一个简单的托..

WCF服务端运行时架构体系详解(二)

评论(0)浏览(112)分类:Asp.Net/C#/WCF
WCF服务端运行时架构体系详解(二)  在这篇文章中,我们对信道分发器本身作一个深入的了解,首先来看看它具有哪些可供扩展的组件,以及我们可以针对信道分发器对WCF实现哪些可能的扩展。目录:ErrorHandler ServiceThrottleChannelInitializerIncludeExceptionDetailInFaultsManualAddressingMaxPendingReceivesReceiveSynchronouslyIsTransactedReceive MaxTransactedBatchS..

WCF事务编程(三)

评论(0)浏览(152)分类:Asp.Net/C#/WCF
WCF事务编程(三)  在WCF事务编程模型下,通过服务契约确定事务流转的策略(参阅《上篇》),通过事务绑定实施事务的流转(参阅《中篇》)。但是,对于事务绑定接收到并成功创建的事务来说,服务操作的执行是否需要自动登记到该事务之中,以及服务操作采用怎样的提交方式,这就是服务端自己说了算了。正因为如此,WCF通过服务(操作)行为的形式定义事务的登记..

WCF事务编程(二)

评论(0)浏览(135)分类:Asp.Net/C#/WCF
WCF事务编程(二)  通过将TransactionFlowAttribute特性应用在服务契约的某个操作之上,并指定相应的TransactionFlowOption枚举直,仅仅定义了事务流转的策略而已。或者说,通过这种方式确定对事物流转的一种意愿,客户端是否愿意将当前事务流出,服务端是否愿意接受流入的事务,可以通过TransactionFlowAttribute特性进行控制。所以说,服务操作上定义个Trans..

WCF事务编程(一)

评论(0)浏览(163)分类:Asp.Net/C#/WCF
WCF事务编程(一)  WCF事务编程其实很简单,可以用三句话进行概括:通过服务契约决定事物流转(Transaction Flow)的策略;通过绑定实施事务的流转;通过服务行为控制事务的相关行为。本篇文章着重介绍如果通过TransactionFlowAttribute特性定义事务流转策略。  契约时是一种双边协定,是双方就某个关注点达成的一种共识。对于分布式事务的实现来讲,首先需要..

WCF服务端运行时架构体系详解(三)

评论(0)浏览(82)分类:Asp.Net/C#/WCF
WCF服务端运行时架构体系详解(三)  作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象。站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象。如果站在WCF服务端运行时框架来说,终结点实际上指代的是终结点分发器(EndpointDispatcher)。而ServiceEndpoint与EndpointDispatcher是一一匹配的,并且前者是创建后者的基础。而终结点分发器具有..

WCF服务端运行时架构体系详解(四)

评论(0)浏览(73)分类:Asp.Net/C#/WCF
WCF服务端运行时架构体系详解(四)  终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行。如果从服务描述的角度来看,操作是一个OperationDescription对象。而服务端分发运行时中的操作则代表的是一个DispatchOperation对象。作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建。而当ServiceH..

WCF服务端运行时架构体系详解(一)

评论(0)浏览(80)分类:Asp.Net/C#/WCF
WCF服务端运行时架构体系详解(一)  WCF的服务端架构体系又可以成为服务寄宿端架构体系。我们知道,对于一个基于某种类型的服务进行寄宿只需要使用到一个唯一的对象,那就是ServiceHost。甚至在某种语境下,我们所说的服务实际上就是指的对应的ServiceHost对象。整个服务寄宿过程包括两个阶段,即服务描述的创建和服务端运行框架的建立。而第一个阶段创建的服务描述是为了第二个..

WCF绑定模型目录

评论(0)浏览(114)分类:Asp.Net/C#/WCF
WCF绑定模型目录  从整个基础构架的层次结构上讲,WCF可以分成两个部分:服务模型层(Service Mode Layer)和信道层(Channel Layer)。服务模型层建立在信道层之上,提供了一个统一的、可扩展的编程模型。信道层则通过绑定(Binding)建创的信道栈为消息通信提供了一个传输、处理的通道。[第1篇] WCF Binding模型简介  对于一个分布式应用的开发与设计来说..

WCF Binding模型-从元素绑定认识系统预定义绑定

评论(0)浏览(58)分类:Asp.Net/C#/WCF
WCF Binding模型-从元素绑定认识系统预定义绑定  由于绑定对象由一系列有序的绑定元素组成,绑定元素最终决定着信道栈中信道的组成,而信道的组成最终又决定了信道栈对消息进行处理的方式和能力,所 有要确定绑定的特性和能力,我们可以通过查看其绑定元素的构成来一窥究竟。为此我们我们写了一个简单的方法,用于列出一个具体的绑定对象所有的绑定元素, 在介绍一个个具体的系统绑定中,我..

WCF Binding模型-元素绑定

评论(0)浏览(107)分类:Asp.Net/C#/WCF
WCF Binding模型-元素绑定  在上面的内容中,先后介绍了信道、信道管理器、信道监听器和信道工厂。从对象的创建来讲,信道管理器是信道的创建者。说的再具体点,客户端的信道通过信道工厂创建,服务端的信道通过信道监听器创建。但是信道工厂和信道监听器又是如果被创建出来的呢?  在一开始就已经说过,作为终结点三要素的绑定对象实现了所有的通信细节,并且通过创..

WCF Binding模型-信道工厂

评论(0)浏览(75)分类:Asp.Net/C#/WCF
WCF Binding模型-信道工厂  由于信道管理器在客户端和服务端所起的不同作用,分为信道监听器和信道工厂。和服务端的信道监听其相比,处于客户端的信道工厂显得简单。从名称就可以看得出来,信道工厂的作用就是单纯的创建用于消息发送的信道。我们先来看看与信道工厂相关的一些接口和基类的定义。一、信道工厂相关的接口和基类  对于信道监听器,WCF定义了两个接口:I..

WCF Binding模型-信道监听器

评论(0)浏览(90)分类:Asp.Net/C#/WCF
WCF Binding模型-信道监听器  信道管理器是信道的创建者,一般来说信道栈的中每个信道对应着一个信道管理器。基于不同的消息处理的功能,将我们需要将相应的信道按照一定的顺序能 组织起来构成一个信道栈,由于信道本身是由信道管理器创建的,所以信道对应的信道管理器也构成一个信道管理器栈,栈中信道管理器的顺序决定由它所创建信道 的顺序。  对于WCF的信道层来说,..

WCF Binding模型-信道与信道栈

评论(0)浏览(73)分类:Asp.Net/C#/WCF
WCF Binding模型-信道与信道栈  WCF采用基于消息交换的通信方式,而绑定则实现了所有的通信细节。绑定通过创建信道栈实现了消息的编码与传输,以及对WS-*协议的实现。在这一 节中,我们就来着重介绍WCF中的信道和信道栈。在正式开始对信道和信息栈的介绍之前,我们先来介绍两个重要的类 型:CommunicationObject和DefaultCommunicationTimeouts。一、 CommunicationObject与..

WCF Binding模型简介

评论(0)浏览(104)分类:Asp.Net/C#/WCF
WCF Binding模型简介一、 信道层与服务模型层(Channel Layer and Service Mode Layer)  对 于一个分布式应用的开发与设计来说,通信问题是不得不考虑,同时也是最为复杂、最难实现的问题。在过去的若干年中, 微软先后推出了一系列广受欢迎的通信技术, 比如DCOM、Enterprise Service、.NET Remoting、XML Web Service、MSMQ等等。这些技术提供了各自的编程模型,是..

C#获取本月最后一天

评论(0)浏览(91)分类:Asp.Net/C#/WCF
C#获取本月最后一天  C#获取当前月的最后一天,算法为:生成本月的第一天的DateTime对象,然后增加一月,再减去一天 即可DateTime dt = DateTime.Now;int dtLastDay = new DateTime(dt.Year, dt.Month, 1).AddMonths(1).AddDays(-1).Day;