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

ASP.NET MVC3 Service Location

  介紹

  ASP.NET MVC3 的一個重要的新特性就是允許注冊一個服務(wù)點(diǎn) Service Location,然后在框架中使用的能力。以前版本的 MVC 已經(jīng)提供了 Service Location 和依賴注入的機(jī)會,在 MVC3 中,我們正式提供了這種能力,并且為開發(fā)者開放了多種使用的機(jī)會。

  總體策略

  關(guān)于 Service Location 的最重要的部分就是它是可選的,這意味著如果你對 Service Location 不感興趣,那么,你不需要被強(qiáng)制使用,你總是可以在不使用 Service Location 的情況下,調(diào)用自定義的函數(shù)。在以后加入新的 Service Location 的時候,也會保持向后的兼容性。

  當(dāng)使用注冊的 Service Location 的時候,依賴于具體的使用,MVC 一般將會使用下面三種策略之一:

  1. 定位一個唯一的注冊服務(wù)

  現(xiàn)在的 MVC 中使用的許多服務(wù)都注冊一個實例來提供服務(wù),例如,控制器工廠 Controller Factory,它實現(xiàn)了接口 IControllerFactory。對于整個應(yīng)用來說,只有一個控制器工廠實例。

  當(dāng) MVC 試圖使用單個的注冊服務(wù)的時候,它將會首先通過 Service Locator 尋找時候存在一個注冊的服務(wù)實例,如果有,將使用這個服務(wù)實例,如果沒有,那么將會回退到?jīng)]有使用服務(wù)定位器時候注冊的單個實例。

  上面的處理順序意味著使用服務(wù)定位器的用戶不必?fù)?dān)心現(xiàn)存項目中 MVC 的默認(rèn)服務(wù)。因為當(dāng)服務(wù)提供器不存在的時候,將會自動使用原來注冊的服務(wù),這種潛力也意味著可以在兩個地方注冊自定義的服務(wù),但是只有通過服務(wù)器注冊的服務(wù)被使用。

  2. 定位多個注冊的服務(wù)

  在 MVC 中也有為一個服務(wù)注冊多個服務(wù)實例的地方,比如說,視圖引擎,視圖引擎實現(xiàn)了接口 IViewEngine,典型情況下,MVC 提供了注冊多個服務(wù)的注冊點(diǎn),也提供了 ViewEngines.Engines 來找到每一個視圖引擎,并確定其中之一可以提供服務(wù)。還有其他的類似的場合,比如, ModelValidatorProviders.Providers 。

  當(dāng) MVC 試圖使用這種具有多個服務(wù)實例的服務(wù)的時候,MVC 將會通過管理多個服務(wù)實現(xiàn)的 Facade 來完成,F(xiàn)acade 將會把通過靜態(tài)注冊的服務(wù)實例和通過 Service Location 注冊的服務(wù)實例結(jié)合在一起來選擇合適的實現(xiàn)。在這里,服務(wù)的順序是很重要的,通常意味著通過 Service Location 注冊的服務(wù)實例要優(yōu)先靜態(tài)注冊的實例。

  類似于單實例服務(wù)注冊,這意味著對于存在默認(rèn)服務(wù)提供器的時候,不需要再通過 Service Location 來注冊服務(wù),這也意味著對于注冊的多個服務(wù)來說,多數(shù)的容器也不必提供一個本地的排序函數(shù),因為如果順序是重要的,就可能需要非 Service Location 的 API。

  3. 創(chuàng)建對象

  MVC 使用服務(wù)定位器最后的策略就是直接創(chuàng)建對象,這最好通過依賴注入的服務(wù)來實現(xiàn),我們將試圖通過 Service Location 來創(chuàng)建對象,一個典型的例子就是控制器對象 Controller。

  當(dāng) MVC 試圖創(chuàng)建新的對象的時候,它將會請求服務(wù)定位器來創(chuàng)建這個對象,如果服務(wù)定位器不能完成這個任務(wù),那么,將會回退到 MVC2 的行為,通常意味著使用 Activator.CreateInstance 來創(chuàng)建。

  IDependencyResolver

  為了在 MVC3 中使用服務(wù)定位,在 MVC3 中提供了一個接口 IDependencyResolver 和一個新的類 DependencyResolver,

1 public interfac IDependencyResolver
2 {
3     object GetService( Type serviceType );
4     IEnumerable<object> GetServices( Type serviceType );
5 }

NET技術(shù)ASP.NET MVC3 Service Location,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 天天舔天天色 | 美国人和狍xxxx视频 | 高清一区二区三区免费 | 天天色综网 | 天天插伊人 | 国产精品视频免费播放 | 手机看片自拍自拍自拍 | 91av国产视频 | 国内精品免费久久久久妲己 | 一区二区三区舞蹈区 | 美女免费精品高清毛片在线视 | 久久国产精品视频一区 | 99自拍视频在线观看 | 欧美性一区 | 国产免费观看视频 | 亚洲大成色www永久网 | 一本色道久久综合狠狠躁 | 欧美人与禽交片在线观看网站 | 久99久女女精品免费观看69堂 | 精品免费久久久久久影院 | 欧美精品在线免费观看 | 久久久夜色精品国产噜噜 | 亚洲线精品久久一区二区三区 | 国产精品久久久久久久久鸭 | 人人狠狠综合久久亚洲88 | 91视频免费看 | 欧美成人亚洲欧美成人 | 亚洲欧美激情综合第一区 | 国产成人精品日本亚洲网站 | 91中文字幕在线观看 | bt7086福利一区二区三区最新 | 亚洲一区免费视频 | 肉色丝袜一区二区高跟鞋 | 99精品久久精品一区二区 | 日本网址在线观看 | 亚洲精品视频二区 | 欧美成人网7777视频 | 视频在线观看黄 | 久久午夜青青草原影院 | 欧洲在线视频 | 国产男人和女人做性全部视频 |