WCF(Windows Communication Foundation) - 实例模型: ServiceBehavior InstanceContextMode.PerCall - 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。 InstanceContextMode.PerSession - 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。 InstanceContextMode.Single - 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。



化零为整WCF(10) - 实例模型(InstanceContextMode)


作者:webabcd



介绍

WCF(Windows Communication Foundation) - 实例模型:

    ServiceBehavior

    ·InstanceContextMode.PerCall - 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。

    ·InstanceContextMode.PerSession - 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。

    ·InstanceContextMode.Single - 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。



示例

1、服务

PerCallMode.cs

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Collections.Generic;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Linq;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Text;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.ServiceModel;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#namespace WCF.ServiceLib.InstanceMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的接口(PerCall)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceContract]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public interface IPerCallMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        [OperationContract]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        int Counter();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的类(PerCall)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// <remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode - 获取或设置指示新服务对象何时创建的值。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode.PerCall - 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public class PerCallMode : IPerCallMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        private int _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        public int Counter()

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            _counter++;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            return _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_59}

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

PerSessionMode.cs

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Collections.Generic;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Linq;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Text;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.ServiceModel;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#namespace WCF.ServiceLib.InstanceMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的接口(PerSession)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceContract()]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public interface IPerSessionMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        [OperationContract]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        int Counter();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的类(PerCall)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// <remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode - 获取或设置指示新服务对象何时创建的值。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode.PerSession - 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode 的默认值为 InstanceContextMode.PerSession

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public class PerSessionMode : IPerSessionMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        private int _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        public int Counter()

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            _counter++;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            return _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_59}

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

SingleMode.cs

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Collections.Generic;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Linq;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Text;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.ServiceModel;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#namespace WCF.ServiceLib.InstanceMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的接口(Single)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceContract]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public interface ISingleMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        [OperationContract]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        int Counter();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// 演示实例模型的接口(Single)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// <remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode - 获取或设置指示新服务对象何时创建的值。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    /// InstanceContextMode.Single - 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    /// </remarks>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    public class SingleMode : ISingleMode

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        private int _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        /**//// <summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// 获取计数器结果

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        /// </summary>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        /// <returns></returns>

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        public int Counter()

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13        化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            _counter++;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            return _counter;

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15        }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_59}

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#


2、宿主

PerCallMode.svc

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10<%化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11@ ServiceHost Language="C#" Debug="true" Service="WCF.ServiceLib.InstanceMode.PerCallMode" %>

PerSessionMode.svc

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10<%化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11@ ServiceHost Language="C#" Debug="true" Service="WCF.ServiceLib.InstanceMode.PerSessionMode" %>

SingleMode.svc

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10<%化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11@ ServiceHost Language="C#" Debug="true" Service="WCF.ServiceLib.InstanceMode.SingleMode" %>

Web.config

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<?xml version="1.0"?>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<configuration>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    <system.serviceModel>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        <behaviors>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <serviceBehaviors>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <behavior name="InstanceModeBehavior">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <!--httpGetEnabled - 使用get方式提供服务-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <serviceMetadata httpGetEnabled="true" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <serviceDebug includeExceptionDetailInFaults="true"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                </behavior>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </serviceBehaviors>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        </behaviors>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        <services>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--name - 提供服务的类名-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--behaviorConfiguration - 指定相关的行为配置-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <service name="WCF.ServiceLib.InstanceMode.PerCallMode" behaviorConfiguration="InstanceModeBehavior">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <!--address - 服务地址-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <!--binding - 通信方式-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <!--contract - 服务契约-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <endpoint address="" binding="basicHttpBinding" contract="WCF.ServiceLib.InstanceMode.IPerCallMode" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </service>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <service name="WCF.ServiceLib.InstanceMode.PerSessionMode" behaviorConfiguration="InstanceModeBehavior">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <!--bindingConfiguration - 指定相关的绑定配置-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <endpoint address="" binding="wsHttpBinding" contract="WCF.ServiceLib.InstanceMode.IPerSessionMode" bindingConfiguration="PerSessionModeBindingConfiguration"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </service>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <service name="WCF.ServiceLib.InstanceMode.SingleMode" behaviorConfiguration="InstanceModeBehavior">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <endpoint address="" binding="basicHttpBinding" contract="WCF.ServiceLib.InstanceMode.ISingleMode" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </service>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        </services>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        <bindings>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <wsHttpBinding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <!--wsHttpBinding 可提供 安全会话 和 可靠会话-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <binding name="PerSessionModeBindingConfiguration">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <!--指示是否在通道终结点之间建立 WS-RM (WS-ReliableMessaging) 可靠会话。默认值为 false。-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <reliableSession enabled="true"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <security>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                        <!--此属性控制安全上下文令牌是否通过客户端与服务之间的 WS-SecureConversation 交换建立。将它设置为 true 要求远程方支持 WS-SecureConversation。-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                        <message establishSecurityContext="true"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    </security>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                </binding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </wsHttpBinding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        </bindings>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    </system.serviceModel>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#</configuration>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#


