自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF分布操作應(yīng)對(duì)特定操作情況

開(kāi)發(fā) 開(kāi)發(fā)工具
WCF分布操作的方式主要就針對(duì)那些需要指定執(zhí)行順序的服務(wù)契約操作。那么如何才能正確的應(yīng)用這一方式呢,在這里將會(huì)做一個(gè)詳細(xì)介紹。

WCF應(yīng)用方式多變化,靈活性非常強(qiáng),能夠幫助開(kāi)發(fā)人員解決許多需求問(wèn)題。不過(guò)它的高靈活性同時(shí)也帶來(lái)了應(yīng)用上的困難。下面我們先來(lái)一起了解一下WCF分布操作的應(yīng)用,以幫助我們初步了解這方面的知識(shí)。

WCF分布操作(Demarcating Operation)方法,以應(yīng)對(duì)服務(wù)契約的操作需要指定執(zhí)行順序的情況。分步操作是使用OperationContract特性的IsInitiating和IsTerminating屬性:

  1. [AttributeUsage(AttributeTargets.Method)]   
  2. public sealed class OperationContractAttribute : Attribute   
  3. {   
  4. public bool IsInitiating   
  5. {  
  6. get;set;  
  7. }   
  8. public bool IsTerminating   
  9. {get;set;} //More members   
  10. }  

一個(gè)WCF分布操作的應(yīng)用如下:

 

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Required)]   
  2. interface IOrderManager   
  3. {   
  4. [OperationContract]   
  5. void SetCustomerId(int customerId);   
  6. [OperationContract(IsInitiating = false)]   
  7. void AddItem(int itemId);   
  8. [OperationContract(IsInitiating = false)]   
  9. decimal GetTotal( );   
  10. [OperationContract(IsInitiating = false,IsTerminating = true)]  
  11.  bool ProcessOrders( );   
  12. }  

此時(shí),操作AddItem()、GetTotal()以及ProcessOrder()都不能是啟動(dòng)會(huì)話的第一個(gè)操作。同時(shí),ProcessOrder()操作則會(huì)成為終止會(huì)話的操作。這與業(yè)務(wù)的要求是一脈相承的。 #t#

IsInitiating屬性的默認(rèn)值為true,IsTerminating屬性的默認(rèn)值則為false。

如果IsInitiating值為true,并不必然代表該操作必然是啟動(dòng)會(huì)話的第一個(gè)操作。如果其它相同設(shè)置的操作首先被調(diào)用,就會(huì)啟動(dòng)一個(gè)會(huì)話,而原操作則在調(diào)用時(shí)被加入會(huì)話,成為會(huì)話的一部分。但如果IsTermination的值為true,則代表該操作必須是終止會(huì)話的操作。雖然在服務(wù)契約定義時(shí),允許將多個(gè)操作的IsTerminating值設(shè)置為true,但一旦調(diào)用了IsTerminating值為true的方法,就不能再調(diào)用服務(wù)實(shí)例的其它方法,除非在客戶端重新創(chuàng)建一個(gè)代理對(duì)象。此外,即使操作的IsTermination值為true,它也可以是啟動(dòng)會(huì)話的第一個(gè)操作,但在操作執(zhí)行后它會(huì)終止會(huì)話。因此,如下的兩個(gè)操作定義是等效的:

  1. [OperationContract(IsTerminating = true)]  
  2.  void StartAndEndSession();   
  3. [OperationContract(IsInitiating=trueIsTerminating = true)]   
  4. void StartAndEndSession();  

 

然而,如下的兩個(gè)操作則是不等效的,因?yàn)楹笳咭笤摬僮鞑荒転閱?dòng)會(huì)話的第一個(gè)操作:

 

  1. [OperationContract(IsTerminating = true)]   
  2. void StartAndEndSession();   
  3. [OperationContract(IsInitiating=falseIsTerminating = true)]   
  4. void StartAndEndSession();  

以上就是對(duì)WCF分布操作的相關(guān)介紹。

責(zé)任編輯:曹凱 來(lái)源: IT168
相關(guān)推薦

2011-12-26 16:33:02

WCF

2010-03-01 15:08:05

WCF單向操作

2009-11-09 13:12:14

WCF事物操作

2009-11-06 16:35:56

WCF Stream對(duì)

2009-11-05 16:21:51

WCF服務(wù)

2010-03-01 15:51:01

WCF限流

2010-02-26 09:33:18

WCF創(chuàng)建WebSer

2010-03-01 16:31:58

WCF實(shí)現(xiàn)SOA

2010-03-01 10:12:54

WCF異步操作

2009-12-21 15:12:40

WCF操作Stream

2010-02-23 17:59:52

WSIT連接WCF

2009-11-09 13:47:22

WCF Stream操

2009-12-07 14:35:42

WCF異步調(diào)用

2009-12-21 11:19:50

WCF配置文件

2010-03-02 10:54:42

WCF回調(diào)操作

2010-03-02 09:39:11

保護(hù)WCF服務(wù)

2010-03-02 16:15:59

WCF控制事務(wù)

2010-02-24 13:06:27

WCF使用Nhiber

2010-02-22 10:01:11

WCF消息處理

2010-03-01 14:56:48

WCF服務(wù)引用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)