一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

如何解決分布式系統(tǒng)中的跨時區(qū)問題[實例篇]

  關于如何解決分布式系統(tǒng)中的跨時區(qū)問題,上一篇詳細介紹了解決方案的實現(xiàn)原理,在這一篇中我們通過一個完整的例子來對這個問題進行深入探討。盡管《原理篇》中介紹了那么多,解決方案的本質(zhì)就是:在進行服務調(diào)用過程中將客戶端的時區(qū)信息作為上下文傳入服務端,并以此作為時間轉(zhuǎn)換的依據(jù)。我們首先定一個具體的類型來定義包含時區(qū)信息的上下文類型,我們將這個類型起名為ApplicationContext。

  一、通過CallContext實現(xiàn)ApplicationContext

  在《通過WCF擴展實現(xiàn)Context信息的傳遞》一文中,我通過HttpSessionState和CallContext實現(xiàn)了一個ApplicationContext類,為ASP.NET和其他類型的應用提供上下文信息的容器。在這里進行了簡化,僅僅實現(xiàn)了基于CallContext的部分。這樣一個ApplicationContext類型定義如下:

   1: [CollectionDataContract(Namespace="http://www.artech.com/")]
   2: public class ApplicationContext:Dictionary<string, object>
   3: {
   4:     internal const string contextHeaderName         = "ApplicationContext";
   5:     internal const string contextHeaderNamespace    = "http://www.artech.com/";
   6:  
   7:     private ApplicationContext() { }
   8:     public static ApplicationContext Current
   9:     {
  10:         get
  11:         {
  12:             if (null == CallContext.GetData(typeof(ApplicationContext).FullName)) 
  13:             {
  14:                 lock (typeof(ApplicationContext))
  15:                 {
  16:                     if (null == CallContext.GetData(typeof(ApplicationContext).FullName))
  17:                     {
  18:                         var context = new ApplicationContext();
  19:                         context.TimeZone = TimeZoneInfo.Local;
  20:                         CallContext.SetData(typeof(ApplicationContext).FullName, context);
  21:                     }
  22:                 }
  23:             }
  24:  
  25:             return (ApplicationContext)CallContext.GetData(typeof(ApplicationContext).FullName);
  26:         }
  27:         set
  28:         {
  29:             CallContext.SetData(typeof(ApplicationContext).FullName, value);
  30:         }
  31:     }
  32:     public TimeZoneInfo TimeZone
  33:     {
  34:         get
  35:         {
  36:             return TimeZoneInfo.FromSerializedString((string)this["__TimeZone"]);
  37:         }
  38:         set
  39:         {
  40:             this["__TimeZone"] = value.ToSerializedString();
  41:         }
  42:     }
  43:  
  44:     public static void Clear()
  45:     { 
  46:         CallContext.FreeNamedDataSlot(typeof(ApplicationContext).FullName);
  47:     }
  48: }

NET技術如何解決分布式系統(tǒng)中的跨時區(qū)問題[實例篇],轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 隔壁搬来黑人巨大中文字幕 | 精品麻豆国语国拍视频在线 | 黄篇网站在线观看 | 高清国产美女一级a毛片 | 在线观看视频一区二区 | 9797在线看片亚洲精品 | 在线亚洲欧美性天天影院 | 国产精品秒播无毒不卡 | 男女牲交一级毛片 | 日本激情一区二区三区 | 男人进去女人爽免费视频国产 | 亚洲激情专区 | 精品一区二区三区四区在线 | 精品国产91久久久久久久a | 国产成在线人视频免费视频 | 美女视频网站黄色 | 精品国产精品国产偷麻豆 | 午夜激情免费 | 漂亮大学生一级毛片 | 精品福利视频一区二区三区 | 一级爱爱片一级毛片-一毛 一级爱做片免费观看久久 一级不卡毛片 | 九九久久精品视频 | 欧美大片a特激情刺激 | 一区二区精品在线观看 | 久久精品九九 | 性做久久久久久久久男女 | 美女网站视频黄色 | 国内偷拍第一页 | 好吊日免费视频 | 国产精品一国产精品免费 | 亚洲国产成人精品女人久久久 | 欧美三级在线 | 欧美五级在线观看视频播放 | 国产91亚洲精品 | 91精品啪在线观看国产日本 | 在线观看91精品国产不卡免费 | 美女网站色视频 | 99精品国产闺蜜国产在线闺蜜 | 亚洲一区二区免费在线观看 | 99在线视频观看 | 110139日韩欧美 |