告别日记
一直以来在只写日记,因为总认为自己写的那些东西不够资格发表出来,毕竟大多数只是在摘录学习。
还有半小时0点,听着任贤齐的飞鸟,想起刚听这曲子时我还在念高中,想起刚分别一年多我忘了大学兄弟的生日,工作流 Wcf 今天过得还真累。
难怪那么多书会教人怎么释放压力。 现在才发现我的野心与我的能力间的巨大落差。无法想象facebook的第一版如何能在一周内由3个人写出。
想起前天看到浙大的一个讲师跳楼自杀。清华的双学士,美国西北大学的博士后。只能在中国住着57平的房子,用最普通的家什,就这样还被校方认为是对其的恩典。而山西的黑金老板们呢。我不想做愤青,只是搞不懂小时候老师让我们好好读书究竟是教导还是误导。就此打住。
记录下今天的所得。
1。 工作流的内核是有用到IOCP 完成端口的,我是觉得没必要深究,但有一点得注意,既然是IOCP就必然是多线程。我们调一个WorkflowInstance的Start方法实际上该Instance中工作流Activity的实现过程就在另一个线程了。详情可以参考老徐的博客。地址没贴,逛他的博客会受益良多的。
2.状态机工作流,可以以事件作为触发条件,并且可以把杂七杂八的东西都放在事件的实例e中丢到状态机工作流中。状态机工作流可以启顺序工作流,并且将e中的杂七杂八的属性绑定到顺序工作流中,这样以一个e就能将复杂的结构体进行传递了。有点像SocketASyncEventArgs中的UserToken属性似的。都是可以传结构体的。对工作流配置属性可以用wdp如果有装resharper的话会有模板,很快捷,而且不容易出错。 1
3 DependencyProperty.Register(
4 "NewFunctionDownEventArgs", typeof(NewFunctionDownEventArgs), typeof(BusinessWorkflow));
5
6 [Description("NewFunctionDownEventArgs")]
7 [Category("NewFunctionDownEventArgs Category")]
8 [Browsable(true)]
9 [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
10 public NewFunctionDownEventArgs NewFunctionDownEventArgs
11 {
12 get { return ((NewFunctionDownEventArgs)(GetValue(NewFunctionDownEventArgsProperty))); }
13 set { SetValue(NewFunctionDownEventArgsProperty, value); }
14 }
3.关于外部方法的调用,需要制定接口,感觉和wcf似的,将接口引申为了契约。然后才能调用满足该接口的方法。
1
3
4 ExternalDataExchangeService dataService=new ExternalDataExchangeService();
5 WorkflowRuntime.AddService(dataService);
6 dataService.AddService(this);
7
8 WorkflowRuntime.StartRuntime();
dataService的AddService的传入参数是实现该接口的类的实例对象。
4.TM过0点了,还有大堆的事,我做事真够慢的。