最新评论
Clark159 2012-05-21 23:05
2012/05/21 23:00 在后记补充了一段文字,说明Service Locator跟IoC Framework的差异。 ^^
Clark159 2012-05-21 12:23
IoC Framework的主要职责是对象生成。
Service Locator的主要职责是对象存放、对象取得。
只是发展到了目前,两者几乎都实做了对象生成、对象存放、对象取得。
换个方式说,
大多的IoC Framework都封装了Service Locator的职责。
Service Locator也封装了IoC Framework的职责。
依照系统的需求,选择适合的实做来用就可以了。:D
向晚 2012-05-21 10:01
IoC已经足够强大了,如果再加上Service Locator模式貌似违反好莱坞原则 Do not call me, let me call you
破狼 2012-05-21 09:18
这种Service Locator利用ioc来处理,将生命周期,service管理交给ioc框架处理,企业库的Service Locator就是个很好的例子。个人想法
Clark159 2012-04-11 09:39
@Steven Chen
是阿,我是台湾来的~
文章内容是用Word内建的转换工具转换出来的,有些名词可能比较不准确。多多包涵阿 ^^"
沐訫 2012-04-01 10:35
刚在http://www.dotblogs.com.tw/clark/archive/2012/04/01/71208.aspx 看到博主的文章,然后又在cnblog 看到 非常感谢博主了
Clark159 2012-03-23 23:20
@我是小虫
-lock (_eventSyncRoot)保证一次只有一条执行绪,可以执行runEventDelegate(null);。
-而执行的runEventDelegate,不是当下OnNotifyArrived时候产生的eventDelegate,而是Queue里面最先存进去的eventDelegate。
透过这两点,对外发送Event就会成为,有优先级的单线程。
Clark159 2012-03-23 23:18
@zhyt1985
因为WaitCallback委派需要一个object型别的参数。
WaitCallback eventDelegate = delegate(object state)
我是小虫 2012-03-23 17:01
@Clark159
你好,我有两点不太明白,麻烦你给我指导一下
第一点:以我个人理解,这个queue主要是实现eventDelegate的排队进入和出来。它们排着队进入了【线程池】,你怎么保证先进入线程池的就一定先执行呢?
第二点:经过我测试,这样的方法在线程池里执行,还没有单线程的快,我还没弄懂是不是因为你用的lock使得线程相互等待,类似单线程程序了。
ps:我在static void obj_NotifyArrived(int data)
{
// 我在这里对方法的执行时间延长了之后进行测试的。
Thread.Sleep(5000);
Console.WriteLine(data);
}
zhyt1985 2012-03-23 15:56
第二段代码88行:runEventDelegate(null); 为什么传入的参数是null?
我试了一下好像随便传什么都不会影响结果,不明白这是为什么?
Clark159 2012-03-22 23:13
主要就是,先使用Queue来做顺序的纪录,然后handlerDelegate内部再从Queue一个一个取出来执行。 ^^
我是小虫 2012-03-22 17:31
这样的隔离太神奇了。我没能完全看懂,有些地方的执行机制我还没弄明白。例如最后把(WaitCallBack)handlerDelegate丢给了线程池,可是handlerDelegate内部的执行路径我没有明白。【执行到最后的时候是变成了一个eventDelegate放在线程池中了么?】
