成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF單例模式各種類型分析對比

開發 開發工具
WCF單例模式中總共可以被分為兩種類型,一種為隱式單例,而另外一種則為已知單例。那么今天我們將會通過這里介紹的內容充分掌握這些內容知識。

WCF開發工具中,有很多知識是需要我們在學習的過程中去加強注意,提高認知程度的。我們知道,WCF單例模式總共可以分為這樣兩種類型:已知單例(Well-Known Singleton)與隱式單例(Hidden Singleton)。#t#

一般地,在寄宿某個服務的時候,我們會指定服務的類型。WCF會根據服務類型,通過反射的機制,調用默認無參構造函數創建服務實例。但是,如果服務類型沒有定義無參構造函數,或者我們須要手工對服務實例作一些初始化工作,WCF提供的實例激活機制就不能為我們服務了。為了解決這種需求,須要自行創建服務實例,采用基于服務實例的寄宿方式來代替原來基于服務類型的寄宿方式。只有WCF單例模式實例上下文模式才能采用這種寄宿方式,我們把這種基于現有服務對象的服務實例提供模式稱為“已知單例(Well-Konown Singletone)模式”。可以利用ServiceHost下面一個構造函數重載來實現基于已知單例的服務寄宿。

  1. public class ServiceHost : ServiceHostBase{ 
    //其他成員 
  2. public ServiceHost(object singletonInstance, 
    params Uri[] baseAddresses); }   
  3. CalculatorService calculatorService = new CalculatorService();   
  4. using (ServiceHost host = new ServiceHost(calculatorService, 
    new Uri("http://127.0.0.1:9999/calculatorservice")))   
  5. {   
  6. host.Open();   
  7. Console.Read();   
  8. }  

通過上述方法設置已知的WCF單例模式服務對象,可以通過 ServiceHost的只讀屬性SingletonInstance獲得。而對于服務的ServiceHost的獲取,可以通過當前OperationContext的只讀屬性Host得到。(通過OperationContext的Host只讀屬性獲得的是ServiceHostBase對象,如果沒有使用到自定義的ServiceHostBase,通過該屬性獲得的是ServiceHost對象)。下面的代理列出了相關的API和編程方式:

  1. public class ServiceHost : ServiceHostBase   
  2. {   
  3. //其他成員   
  4. public object SingletonInstance { get; }   
  5. }   
  6. public sealed class OperationContext : IExtensibleObject
    <OperationContext>   
  7. {   
  8. //其他成員   
  9. public static OperationContext Current { get; set; }   
  10. public ServiceHostBase Host { get; }   
  11. }   
  12. ServiceHost host = OperationContext.Current.Host as ServiceHost; 
  13. if (host != null)   
  14. {   
  15. CalculatorService singletonService = host.SingletonInstance 
    as CalculatorService;   
  16. }  

對于WCF單例模式實例上下文模式,如果采用傳統的基于服務類型的寄宿方式,即通過服務類型而非服務實例創建ServiceHost對象,服務實例是通過WCF內部的服務實例激活機制創建的。不同于其他兩種實例上下文模式采用請求式實例激活方式(單調實例上下文在處理每次調用請求時創建,而會話實例上下文模式則在接收到某個客戶端的第一次調用請求時創建服務實例上下文),單例實例上下文在ServiceHost的初始化過程中被創建。我們把這種模式稱為隱式單例模式。

我們談到整個服務的寄宿過程大體分為兩個階段:ServiceHost的初始化和ServiceHost的開啟。第一個階段的主要目的在于通過對服務類型的反射,以及對配置的解析,創建用于表示當前寄宿服務的ServiceDescription對象,而隱式單例服務對象就創建于這個階段。

當基于單例服務的ServiceHost被成功創建并被初始化后,服務描述(通過類型System.ServiceModel.Description.ServiceDescription表述)被創建出來。閱讀了第7章的讀者應該很清楚,ServiceDescription有一個Behaviors屬性維護著服務所有服務行為。通過自定義特性設置的ServiceBehaviorAttribute作為最常見的一種服務的行為自然也在其中。在服務寄宿過程中指定的已知服務實例,和WCF創建的隱式服務實例則分別保存在ServiceBehaviorAttribute的兩個私有變量之中。

 

  1. 1: public class ServiceDescription   
  2. 2: {   
  3. 3: //其他成員   
  4. 4: public KeyedByTypeCollection<IServiceBehavior> 
    Behaviors { get; }   
  5. 5: }   
  6. 1: [AttributeUsage(AttributeTargets.Class)]   
  7. 2: public sealed class ServiceBehaviorAttribute : Attribute, 
    IServiceBehavior   
  8. 3: {   
  9. 4: //其他成員   
  10. 5: private object hiddenSingleton;   
  11. 6: private object wellKnownSingleton;   
  12. 7: } 

以上就是我們為大家介紹的WCF單例模式相關內容。

責任編輯:曹凱 來源: CSDN
相關推薦

2010-02-25 10:29:17

WCF Transac

2009-12-24 17:19:13

WPF觸發器

2010-02-04 11:32:01

數據交換技術

2021-04-20 08:32:56

蘋果AppStore違規

2010-01-14 12:50:26

光纖以太網交換機

2023-10-27 07:03:22

字符串String類型

2024-03-08 12:04:22

PythonPillow驗證碼

2010-01-19 16:56:46

交換機光纖端口

2010-01-18 11:13:59

光纖交換機接口

2020-09-16 12:18:28

GoJava模式

2020-12-01 16:21:06

人工智能深度學習機器學習

2020-12-01 10:24:48

人工智能機器學習技術

2021-10-20 06:02:41

網絡釣魚漏洞安全工具

2011-07-28 15:16:23

Oracle數據庫聯機日志spfile

2021-03-02 08:50:31

設計單例模式

2021-02-01 10:01:58

設計模式 Java單例模式

2022-09-29 08:39:37

架構

2017-08-01 23:44:25

數據分析數據科學數據

2010-02-24 17:47:05

WCF集合類型

2016-03-28 10:23:11

Android設計單例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 女同久久另类99精品国产 | 欧美99久久精品乱码影视 | 成年免费大片黄在线观看一级 | 国产成人99av超碰超爽 | 国产精品性做久久久久久 | 国产午夜精品久久久 | www.久久 | 成人精品久久日伦片大全免费 | 美女在线国产 | 欧美一级黄色片 | 国产欧美精品一区 | 亚洲人成人一区二区在线观看 | 91视频精选 | 亚洲性综合网 | 国产精品无码久久久久 | 在线欧美一区 | 亚洲一区| 99精品网站 | 成人免费观看男女羞羞视频 | 午夜视频在线观看视频 | 91新视频 | 久久日韩精品 | 看av电影| 国产一区二区三区在线看 | 亚洲经典一区 | 国产九九精品视频 | 91在线导航 | 亚洲国产一区二区视频 | 成人精品视频在线观看 | 欧美日韩综合 | 成人在线免费 | 亚洲一区中文字幕 | 国产成人精品999在线观看 | 欧美成人不卡 | 四虎最新视频 | 国产视频一区在线 | 免费在线观看成年人视频 | 91精品国产一区二区三区 | 日韩欧美日韩在线 | 国产欧美精品一区二区 | 日韩欧美三区 |