Welcome

首页 / 软件开发 / WCF / WCF学习(六):实例

WCF学习(六):实例2012-01-26 博客园 Henllyee Cui准备技术:

WCF服务契约、数据契约等基础知识

Donet基本开发

内容概要:

三种实例激活类型

单调服务

会话服务

单例服务

实例类型

WCF支持三种实例类型:PerCall、PerSession、Single。PerCall就是单调服务会为每次客户端的请求去分配一个新的服务实例;PerSession会为每次客户端连接分配一个实例;Single所有的客户端会去共享一个相同的服务实例。

WCF是通过ServiceBehavior特性中的InstanceContextMode属性来告诉服务实例采用那种类型,InstanceContextMode属性是一个InstanceContextMode的枚举类型,InstanceContextMode有三个成员:PerCall(单调),PerSession(会话),Single(单例)。

单调服务

单调服务实例只存在于客户端的调用过程中,每次客户端的一个请求就会获得一个新的服务实例。也就说我们在客户端的每次调用一个方法时都会去重新返回一个新的实例给我们。下面我们看一个配置为单调服务实例的例子。

首先看我们的服务契约很简单IBehaverContract.cs:

[ServiceContract(Name="IBehaverContract")]  public interface IBehaverContract  {    [OperationContract(Name="TestBehavor")]    string TestBehavor();}
我们的服务实例BehaverContract.cs为:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCal)]
public class BehaverContract : ServiceContracts.IBehaverContract,IDisposable
{
private int _Count = 0;
public BehaverContract()
{
Console.Write("BehaverContract.BehaverContract() ");
}
public string TestBehavor()
{
_Count++;
return String.Format("The number is :{0}", _Count);
}
public void Dispose()
{
Console.Write("BehaverContract.Dispose() ");
}
}