亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.NET服務器定位模式(ServiceLocatorPattern)——CommonServiceLocator

2019-11-14 16:04:17
字體:
來源:轉載
供稿:網友

本文內容

  • 場景
  • 目標
  • 解決方案
  • 實現細節
  • 思考
  • 相關模式
  • 更多信息
  • 參考資料

Common Service Locator 代碼很簡單,它一般不會單獨使用,而是作為一個單件模式,與像 .net Unity 這樣的依賴注入框架一起使用。Common Service Locator 是 Unity 的一部分。

下載 CommonServiceLocator

下載 CommonServiceLocator Demo

場景


假設你有一個類,該類依賴幾個服務 Service(這些服務也可以看做是幾個類),這些服務是在編譯階段指定具體類型的。在接下來的例子中,ClassA 在編譯階段依賴 ServiceAServiceB。如下圖所示。

IC340134

這樣做有如下缺點:

  • 若替換或更新所依賴的服務(或類),顯然,必須修改源代碼,并且重新編譯解決方案;
  • 這些所依賴的具體實現(依賴的服務的具體實現)必須在編譯時可用;
  • 你的類很難單獨測試,因為它們直接引用了那些依賴。這意味著這些依賴不能用 stubs 或 mock 對象替換;
  • 你的類包含創建、查找和管理這些依賴的重復代碼。

下面說明如何解決這個問題。

目標


使用服務器定位模式可以完成下面的任何一個目標:

  • 你想從那些依賴解耦你的類,這樣那些依賴就可以被替換或更新,而不需要或很少修改你的類;
  • 你想寫邏輯代碼,而邏輯代碼取決于那些依賴的類,但那些依賴類的具體實現在編譯階段是不知道的;
  • 你想在不使用那些依賴的情況下單獨測試你的類;
  • 你不想在你的類中寫查找和管理那些依賴類的代碼;
  • 你想把你的應用程序劃分成松散的耦合模塊,這樣就可以單獨開發、測試、版本控制和部署。

解決方案


創建一個包含那些服務的引用和封裝了定位他們的邏輯的服務定位器。在你的類中,使用服務定位器來獲得服務的實例。下圖說明了類何使用服務器定位器。

IC340135

服務器定位器模式不會描述如何實例化服務,它描述一個注冊服務和定位服務的方法。通常情況下,服務定位器模式結合工廠模式(Factory pattern)和/或依賴注入模式(Dependency Injection pattern)。這種組合使得服務定位器創建服務的實例。

注意:

服務定位器可以定位一個服務,而無需知道它的具體類型。例如,它可能使用一個字符串密鑰(string key)或服務接口類型(service interface type)。這樣,你就可以替換依賴的具體實現,而無需修改類。

現實細節


SharePoint Guidance Library 提供了一個服務定位器的實現。SharePointServiceLocator 類提供了訪問單件 IServiceLocator 實例并管理該實例,該類一個接口的默認實現——ActivatingServiceLocator,這個類可以創建和定位服務。

The Partner Portal application 展示了如何使用服務定位器注冊和定位服務,如信息庫(repositories),記錄服務(logging services)和配置管理服務(configuration management services)。更多信息,參看 The SharePoint Service Locator。

思考


在使用服務定位器模式前,考慮下面幾點:

  • There are more solution elements to manage.
  • You must write additional code that adds service references to the service locator before your objects can use it.
  • Your classes have a dependency on the service locator.
  • The source code is more complex and difficult to understand.
  • You can use configuration data to define run-time relationships.
  • You must PRovide implementations of the services. Because the Service Locator pattern decouples service consumers from service providers, it might be necessary to provide additional logic. This logic ensures that the service providers are installed and registered before service consumers try to locate them.

相關模式


下面模式與服務定位器模式有關:

    依賴注入(Dependency Injection)。這個模式跟服務定位器模式解決的同一個問題,只是使用了不同的方法。

    控制反轉(Inversion of Control)。服務定位器是控制反轉的一個特例。它反轉了一個應用程序的傳統控制流。它是一個被調用的對象,而不是控制處理的調用者。

更多信息


參考:

  • Inversion of Control and the Dependency Injection pattern on Martin Fowler's Web site
  • Service Locator on MSDN

關于服務定位器,更多資料,參看 The SharePoint Service Locator。

參考資料


  • Microsoft Developer Network - The Service Locator Pattern
  • The SharePoint Service Locator
  • 控制反轉和依賴注入模式 by Martin Fowler
  • Service Locator
  • Common Service Locator library
  • Service Locator is an Anti-Pattern by Mark Seemann

 

下載 CommonServiceLocator

