我们一起学习WCF 第七篇会话模式

会话:就是客户端和服务端之间的谈话。比喻A和B去登陆网站,那么A用户登陆进去肯定显示A的用户详情,那么这就是A和服务器之间的交流。同样B用户登陆之后显示B的详情,这就表示这是B和服务器之间的交流。

如果A会话结束那么服务器就会忘记A用户的请求,也就看不到A的信息。WCF会话有三种模式下面我用图表示

1:建立会话应具备的条件

A:需要支持会话的绑定(basicHttpBinding不支持会话绑定,所以建立会话那么这个绑定必须要支持会话。而wsHttpBinding和NetTcpBinding支持会话)

B:让服务协定支持会话(主要是通过契约定义告知客户端,服务端是支持会话的)

2:代码进行演示

服务端:

1     [ServiceContract(SessionMode = SessionMode.NotAllowed)]
2    public interface ISessionService
3     {
4         [OperationContract(IsOneWay = true)]
5         void Login(string Name);
6     }

客户端进行引用:

 ServiceClient.SessionServiceClient SSC = new ServiceClient.SessionServiceClient();
            Console.Write("输入用户名:");
            string Name = Console.ReadLine();
            SSC.Login(Name);
            while (true)
            {
                Console.ReadKey();
                SSC.Login(Console.ReadLine());
            }     

我们看运行结果

产生的会话ID为空 说明此时是不支持会话的

现在我们把NotAllowed改为Allowed

同一个客户端进行请求

不同客户端进行请求

从中可以看出通过会话服务器是可以记住客户端的信息。

时间: 2024-08-28 12:21:22

我们一起学习WCF 第七篇会话模式的相关文章

[老老实实学WCF] 第七篇 会话

老老实实学WCF 第七篇 会话 通过前几篇的学习,我们已经掌握了WCF的最基本的编程模型,我们已经可以写出完整的通信了.从这篇开始我们要深入地了解这个模型的高级特性,这些特性用来保证我们的程序运行的高效.稳定和安全. 首先我们来学习会话. 1. 什么是会话 会话是通信双方进行通信的一个时间片.一个语境或者说一个上下文,在这个特定的环境中,通信的双方是彼此认识的,就像两个人在聊天,他们都很清楚谁在聆听自己讲话,也很清楚对方讲的话是给自己听的,简单的说就是通信双方是可以记住彼此的. 一旦会话结束了,

老老实实学WCF[ 第七篇] 回话

老老实实学WCF 第七篇 会话 通过前几篇的学习,我们已经掌握了WCF的最基本的编程模型,我们已经可以写出完整的通信了.从这篇开始我们要深入地了解这个模型的高级特性,这些特性用来保证我们的程序运行的高效.稳定和安全. 首先我们来学习会话. 1. 什么是会话 会话是通信双方进行通信的一个时间片.一个语境或者说一个上下文,在这个特定的环境中,通信的双方是彼此认识的,就像两个人在聊天,他们都很清楚谁在聆听自己讲话,也很清楚对方讲的话是给自己听的,简单的说就是通信双方是可以记住彼此的. 一旦会话结束了,

我们一起学习WCF 第三篇头消息验证用户身份

前言:今天我主要写的是关于头消息的一个用处验证用户信息 下面我画一个图,可以先看图 第一步:我们先开始做用户请求代码 首先:创建一个可执行的上下文对象块并定义内部传输的通道 using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel)) 然后:创建头消息 要发送的SOAP传输的内容 MessageHeader myHeaderUid = MessageHeader.CreateHea

我们一起学习WCF 第六篇文件传输

原文? http://www.cnblogs.com/LipeiNet/p/4653830.html ? 前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进行服务器的监听.ok,现在来看看文件传输需要什么:第一需要传输的信息(文件名,流等)第二需要传输状态(是否传输成功,传输失败返回的信息)下面用图详细的表示下 第一步:先定义两个类 1 [MessageContract] 2 public class ResultMessage 3 { 4 [Mess

我们一起学习WCF 第十篇Wcf中实现事物

数据一致性在工作中显得非常重要,有时候我们库中出现脏数据导致程序报错,但是又很难发现这样的错误,所以为了数据的完整性建议在程序中加入事物. 什么是事物:我们都有团队合作吧,比喻团队有3个人,a负责设计,b负责前端,c负责后台,那么他们三个就是一个整体,哪一个人那里出了问题就要被打回. 第一步:我们开始定义个一个接口 [ServiceContract] public interface IUserInfo { [OperationContract] int AddInfo(); } 第二步当然是实

我们一起学习WCF 第四篇单通讯和双向通讯

前言:由于个人原因很久没有更新这个系列了,我会继续的更新这系列的文章.这一章是单向和双向通讯.所谓的单向就是只有发送却没有回复,双向是既有发送还有回复.就是有来无往代表单向,礼尚往来表示双向.下面我用一个简单用例图表示一下(其中一个老师很严厉说的话大家都默默接受,另一个则相反) 首先我们先看单向通讯: 第一步:编写服务协定 1 [ServiceContract(Namespace = "singleTrans")] 2 public interface ITeacher 3 { 4 [

Vue.js学习笔记 第七篇 表单控件绑定

本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model="textBox" placeholder="输入内容...">输入的内容:{{ textBox }}</p> </div> <script type="text/javascript"> var vm1 = n

MySQL数据库学习【第七篇】单表查询

先创建表 #创建表 create table employee( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', #大部分是男的 age int(3) unsigned not null default 28, hire_date date not null, post varchar(50), post_com

Python 学习日记第七篇 -- 函数

一.函数  1.函数的使用场景及定义 在使用函数编程之前,我们一直是面向过程式编程,语句的堆积造成大量的代码重复,由此,函数应运而生,函数式编程是将反复使用的代码封装到函数中,使用时只需调用即可.函数的学习会让我们更快理解面向对象这一抽象的概念,面向对象即是对函数进行分类和封装. #函数的定义 def first_func():     print("This is my first function!") first_func() def:定义函数的关键字 first_func:函数