WCF服务编程基础学习系列(二)

 

WCF服务编程基础学习系列(二)

本篇文章主要介绍一下 WCF服务实例模式和会话模式.

一: 服务实例模式(InstanceContextMode)

 

InstanceContextMode为服务端实现服务契约类的实例模式,有三种类型,
分别为:PerCall-每次服务操作调用创建一次,调用完后进行销毁;
PerSession-同一个会话期间创建一次,客户端代理第一次操作(IsInitiating = true)调用创建,
调用代理的Close方法销毁或者调用IsTerminating服务操作销毁;
Single-服务只会创建一次,服务开始时创建,服务完成时销毁.
如何声明我们所需要的服务实例模式呢?
ServiceModel为我们提供了ServiceBehaviorAttribute声明方式.
我们可以在服务契约实现类上做如下声明:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, 
ConcurrencyMode = ConcurrencyMode.Multiple)]
从这里可以看出,WCF允许以Operation Modified方式方便的进行分布式处理. 
关于ServiceBehaviorAttribute的其他属性,可以参考网上的相关资料,这里不做过多的描述.
二:会话模式(SessionMode)
前面我们讲到使用服务行为属性为我们的服务契约实现设置了启用Session.
虽然实现类启用了Session,但这也需要契约允许进行会话,
因为契约相当于合同,如果合同上没有明文规定允许会话,
那服务也是不能进行会话的.所以我接下来还要为我们的契约声明允许会话.
会话模式分为三种:Allowed,NotAllowed,Required
Allowed: 指定当传入绑定支持会话时,协定也支持会话(默认值)
NotAllowed:指定协定需要会话绑定。如果绑定并未配置为支持会话,则将引发异常
Required:指定协定永不支持启动会话的绑定
声明方式:
[ServiceContract(SessionMode = SessionMode.Required)]
这里谈到了绑定,只有匹配的绑定才能支持会话.
Binding描述了哪些层面的信息

  一个Binding包含着丰富的信息,每种信息都描述了服务端和客户端交互过程中的一方面,

如下表所示,Binding描述了这些层面的信息:

层次备注说明
Transactions(事务)TransactionFlowBindingElement,用于指定事务流程
Reliability(信赖)ReliableSessionBindingElement,用于指定对会话方式
Security(安全)SecurityBindingElement,指定安全方式
Encoding(编码)Text, Binary, MTOM, Custom,指定数据传输格式
Transport(传输)TCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom,指定传输方式

  选择正确的Binding

Binding是可以自定义实现的,可WCF框架已经为我们实现了足够多的Binding,供我们来选择,如下表所示:

Binding名称Configuration Element 描述
BasicHttpBindingbasicHttpBinding一个指定用符合基本网络服务规范通讯的binding,它用http进行传输,数据格式为text/xml
WSHttpBindingwsHttpBinding一个安全的通用的binding,但它不能在deplex中使用
WSDualHttpBindingwsDualHttpBinding一个安全的通用的binding,但能在deplex中使用
WSFederationHttpBindingwsFederationHttpBinding一个安全的通用的支持WSF的binding,能对用户进行验证和授权
NetTcpBindingnetTcpBinding在wcf应用程序中最适合跨机器进行安全通讯的binding
NetNamedPipeBindingnetNamedPipeBinding在wcf应用程序中最适合本机进行安全通讯的binding
NetMsmqBindingnetMsmqBinding在wcf应用程序中最适合跨机器进行安全通讯的binding,并且支持排队
NetPeerTcpBindingnetPeerTcpBinding一个支持安全的,多机交互的binding
MsmqIntegrationBindingmsmqIntegrationBinding一个用于wcf与现有msmq程序进行安全通讯的binding

  下面的表格分别删除了上表中的Binding在互操作性(Interoperability), 安全性(Security),

是否支持会话(Session), 是否支持事务(Transactions)和是否为全双工(Duplex)上不同。

BingdingInteroperabilitySecuritySessionTransactionsDuplex
BasicHttpBindingBasic Profile 1.1(None), Transport, MessageNone, (None)Nonen/a
WSHttpBindingWSTransport, (Message), Mixed(None), Transport, Reliable Session(None), Yesn/a
WSDualHttpBindingWS(Message)(Reliable Session)(None), YesYes
WSFederationHttpBindingWS-Federation(Message)(None), Reliable Session(None), YesNo
NetTcpBinding.NET(Transport), MessageReliable Session, (Transport)(None), YesYes
NetNamedPipeBinding.NET(Transport)None, (Transport)(None), YesYes
NetMsmqBinding.NETMessage, (Transport), Both(None)(None), YesNo
NetPeerTcpBindingPeer(Transport)(None)(None)Yes
MsmqIntegrationBindingMSMQ(Transport)(None)(None), Yesn/a

  例外,《Programming WCF Services》有一幅图也能说明各自的特征:

WCF从理论到实践(5):Binding细解

  下面的图给出了我们选择Binding的方式

WCF从理论到实践(5):Binding细解

-------------------------------------------------

Enjoy technology,Enjoy life

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值