我们一起学习WCF 第七篇会话模式
会话:就是客户端和服务端之间的谈话。比喻A和B去登陆网站,那么A用户登陆进去肯定显示A的用户详情,那么这就是A和服务器之间的交流。同样B用户登陆之后显示B的详情,这就表示这是B和服务器之间的交流。
如果A会话结束那么服务器就会忘记A用户的请求,也就看不到A的信息。WCF会话有三种模式下面我用图表示

1:建立会话应具备的条件
A:需要支持会话的绑定(basicHttpBinding不支持会话绑定,所以建立会话那么这个绑定必须要支持会话。而wsHttpBinding和NetTcpBinding支持会话)
B:让服务协定支持会话(主要是通过契约定义告知客户端,服务端是支持会话的)
2:代码进行演示
服务端:
[ServiceContract(SessionMode = SessionMode.NotAllowed)]
public interface ISessionService
{
[OperationContract(IsOneWay = true)]
void Login(string Name);
}
客户端进行引用:
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
同一个客户端进行请求

不同客户端进行请求

从中可以看出通过会话服务器是可以记住客户端的信息。
我们一起学习WCF 第七篇会话模式的更多相关文章
- [老老实实学WCF] 第七篇 会话
老老实实学WCF 第七篇 会话 通过前几篇的学习,我们已经掌握了WCF的最基本的编程模型,我们已经可以写出完整的通信了.从这篇开始我们要深入地了解这个模型的高级特性,这些特性用来保证我们的程序运行的高 ...
- 我们一起学习WCF 第三篇头消息验证用户身份
前言:今天我主要写的是关于头消息的一个用处验证用户信息 下面我画一个图,可以先看图 第一步:我们先开始做用户请求代码 首先:创建一个可执行的上下文对象块并定义内部传输的通道 using (Operat ...
- Egret入门学习日记 --- 第七篇(书中 3.9节 内容)
第七篇(书中 3.9节 内容) 好,今天就来看下 3.9节 的内容. 第一点: 昨天就已经搞定了. 第二点: 也包括在昨天的内容了. 第三点: 如果在构造函数里直接引用组件,就会挂掉. 但是把位置变化 ...
- 我们一起学习WCF 第八篇回调函数
什么是回调函数? 一个简单的例子:小明想要在京东购买一件商品.他会登陆网站选好自己的商品.然后他把这件商品放在购物车,然后开始付钱(这个表示触发,不付钱不发货(排除货到付款)).然后京东的人员收到了小 ...
- MyCat 学习笔记 第七篇.数据分片 之 按数据范围分片
1 应用场景 Mycat 其实自带了2个数据范围分片的方案,一个是纯数据范围的分片,比如 1至 10000 号的数据放到分片1 ,10001 至 20000号数据放到分片2里. 另一个是数据常量形式的 ...
- 我们一起学习WCF 第六篇文件传输
原文 http://www.cnblogs.com/LipeiNet/p/4653830.html 前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进 ...
- RabbitMQ学习总结 第七篇:RCP(远程过程调用协议)
在http://www.cnblogs.com/leocook/p/mq_rabbitmq_2.html 这篇博文中我们实现了怎么去使用work queue来把比较耗时的任务分散给多个worker. ...
- 【学习opencv第七篇】图像的阈值化
图像阈值化的基本思想是,给定一个数组和一个阈值,然后根据数组中每个元素是低于还是高于阈值而进行一些处理. cvThreshold()函数如下: double cvThreshold( CvArr* s ...
- 我们一起学习WCF 第十篇Wcf中实现事务
数据一致性在工作中显得非常重要,有时候我们库中出现脏数据导致程序报错,但是又很难发现这样的错误,所以为了数据的完整性建议在程序中加入事物. 什么是事物:我们都有团队合作吧,比喻团队有3个人,a负责设计 ...
随机推荐
- C/C++——new/delete和malloc/free的区别
new/delete和malloc/free的区别 扩容操作: 对于malloc是有一个realloc函数对应用于扩容的: 对于new,只能再new一个,for循环赋值过去,把原来的delete掉: ...
- docker-8-本地镜像发布到阿里云
镜像的生成方法 1.前面的DockerFile 2.从容器创建一个新的镜像 docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]] 将本地镜像推送到阿里云 ...
- Owin+ASP.NET Identity浅析系列(一)用户登录注册
在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 使用VS2015创建MVC项 ...
- CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第二件事就是 LED 驱动 ,点个灯
/* * board_led.c * * Created on: 2018年7月3日 * Author: admin */ #include "board_uart.h" #inc ...
- 在金融服务计算中,必须要使用BigDecimal
在Java程序开发过程中,比较初级(工作经验受限)的开发人员,把注意力全部放在了一些高大上的新技术中,往往忽略了一些初级问题.. 金融服务系统中,对金额的敏感至关重要,账户余额.还款金额.代收本金.代 ...
- 使用属性Props完成一张卡片
一:我们先安装bootstrap,为了使我们的样式好看些 cnpm install bootstrap --save 二:我们在index.js中引入bootstap Import ‘bootst ...
- 浅谈ES6基础——Promise
IMAGE加载 Callback Hell function loadImg(src,callback,fail) { var img = document.createElement('img'); ...
- 解决不能修改 Mysql 慢查询 long_query_time 值的问题
起因:想修改一下自己电脑上的MySQL的 long_query_time 值,以此来测试 MySQL的慢查询功能. 可是,无论怎么改,show variables like 'long_query_t ...
- JavaScript日期格式转换
//日期格式转换 function dateFormat(val) {//val需要转换的日期 var fmt = "yyyy-MM-dd";//日期格式 val = val.re ...
- jQuery增减类操作代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...