3、客户端

Hello.aspx

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10<%化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Hello.aspx.cs"

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_59    Inherits="InstanceMode_Hello" Title="实例模型(InstanceContextMode)" %>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#</asp:Content>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    <asp:Button ID="btnPerCallMode" runat="server" Text="PerCallMode" 

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        onclick="btnPerCallMode_Click" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    &nbsp;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    <asp:Button ID="btnPerSessionMode" runat="server" Text="PerSessionMode" 

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        onclick="btnPerSessionMode_Click" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    &nbsp;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    <asp:Button ID="btnSingleMode" runat="server" Text="SingleMode" 

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        onclick="btnSingleMode_Click" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#</asp:Content>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

Hello.aspx.cs

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Collections;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Configuration;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Data;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Linq;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web.Security;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web.UI;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web.UI.HtmlControls;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web.UI.WebControls;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Web.UI.WebControls.WebParts;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#using System.Xml.Linq;

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#public partial class InstanceMode_Hello : System.Web.UI.Page

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_09化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_10化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    protected void Page_Load(object sender, EventArgs e)

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    protected void btnPerCallMode_Click(object sender, EventArgs e)

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        var proxy = new InstanceModeSvc.PerCallMode.PerCallModeClient();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        Page.ClientScript.RegisterStartupScript(

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            this.GetType(),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            "js",

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            string.Format("alert('计数器:{0}')", proxy.Counter()),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            true);

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        proxy.Close();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    protected void btnPerSessionMode_Click(object sender, EventArgs e)

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        if (Session["proxy"] == null)

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            Session["proxy"] = new InstanceModeSvc.PerSessionMode.PerSessionModeClient();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        Page.ClientScript.RegisterStartupScript(

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            this.GetType(),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            "js",

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            string.Format("alert('计数器:{0}')", (Session["proxy"] as InstanceModeSvc.PerSessionMode.PerSessionModeClient).Counter()),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            true);

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14    protected void btnSingleMode_Click(object sender, EventArgs e)

化零为整WCF(10) - 实例模型(InstanceContextMode)_客户端_12化零为整WCF(10) - 实例模型(InstanceContextMode)_xml_13    化零为整WCF(10) - 实例模型(InstanceContextMode)_c#_11{

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        var proxy = new InstanceModeSvc.SingleMode.SingleModeClient();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        Page.ClientScript.RegisterStartupScript(

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            this.GetType(),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            "js",

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            string.Format("alert('计数器:{0}')", proxy.Counter()),

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14            true);

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_14        proxy.Close();

化零为整WCF(10) - 实例模型(InstanceContextMode)_默认值_15    }

化零为整WCF(10) - 实例模型(InstanceContextMode)_源码下载_59}

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

Web.config

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<?xml version="1.0"?>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#<configuration>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    <system.serviceModel>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        <client>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--address - 服务地址-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--binding - 通信方式-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--contract - 服务契约-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <endpoint address="http://localhost:3502/ServiceHost/InstanceMode/PerCallMode.svc" binding="basicHttpBinding" contract="InstanceModeSvc.PerCallMode.IPerCallMode" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <!--bindingConfiguration - 指定相关的绑定配置-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <endpoint address="http://localhost:3502/ServiceHost/InstanceMode/PerSessionMode.svc" binding="wsHttpBinding" contract="InstanceModeSvc.PerSessionMode.IPerSessionMode" bindingConfiguration="PerSessionModeBindingConfiguration" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <endpoint address="http://localhost:3502/ServiceHost/InstanceMode/SingleMode.svc" binding="basicHttpBinding" contract="InstanceModeSvc.SingleMode.ISingleMode" />

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        </client>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        <bindings>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            <wsHttpBinding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                <binding name="PerSessionModeBindingConfiguration">

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <!--指示是否在通道终结点之间建立 WS-RM (WS-ReliableMessaging) 可靠会话。默认值为 false。-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <reliableSession enabled="true"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    <security>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                        <!--此属性控制安全上下文令牌是否通过客户端与服务之间的 WS-SecureConversation 交换建立。将它设置为 true 要求远程方支持 WS-SecureConversation。-->

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                        <message establishSecurityContext="true"/>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                    </security>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#                </binding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#            </wsHttpBinding>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#        </bindings>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#    </system.serviceModel>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#</configuration>

化零为整WCF(10) - 实例模型(InstanceContextMode)_c#


运行结果:

单击"btnPerCallMode"按钮,每次单击,计数器都返回1

单击"btnPerSessionMode"按钮,每次单击并且会话相同,计数器会累加

单击"btnSingleMode"按钮,每次单击,计数器都累加



OK