WCF基础之会话、实例和并发
这篇笔记是一些概念性的东西。
会话,借用百科上的描述就是一个客户与服务器之间的不中断的请求响应序列。wcf的会话模式是通过服务契约的SessionModel进行设置的,其值为枚举,分别为:Allowed,改值为默认值,客户端连接,选择会话或者不建立会话;Required,必须建立会话;NotAllowed,禁止会话。WCF的会话是可以通过应用程序显示的进行启动和终止,是有序的,是不存在与会话相关的数据存储区的。
系统提供的会话类型:
System.ServiceModel.Channels.SecurityBindingElent支持基于安全的会话,通信两端都必须采用统一的安全对话。
System.ServiceModel.Channels。ReliableSessionBindingElement元素实现WS-ReliableMessaging规范,并提供对可靠会话的的支持,可配置消息按顺序传递且只传递一次,从而保证消息在会话期间即使经过多个节点也可以确保安全。
WSHttpBiding默认情况下只使用对消息进行加密和数字签名的安全会话。
NetTcpBinding支持基于TCP/IP的会话,以确保所有消息都是由套接字级别的连接进行关联。
NetMsmqBinding提供msmq数据会话。
实例化模式是通过设置InstanceContext的属性来实现的,值为枚举:PerCall,每次请求都是一个新的InstanceContext;PerSession,每个会话创建一个新的InstanceContext;Single,所有会话都共用一个InstanceContext。
并发模式也有三种,通过ConcurrencyMode属性设置(对于并发这个我也没弄明白,等我多写几个demo再说):single允许每个InstanceContext同时只能有一个线程处理其中的消息;Mulitple允许拥有多个同时处理消息的线程,服务必须实现线程安全;Reentrant:每个服务实例智能处理一个消息,但可以接受重入的操作调用,仅当服务通过wcf客户端对象提供服务时才接受这些调用。
这下面是我在会话模式下,不同的实例化模式下的调用结果:
客户端
MyService.WCFServiceClient myClient = new MyService.WCFServiceClient(); ; i < ;i++ ) Console.WriteLine(myClient.TestSession()); Console.Read();
服务端
public class WCFService:IWCFService { ; public int TestSession() { ; } }
Required+Single
Required+PerCall
Required+PerSession
其他的几种可以自己再试试。
WCF基础之会话、实例和并发的更多相关文章
- WCF服务编程 读书笔记——第1章 WCF基础(2)
续:第1章 WCF基础(1) 元数据交换 服务有两种方案可以发布自己的元数据.一种是基于HTTP-GET协议提供元数据, 另一种则是后面将要讨论的使用专门的终结点的方式.WCF能够为服务自动提供基于H ...
- WCF初探-26:WCF中的会话
理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话.会话”是在两个终结点之间发送的所有消息的一种相互关系.当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调 ...
- WCF服务类的实例模式(本文为转载)
WCF开发时如何选择正确的实例模式(InstanceMode)? 在使用WCF实例模型时,你是否思考过这几个的问题: ”WCF中的实例模式如何正确应用”? ”使用WCF中的实例模式有何原则可以遵循 ...
- [WCF编程]8.服务实例的生命周期
一.服务实例的生命周期概览 我们已经直到,通过显式调用Close方法或等待默认的超时时间到来,都可以释放服务实例.但是,在会话连接里,经常需要按一定顺序调用方法. 二.分步操作 会话契约的操作有时隐含 ...
- WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...
- 重温WCF之WCF中可靠性会话(十四)
1.WCF中可靠性会话在绑定层保证消息只会被传输一次,并且保证消息之间的顺序.当使用TCP(Transmission Control Protocol,传输控制协议)通信时,协议本身保证了可靠性.然而 ...
- WCF 实例化与会话
实例管理旨在解决服务实例的激活和服务实例生命周期的控制,会话的目的是在于保持相同客户端(服务代理)多次服务调用的状态. 实例上下文 实例上下文是对服务实例的封装,是WCF管理服务实例生命周期的依托,S ...
- WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构
原文:WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构 细算起来,已经有好几个月没有真正的写过文章了.近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析>的写作,一直 ...
- WCF 基础框架
WCF 基础框架: 1,契约:契约书一语个服务公共接口的一部分,一个服务的契约定义了服务端公开的方法,使用的传递协议,可访问的地址,传输的消息格式等内容,主要包括数据契约,消息契约,服务契约等. 2, ...
随机推荐
- Java的身份证号码工具类
/** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. * Licensed to the Apache Software ...
- std::multimap 按照key遍历---
#include <iostream> #include <unordered_map> using namespace std; int main() { unordered ...
- Shell脚本之:退出循环
Shell也使用 break 和 continue 来跳出循环. break命令 下面的例子中,脚本进入死循环直至用户输入数字大于5,使用break跳出这个循环. #!/bin/bash while ...
- 2015级C++第7周项目 友元、共享数据保护、多文件结构
[项目1-成员函数.友元函数和一般函数有差别]參考解答 (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码) //例:使用成员函数.友元函数和一般函数的差别 #include ...
- HttpClient简介
栏目:Web开发 作者:admin 日期:2015-05-02 评论:0 点击: 204 次 虽然在JDK的java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说 ...
- Url Scheme实现APP间通信、分享
代码地址如下:http://www.demodashi.com/demo/12748.html 简介: URL Scheme就是一个可以让app相互之间可以跳转的对外接口.通过给APP定义一个唯一的U ...
- C# 中 finally 的用法
当一个异常抛出时,它会改变程序的执行流程.因此不能保证一个语句结束后,它后面的语句一定会执行,在 C# 中这个问题可以用 finally 解决. 为了确保一个语句总是能执行(不管是否抛出异常),需要将 ...
- Flask--上下文源码流程
- Ajax分页功能的实现
电脑换了固态硬盘,准备重装系统,因此打算把项目里一直延用的代码总结出来,防止丢失,以后也方便查阅.Ajax分页已经是非常普遍的技术了,所以也没什么需要特别说明的,直接贴代码: html部分 <! ...
- iOS 获取LaunchImage启动图
iOS开发中,LaunchImage图片会根据手机机型的不同,自动匹配对应的图片,而我们如果想要拿到对应的图片,无法直接通过图片的名字获取该启动图,而需要通过以下方式 + (NSString *)ge ...