WCF应用方式多变化,灵活性非常强,能够帮助开发人员解决许多需求问题。不过它的高灵活性同时也带来了应用上的困难。下面我们先来一起了解一下WCF分布操作的应用,以帮助我们初步了解这方面的知识。
创新互联主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、网站优化、微网站、小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站制作、网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
WCF分布操作(Demarcating Operation)方法,以应对服务契约的操作需要指定执行顺序的情况。分步操作是使用OperationContract特性的IsInitiating和IsTerminating属性:
- [AttributeUsage(AttributeTargets.Method)]
- public sealed class OperationContractAttribute : Attribute
- {
- public bool IsInitiating
- {
- get;set;
- }
- public bool IsTerminating
- {get;set;} //More members
- }
一个WCF分布操作的应用如下:
- [ServiceContract(SessionModeSessionMode = SessionMode.Required)]
- interface IOrderManager
- {
- [OperationContract]
- void SetCustomerId(int customerId);
- [OperationContract(IsInitiating = false)]
- void AddItem(int itemId);
- [OperationContract(IsInitiating = false)]
- decimal GetTotal( );
- [OperationContract(IsInitiating = false,IsTerminating = true)]
- bool ProcessOrders( );
- }
此时,操作AddItem()、GetTotal()以及ProcessOrder()都不能是启动会话的第一个操作。同时,ProcessOrder()操作则会成为终止会话的操作。这与业务的要求是一脉相承的。 #t#
IsInitiating属性的默认值为true,IsTerminating属性的默认值则为false。
如果IsInitiating值为true,并不必然代表该操作必然是启动会话的第一个操作。如果其它相同设置的操作首先被调用,就会启动一个会话,而原操作则在调用时被加入会话,成为会话的一部分。但如果IsTermination的值为true,则代表该操作必须是终止会话的操作。虽然在服务契约定义时,允许将多个操作的IsTerminating值设置为true,但一旦调用了IsTerminating值为true的方法,就不能再调用服务实例的其它方法,除非在客户端重新创建一个代理对象。此外,即使操作的IsTermination值为true,它也可以是启动会话的第一个操作,但在操作执行后它会终止会话。因此,如下的两个操作定义是等效的:
- [OperationContract(IsTerminating = true)]
- void StartAndEndSession();
- [OperationContract(IsInitiating=true, IsTerminating = true)]
- void StartAndEndSession();
然而,如下的两个操作则是不等效的,因为后者要求该操作不能为启动会话的第一个操作:
- [OperationContract(IsTerminating = true)]
- void StartAndEndSession();
- [OperationContract(IsInitiating=false, IsTerminating = true)]
- void StartAndEndSession();
以上就是对WCF分布操作的相关介绍。
名称栏目:WCF分布操作应对特定操作情况
网页地址:http://www.stwzsj.com/qtweb/news19/13169.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联