摘要: 在构建高性能、可伸缩的应用程序时,必定会采用异步操作来提升应用程序性能,改善用户体验,异步操作与线程池结合允许使用很少的线程执行许多的操作。CLR中提供了一种异步操作的模式即异步编程模式。 1.异步编程模型简介 异步编程模式中的方法都是采用BeginXxx方法开始执行异步操作和EndXxx方法结束异步操作。BeginXxx方法都接受一个AsyncCallback委托类型的回调函数和回调函数需要使用的一个object类型的数据对象以及其他的一些操作参数,并且该方法会返回一个实现了IAsyncResult接口类型对象,EndXxx方法都接受一个IAsyncResult接口的类... 阅读全文
posted @ 2012-12-25 21:57 pengstone 阅读(2983) 评论(1) 推荐(4) 编辑
摘要: 在C#4.0之前需要执行一个复杂的异步操作时,只能使用CLR线程池技术来执行一个任务。线程池执行异步任务时,不知道任务何时完成,以及任务的在任务完成后不能获取到返回值。但是在C#4.0中引人了一个的任务(System.Threading.Tasks命名空间的类型)机制来解决异步操作完成时间和完成后返回值的问题。 1.使用Task类创建并执行简单任务 通过使用Task的构造函数来创建任务,并调用Start方法来启动任务并执行异步操作。创建任务时,必须传递一个Action或Action<Object>类型的委托回调方法,可以选择的传递任务执行时说需要的数据对象等。Task类... 阅读全文
posted @ 2012-12-23 20:49 pengstone 阅读(40048) 评论(7) 推荐(12) 编辑
摘要: 在应用程序中有许多复杂的任务,对于这些任务可能需要使用一个或多个工作线程或I/O线程来协作处理,比如:定时任务、数据库数据操作、web服务、文件的处理等。这些任务可能会非常耗费时间,为了是用户界面能及时响应,就会启用一个其他线程来并行处理任务。线程的创建和销毁操作是非常昂贵的,过多的线程会带来内存资源的消耗以及操作系统调度可执行线程并执行上下文切换导致的时间消耗,所以过多线程会损坏应用程序的性能。如果创建过的线程能反复使用就能解决上面的一些问题,因此,CLR使用了线程池来管理线程。 1. 线程池基础 每个CLR 拥有一个线程池,这个线程池由CLR控制的APPDom... 阅读全文
posted @ 2012-12-18 21:05 pengstone 阅读(5403) 评论(0) 推荐(1) 编辑
摘要: 1.线程基础知识 进程是应用程序运行时的一个实例,它包含:一个内核对象,Windows 操作系统用他来管理进程;一个地址空间,包含所有程序集可执行代码和数据以及对线程堆栈和堆的内存分配。进程拥有自己的属性以及调度优先级,当系统创建一个进程时,会自动创建一个主线程来执行进程地址空间里面的代码,主线程可以创建多个子线程。进程地址空间中的代码没有任何线程执行时,系统就会终止进程和释放地址空间。每个进程至少有一个或多个线程,每个线程都有自己的一个执行上下文环境即一组 CPU 寄存器和堆栈,多个运行线程都在进程的地址空间中同时执行代码,系统会采用轮询的方式为每个线程分配CPU时间片,线程之间就... 阅读全文
posted @ 2012-12-13 22:56 pengstone 阅读(3886) 评论(0) 推荐(2) 编辑
摘要: 一、实例上下文与实例上下文模式 实例上下文管理着服务实例的生命周期。他有 System.ServiceModel.InstanceContext 类型表示,其中GetServiceInstance 和ReleaseServiceInstance 分别用于获得和释放服务实例。WCF 中有单调(PerCall)、会话(PerSession)和单例(Single)三种实例上下文模式。在服务行为特性(ServiceBehaviorAttribute)类型里有一个实例上下文模式(InstanceContextMode)的属性,通过该属性指定服务实例上下文模式。 在WCF中通过实例上下文提供者封装服务实例 阅读全文
posted @ 2012-09-01 23:55 pengstone 阅读(884) 评论(0) 推荐(0) 编辑
摘要: 在 WCF 服务中,WCF 的通信可以理解为一种消息交换,消息交换就需要有契约使交换的双方达成一致理解,服务契约的操作描述了需要采用的消息交换模式和消息结构,数据契约就用来规范整个通信过程的消息结构。一、数据契约特性(DataContractAttribute)和数据成员特性(DataMemberAttribute) 在 WCF 中定义了用在类(class)、枚举(enum)和结构(struct)上的 System.Runtime.Serialization.DataContractAttribute 特性,它标识类型为数据契约,DataContractAttribute 是不可以继承的,因. 阅读全文
posted @ 2012-08-12 23:13 pengstone 阅读(3451) 评论(0) 推荐(1) 编辑
摘要: 一、WCF 中的绑定和绑定模型 作为终结点的三要素之一的绑定,它创建信道层的信道栈。WCF 是基于消息的通信方式,在信道层中,若干信道首尾相连组成了信道栈,它提供一个消息传输和处理的通道。通过信道、信道监听器、信道工厂等元素共同构成WCF 绑定模型,在整个绑定模型中,信道和信道栈位于最底层。WCF 绑定模型图二、信道、信道监听器、信道工厂通信对象(CommunicationObject ) 在WCF 中每种信道都是直接或间接实现了 System.ServiceModel.Channels.IChannel 接口,而IChannel 类型又实现了 System.ServiceModel.ICom 阅读全文
posted @ 2012-08-11 22:42 pengstone 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: 在 .NET 开发中经常需要读取和操作XML文件,例如:操作配置文件(web.config和app.config)、读取业务设置的xml文件等。以前都喜欢用DataSet直接读取或写入xml,当文件小的时候,读取效率还能接受,但是当文件很大的时候,读取就变得很慢了。闲暇之于就对 XMLReader 、 XMLDocument和DataSet 读取XML文件进行简单总结,对效率进行简单比较。1、XMLReader 读取XML文件 XMLReader 提供对 XML 数据进行快速、非缓存、只进访问的读取器。XMLReader 只能读取xml文件,需要我们自己控制怎样获取相应的xml节点的信息,适. 阅读全文
posted @ 2012-08-08 20:32 pengstone 阅读(2667) 评论(0) 推荐(0) 编辑
摘要: 一、WCF中的地址 在 WCF 服务编程中,终结点是其通信的核心对象,服务通过相应的终结点发布出来,客户端通过与服务终结点匹配的终结点对服务进行调用。终结点由地址(Address)、绑定(Binding)、和契约*(Contract)三要素构成,地址在WCF的通信中既用于定位服务,也提供额外的寻址信息和进行服务认证的服务身份信息。 终结点地址的核心就是一个URL ,它作为终结点的唯一标识。URL 就是统一资源标识,它唯一地标识一个网络资源和资源所处的位置以及访问方式(访问资源所用的网络协议)。URL 的格式如下:[传输协议(Scheme)]://[主机名称|域名|IP地址] : [端口]/[资 阅读全文
posted @ 2012-08-05 23:21 pengstone 阅读(1686) 评论(0) 推荐(1) 编辑
摘要: 一、初识契约(Contract) 契约简单讲就是服务端和客户端进行消息交换定义的一种交换协议。在wcf中服务契约的定义涉及到System.ServiceModel.ServiceContractAttribute和 System.ServiceModel.OperationContractAttribute这两个自定义特性。其中应用在ServiceContractAttribute服... 阅读全文
posted @ 2012-08-03 00:21 pengstone 阅读(914) 评论(0) 推荐(0) 编辑