WF-全扫描(1):
第一天去公司新址上班同事们都发现一个很有趣的现象,公司广场前整整齐齐停了一溜Smart车,颜色还各不相同,Smart车很可爱,不管是敞篷的还是标配的看了都让人羡慕,您一定要问为啥?呵呵,因为隔壁就是奔驰大厦。中午吃完饭,偶尔就去奔驰公司展厅看看,顺便溜食。奔驰的同志们拥有奔驰的密度很高啊,这就叫靠山吃山,靠水吃水。
WF的下一层就是.NET 4.0,靠着CLR有不少好处。比如:web service,WCF,WPF等这些类库都可以和WF交叉使用,都是基于.NET4.0就不会有什么冲突。平时和在同事交流的时候,在WF上往往会有几个困惑,比如:在控制台应用程序上打印几行字,这个可直接Wirteline啊还需要工作流吗?关于这个问题,我想还是要转变一下思维方式,WF主要是应用在企业级的,工作流的完成或者暂时的停止等待往往需要几天甚至更长时间,在这种情况下我们就需要一种机制去维护这些线程,如果没有线程的优化,在大量机器访问服务器的时候会导致资源的浪费并且工作流系统的崩溃。
对于Writeline这样的工作来说其实就是优化的线程的阻塞机制,这样每一个访问的线程可以可以不再占用资源,所有的等待都通过阻塞线程来实现的,一旦系统条件满足,线程的阻塞就会停止,工作流就继续进行下去。
下面谈谈WF中经常提到的几个概念:
Persistence: 翻译成持续化,也可以称为“钝化”。这是当工作流进行时由于某种情况发生导致工作流终止,那么工作流持续化将会把工作流当前的状态保存到数据库(如:SQL Server)或者本地计算机中。
Compensation:这个是当工作流由于发生意外,回滚不可能恢复到原有状态或者回滚不可接受(如时间太长),将会有一个补偿的活动。
Tracking: WF提供跟踪机制,可以监控工作流状态
Transaction: 保持工作流状态与数据库中保存的工作流状态同步