成人免费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

光纖以太網交換機

2010-01-19 16:56:46

交換機光纖端口

2010-01-18 11:13:59

光纖交換機接口

2023-10-27 07:03:22

字符串String類型

2024-03-08 12:04:22

PythonPillow驗證碼

2020-09-16 12:18:28

GoJava模式

2020-12-01 10:24:48

人工智能機器學習技術

2020-12-01 16:21:06

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

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單例模式

2010-02-24 17:47:05

WCF集合類型

2022-09-29 08:39:37

架構

2017-08-01 23:44:25

數據分析數據科學數據

2016-03-28 10:23:11

Android設計單例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久免费精品 | 欧美精品一二三 | 久久亚洲天堂 | 国产伊人精品 | 国产观看 | 久久久一区二区三区四区 | 欧美最猛黑人 | 国产999精品久久久影片官网 | 精品国产乱码久久久久久丨区2区 | 国产成人99久久亚洲综合精品 | 国产精品色av | 日韩一区二区在线视频 | 日韩一区二区三区视频在线播放 | 精品欧美一区二区精品久久久 | 少妇午夜一级艳片欧美精品 | 亚洲视频在线观看 | 欧美中文 | 精品久久国产 | 午夜激情影院 | 一区二区中文 | 免费视频成人国产精品网站 | 亚洲综合无码一区二区 | 精品无码久久久久久国产 | 亚洲欧美中文日韩在线v日本 | 日韩在线播放一区 | 国产高清精品网站 | 四色成人av永久网址 | 99免费精品视频 | 九九国产| 日韩在线精品 | 美人の美乳で授乳プレイ | 一区二区三区四区在线播放 | 亚洲欧美激情精品一区二区 | 成人国产综合 | 中文一区 | 亚洲日韩中文字幕一区 | 99精品国产成人一区二区 | 日韩精品人成在线播放 | 成人午夜毛片 | 欧美一区二区三区视频在线播放 | 国内精品视频在线观看 |