日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

在.Net 4.0下用dynamic为你的系统解耦

發布時間:2025/3/15 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在.Net 4.0下用dynamic为你的系统解耦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? .Net的應用程序為了能夠使用已有的組件或者類庫,在.net 4.0以前唯一的方法就是去引用這個組件所在DLL,或者是引用該組件的聲明接口(Interface)的DLL然后做通過Activator或者是反射去構造該組件。無論如何你都要在你使用該組件Project里面做一個DLL的引用。雖然引用組件聲明接口的方法其實已經是耦合度不算高了,能夠把定義和實現分離了。但是很不幸的是好像微軟的開發人員都不喜歡將Interface單獨放置到一個DLL里面,一般都是有Interface然后就會在同一個DLL里面帶了個默認的實現(據說JAVA的好多實現都做到了Interface和實現沒有放置到同一個jar里面的)。使得引用DLL一般比較大,在一般情況下,如果你的程序不考慮升級,不是通用類庫考慮讓別人經常調用的話,這種做法是沒什么問題的。但是如果你提供的是一個通用的類庫而且你又使用了另外一個通用類庫(通常在企業里面開發自己的開發框架都會有這種情況,在自己的開發框架里面直接應用微軟的企業庫Enterprise Library)。在項目組想用你的框架的時候,發現微軟的企業庫已經升級了,他們想用最新的企業庫,而你的的框架又沒來得及升級的時候那就會變得很痛苦了,特別是使用的強名的。動不動就給你搞一個引用不匹配的錯誤出來。

???? 新的C#出來了,dynamic這個關鍵字讓我們看到了動態語言的特性了,于是就考慮著要不要用它來試試為我們的系統做一個解耦呢?于是做了個Sample,嘗試在一個沒有引用Unity的類庫里面直接試用Unity。

Project沒有引用任何跟Unity相關的東西,但是我們在代碼里面

Code public class DyActive{const string Con_ContainerName = "Container";public static Dictionary<string, object> Session { get; set; }public static void ActiveByDynamic(int times){Stopwatch watch = new Stopwatch();watch.Start();for (int i = 0; i < times; i++){dynamic container = Session[Con_ContainerName];ISubscriberRepository<object, object> repository = container.Resolve<ISubscriberRepository<object, object>>();try{Subscriber p = new Subscriber() { EmailAddress = "abce@g.cn" };repository.Add(p);}catch (ArgumentNullException ex){Console.WriteLine(string.Format("Parameter {0} is null.", ex.ParamName));}}watch.Stop();Console.WriteLine("Active By Dynamic! Elapsed:阰{0}", watch.ElapsedMilliseconds);}} 當然我們不會在這里構造Unity的Container的。

代碼寫好了,編譯也沒問題,那要在主程序里面調用看看能不能用了。

Main static void Main(string[] args){IUnityContainer container = new UnityContainer();var section = (UnityConfigurationSection)System.Configuration.ConfigurationManager.GetSection("unity");section.Containers[0].Configure(container);Session["Container"] = container;DyActive.Session = Session;System.Console.WriteLine("Times:{0}", times);DyActive.ActiveByDynamic(times);ActiveByInterface();times = 10000;System.Console.WriteLine("Times:{0}", times);DyActive.ActiveByDynamic(times);ActiveByInterface();times = 1000;System.Console.WriteLine("Times:{0}", times);DyActive.ActiveByDynamic(times);ActiveByInterface();times = 100;System.Console.WriteLine("Times:{0}", times);DyActive.ActiveByDynamic(times);ActiveByInterface();System.Console.WriteLine("Press 'Enter' to exit!");System.Console.ReadLine();}

?

?

?

?

?

?

?

使用這個類庫的時候就跟普通調用沒區別了。當然我們需要在Main里面構造好了Container然后再傳進去。

程序跑起來了,似乎一點問題都沒有,但是dynamic肯定會給系統帶來點損失的吧,如果這樣輕松解耦,而又不損失點什么的話那豈不是魚與熊掌可以兼得?第一時間肯定猜是性能有損失,但是具體損失多少呢?大家看看下面的結果

想不到吧,居然只是在第一次使用的時候慢了點(其實.net程序都這樣的)。其他時候Interface調用不相上下。

這應該是個比較滿意的結果了。看來微軟在IronPython上面的積累一點都沒白費啊!

Sample Code如果有興趣的話,可以短消息找我要。

?

?

轉載于:https://www.cnblogs.com/firewing/archive/2010/07/22/1782839.html

總結

以上是生活随笔為你收集整理的在.Net 4.0下用dynamic为你的系统解耦的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av免费在线观看不卡 | 国产精品久久一 | 亚欧精品在线观看 | 国产精品人人爽 | 黑人干亚洲女 | 国产精品99久久久久久动医院 | 五号特工组之偷天换月 | 一级黄色性生活视频 | 99国产超薄肉色丝袜交足 | 日韩有码视频在线 | 性xx紧缚网站 | 亚洲精品第二页 | 高潮无码精品色欲av午夜福利 | 日韩三级国产精品 | 免费啪视频 | 99热官网| 亚洲国产精品天堂 | 成人片免费看 | 亚洲精品污| 欧美操老女人 | 国产视频1区| 中文字幕免费视频观看 | 国产第一精品视频 | 久久无码视频一区 | 91成人免费电影 | 亚洲日本成人 | 一区二区三区免费毛片 | 中文字幕人成 | 狠狠躁狠狠躁视频专区 | 黑人乱码一区二区三区av | 美日韩在线 | 五月婷婷狠狠 | 浴室里强摁做开腿呻吟男男 | 国产传媒精品 | 一区二区三区国产精品 | 国产愉拍 | 日韩经典在线 | 亚洲AV成人无码久久精品同性 | 亚洲视屏 | 久久夜夜夜 | 日本熟妇人妻中出 | 韩国黄色片网站 | 午夜剧场91 | 天天狠天天插 | 一区二区三区啪啪啪 | 专干老肥女人88av | 91看片网站 | 久久久久国产精品无码免费看 | 亚洲av毛片成人精品 | 超碰人人在线观看 | 久久天天躁狠狠躁夜夜躁 | 成人欧美一区二区三区在线播放 | 免费观看污视频 | 91久久精品www人人做人人爽 | 亚洲色图在线视频 | 成人激情视频在线播放 | 天堂在线中文8 | 亚洲成人久久精品 | 国产片黄色| 特级特黄aaaa免费看 | 日日爱99 | 欧美黄色一区 | 你懂的av在线| 超污网站在线观看 | 影音先锋在线视频观看 | 色窝在线| 在线a网站 | 青娱乐伊人 | 欧美一级黄色片网站 | 少妇一区二区三区四区 | 少妇一级淫片免费看 | 五月婷婷av| 日韩在线精品 | 人妻91麻豆一区二区三区 | 色人阁五月天 | 亚洲精品久久夜色撩人男男小说 | 日日摸夜夜添狠狠添欧美 | 日本少妇一区二区 | 天堂资源 | 国产婷婷色一区二区三区 | 伊人22| 一本色道久久综合亚洲精品小说 | 亚洲AV综合色区无码国产播放 | 男女做激情爱呻吟口述全过程 | www.久热 | 青青草原国产 | 日韩亚射吧 | 国产视频精品一区二区三区 | 亚洲社区在线观看 | 成人做爰www看视频软件 | 中文字幕资源站 | 91亚洲天堂| 欧美精品一级二级 | 91视频分类| 国产精品视频自拍 | 国产欧美日韩在线视频 | 黄色中文字幕在线观看 | 亚洲综合伊人久久 | 亚洲成年人在线 |