下載 CommonServiceLocator Demo


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女www| 91免费国产网站| 91免费人成网站在线观看18| 亚洲精品视频二区| 欧美大胆a视频| 国产一级揄自揄精品视频| 精品国产乱码久久久久久天美| 91色中文字幕| 国产精品久久久久久一区二区| 欧美一区二区三区四区在线| 久久精品国产综合| 国产午夜精品一区理论片飘花| 国产99视频精品免视看7| 国产精品扒开腿做爽爽爽男男| 国产大片精品免费永久看nba| 国产日韩av在线播放| 欧美性xxxxxx| 久久久国产一区二区| 国产999在线| xvideos成人免费中文版| 国产精品老牛影院在线观看| 国产一区二中文字幕在线看| 久久精品成人欧美大片古装| 亚洲成人a级网| 国产欧美日韩亚洲精品| 中文字幕亚洲一区二区三区| 欧美高清视频在线| 青青草原成人在线视频| 欧美成人免费va影院高清| 伊人久久精品视频| 欧美日韩在线一区| 国产精品入口日韩视频大尺度| 国产成人精品视频在线| 日韩av影视综合网| 韩国美女主播一区| 性欧美激情精品| 一本一道久久a久久精品逆3p| 日韩最新av在线| 欧美性猛交xxxx免费看| 欧美成人精品在线观看| 亚洲天堂日韩电影| 亚洲综合在线小说| 日韩中文字幕视频在线观看| 色天天综合狠狠色| 亚洲午夜国产成人av电影男同| 日本aⅴ大伊香蕉精品视频| 欧美一级大片视频| 美女福利视频一区| 国产视频在线观看一区二区| 在线国产精品视频| 成人av.网址在线网站| 精品美女久久久久久免费| 中文字幕日本欧美| 国产欧美va欧美va香蕉在| 国产欧亚日韩视频| 欧美成人网在线| 狠狠爱在线视频一区| 丝袜美腿精品国产二区| 国产精品劲爆视频| 欧美孕妇毛茸茸xxxx| 97人人模人人爽人人喊中文字| 日韩欧美极品在线观看| 91色琪琪电影亚洲精品久久| 亚洲日本成人女熟在线观看| 97免费视频在线| 日韩久久免费电影| 亚洲最大在线视频| 91精品免费久久久久久久久| 国产一区二区动漫| 日韩成人激情视频| 欧美激情视频在线免费观看 欧美视频免费一| 国产一区二区三区日韩欧美| 国产福利视频一区二区| 亚洲日韩中文字幕在线播放| 国产成人亚洲综合青青| 日本亚洲欧洲色α| 永久免费看mv网站入口亚洲| 精品欧美国产一区二区三区| 亚洲精品福利免费在线观看| 欧美极品美女电影一区| 欧美黑人巨大精品一区二区| 日韩av在线不卡| 久久精品中文字幕电影| 亚洲成年网站在线观看| 国产视频精品一区二区三区| 日韩综合中文字幕| 精品国产91久久久久久老师| 在线日韩欧美视频| 在线看国产精品| 亚洲第一色在线| 日韩免费观看在线观看| 中文字幕亚洲激情| 亚洲第一在线视频| 国产日韩av在线| 91国产精品视频在线| 欧美极品少妇xxxxⅹ喷水| 久久久久五月天| 91久久久久久久久久久| 久久中文久久字幕| 国产人妖伪娘一区91| 综合136福利视频在线| 亚洲最大av在线| 国产精品久久91| 亚洲欧美成人网| 中文字幕日韩欧美在线| 亚洲美女黄色片| 色与欲影视天天看综合网| 国产精品丝袜白浆摸在线| 久久久久久69| 日本精品久久久久影院| 久久精品精品电影网| 日韩在线中文字幕| 日韩亚洲成人av在线| 2018国产精品视频| 精品夜色国产国偷在线| 在线成人一区二区| 亚洲女人天堂成人av在线| 亚洲字幕一区二区| 欧美三级免费观看| 亚洲精品久久久久中文字幕二区| 欧美大人香蕉在线| 91丝袜美腿美女视频网站| 亚洲天堂av高清| 国产a∨精品一区二区三区不卡| 亚洲欧美激情精品一区二区| 欧美日韩国产综合视频在线观看中文| 黄色成人在线播放| 狠狠做深爱婷婷久久综合一区| 久久精品国产一区二区电影| 欧美在线观看一区二区三区| 久久精品色欧美aⅴ一区二区| 欧美电影免费观看高清| 国产日韩欧美影视| 成人中文字幕在线观看| 欧美精品videos性欧美| 久久视频免费观看| 欧美激情xxxx| 国产ts人妖一区二区三区| 全色精品综合影院| 久热国产精品视频| 一区二区三区国产视频| 日韩大片免费观看视频播放| 国产精品高潮在线| 国产日产亚洲精品| 91久久久久久久久久久久久| 欧美亚洲成人免费| 国模gogo一区二区大胆私拍| 欧美小视频在线| 在线看福利67194| 欧美高清不卡在线| 欧美精品久久久久久久久久| 日韩av在线免费观看一区| 欧美一二三视频| 伊人久久大香线蕉av一区二区| 欧美精品免费看| 一区二区三区国产在线观看| 麻豆国产精品va在线观看不卡| 欧美激情中文字幕在线| 一本色道久久综合狠狠躁篇的优点| 亚洲资源在线看| 国产精品私拍pans大尺度在线| 中文在线资源观看视频网站免费不卡| 国产精品久久久久久亚洲影视| 欧美日韩国产激情|