本文的主要结构为:1)WCF实例管理的概述2)WCF服务实例激活类型三种方式概述3)实现代码分析及运行结果4)源码下载5)下一篇计划6)参考说明
(1)WCF实例管理的概述(what)
1.1实例管理是WCF使用的一系列技术的总称,通过它可以将客户端的请求绑定到服务实例上,并根据客户端请求的类型以确定服务实例的管理方式。
1.2WCF支持三种实例激活的类型:单调服务(Pcr-Call Service)会为每次的客户端请求分配(销毁)一个新的服务实例。
会话服务(Sessionful Service)则为每次客户端连接分配一个服务实例。
单例服务(Singleton Service),所有的客户端会为所有的连接和激活对象共享一个相同的服务实例。
(2)WCF服务实例激活类型三种方式概述
2.1单调服务(Call Service):
1.单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。服务实例的生存周期紧紧限制于一次调用的开始与结束之间。客户端的每次请求都会产生新的服务实例来响应这个调用。
2.执行步骤如下:图4-1单调服务实例化模型图
3.[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]特性只能应用到类上。
4.如果使用了昂贵的资源,如数据库连接等非托管资源,继承IDisposable接口,实现接口定义的方法Dispose()方法显示释放资源。但是也有弊端,频繁地创建与销毁实例,仍然会对性能造成一定的影响。
5.对于WCF服务而言,单调服务可以算是最佳的实例激活模式。单调服务的一个最重要优势在于它能够节省资源,支持系统的可伸缩性。另外在事务编程与队列服务中优势更为明显,在事务编程中新建服务实例,减少实例状态的同步;而消息队列,单调服务能够建立服务实例与队列消息之间的简单映射。
2.2会话服务(Sessionful Service)
1.会话服务(Sessionful Service):则为每次客户端连接分配一个服务实例。为每个客户端创建一个专门的服务实例。只要会话没有结束,该实例就不会被销毁。 对于会话服务而言,是一个客户端代理对应一个服务实例。也就是说,会话服务中的服务是与代理相对应的,而不是对应于一个客户端。
2.服务配置[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]之后,需要在服务契约一级配置[ServiceContract(SessionMode=SessionMode.Allowed)],服务元数据将包含SessionMode值.
3.客户端的WCF反序列化后会包含此信息,来确定服务是否使用了会话模式,SessionMode为枚举类型:
public enum SessionMode
{
Allowed,
Required,
NotAllowed
}
4.会话服务存在可伸缩性的问题。由于每个客户端都需要维护一个会话,需要占用较多的资源来保存服务会话状态。如果存在多个独立的客户端,则创建专门的服务实例的代价太大。
5.应该避免将单调服务与会话契约混合定义在相同的会话服务类型中,会话应该保证是可靠的,一个实现了会话契约的服务,它包含的所有终结点所公开的契约都应该使用支持可靠传输会话的绑定。
6.InactivityTimeout可以配置一个新的空闲超时值,服务实例空闲时间超过这个范围时候就会终止会话。InactivityTimeout属性的默认值为10分钟。不能将该值设置为小于或等于0的值,否则会抛出ArgumentOutOfRangeException异常。
2.3单例服务(Singleton Service)
1.设计模式中最简单和容易理解的就是单例(单件)模式(SingleTon),单例服务(Singleton Service)也是一种单件模式的实践应用的例子。单例服务(Singleton Service)就是针对所有客户端而言,都只有一个服务实例。单例服务的生存期是不受GC管理,不会终止,只有在关闭宿主时,才会被释放。创建宿主时,单例服务的实例就会被创建(这个可以再托管宿主的监控状态信息中得到证实,宿主运行时候,单例服务的已经显示实例化完毕,而单调服务和会话服务实例尚未启动),并且只能被创建一次,一直运行下去,有且仅有一个服务实例来响应客户端服务调用的请求。
2.服务实例的单调激活模式可以通过[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]配置完成。
3.单例服务同一时间内只能相应一个客户端请求。因此在系统的吞吐量、相应效率、系统服务性能上都存在严重的瓶颈。
(3)实现代码分析及运行结果
3.1WCFService(服务类.单调服务)
3.2WCFHost(单调服务 WCFServicePerCall)
3.3WCFClient(单调服务代理实例化,每次调用操作,会创建不同的服务实例)
(4)源码下载
http://download.csdn.net/source/3014131
(5)下一篇计划
下一篇主要介绍WCF中操作的相关知识。
(6)参考说明
1.《Programming WCF Services》
2.http://www.cnblogs.com/frank_xl/archive/2009/04/29/1437493.html
分享到:
相关推荐
让我们深入探讨一下“WCF按部就班学习系列7:WCF事务概述”中的核心知识点。 1. **WCF事务属性**:在WCF服务中,可以通过配置或编程方式启用事务。服务行为`ServiceBehavior`可以设置`TransactionEnabled`属性为`...
**限流概述**是WCF并发管理中的另一个重要概念。限流是控制服务处理速率的一种机制,可以防止过多的并发请求导致系统资源耗尽。WCF通过设置服务的行为配置,可以限制并发请求数、最大接收消息数等,以达到服务级别的...
在“WCF按部就班学习系列1”中,我们将深入探讨WCF的基础知识,包括服务契约、宿主定义等关键概念。 **服务契约** 服务契约是WCF中的核心概念,它定义了服务提供的操作及其交互方式。服务契约通过接口(Interface...
本篇文章将深入探讨WCF错误的概述,包括错误契约、错误处理、调试错误以及错误处理扩展,并通过Logbook服务实例来阐述具体实现。 **错误契约** 错误契约(FaultContract)在WCF中定义了服务可能抛出的错误类型。它...
**WCF(Windows Communication Foundation)**是微软推出的一种面向服务的通信框架,它提供了一种构建高度互操作的、安全的、可靠的服务的方法。在WCF中,**操作**是服务的基本工作单元,用户通过调用这些操作来与...
在本文中,我们将深入探讨WCF(Windows Communication Foundation)服务契约这一核心概念,以及如何通过实例来理解并实现它的重载。WCF是.NET Framework中一个强大的服务导向架构,用于构建分布式应用程序,允许不同...
学习这个系列,初学者可以理解WCF的基本架构,掌握如何定义和使用数据契约,创建服务契约,以及如何在不同的环境中(如IIS、自承载等)部署和运行WCF服务。同时,通过实际的代码示例,有助于深入理解和应用WCF技术。
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
C#WCF 服务并发管理,编程源代码,包括线程池的例子。
【描述】"WCF_idesign_1WCF_idesign_1WCF_idesign_1WCF_idesign_1WCF_idesign_1" 的重复性描述可能暗示着这是关于深入学习或者多次强调WCF的特定设计原则或实践。WCF的设计理念包括服务导向架构(SOA),它支持多种...
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
总的来说,WCF双工实例是一个实用的学习资源,有助于开发者掌握如何在WCF中实现双向通信,这对于开发需要实时交互的应用程序,如聊天室、股票报价系统或远程控制应用等,具有重要的指导价值。通过深入研究这个实例,...
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
**WCF(Windows Communication Foundation)** 是微软推出的一种面向服务的、用于构建分布式应用程序的框架。它提供了多种机制,如消息交换、服务发现、安全性和事务处理,来帮助开发者构建可伸缩、可靠且安全的网络...
标题中的“wcf.rar_wcf_wcf C#”暗示了这是一个关于Windows Communication Foundation(WCF)的项目,其中包含了C#语言的实现。WCF是微软.NET Framework的一部分,用于构建可互操作的分布式系统,允许服务提供者和...
本教程“Pro_WCF_Practical_Microsoft_SOA_Implementation-3297”专注于实践性学习,帮助开发者深入理解WCF的核心概念和技术,以及如何在实际项目中有效应用。通过一系列示例,你将学习到如何创建、配置和服务的调试...
4. **缓存管理**:客户端需要有效地管理本地缓存,确保在下载过程中不会覆盖已经下载的数据。此外,还需要处理文件的部分更新,比如在下载过程中文件在服务端发生了变化。 5. **错误处理和重试机制**:网络不稳定...
标题中的"WCF_Test.rar_tastevk1_wcf_wcf双工"暗示了这是一个关于Windows Communication Foundation(WCF)的示例项目,特别关注的是双工通信模式。WCF是微软提供的一种.NET框架,用于构建分布式应用程序,它允许...