书评-Essential Windows Workflow Foundation

来源:互联网 发布:新开淘宝店三个月两心 编辑:程序博客网 时间:2024/05/21 07:14
ͼƬСŴ


Essential Windows Workflow Foundation(EWF) 如果有中文版,我希望可以和Essential COM一样翻译成WF本质论或者WF开发精髓。我想,该书的作者Dharma Shukla和Bob Schmidt完全做到了这一点,该书可以媲美COM本质论一书,COM是隐晦难懂的,而WF从一开始就透着灵气,一般很容易被人认为是新一代的控件编程,认为微软又一次将控件拖拽的无厘头放到了工作流领域。而两者也是有共性的,那就是WF和COM一样都是一种软件开发技术,COM是分布式组件和组件重用的编程技术,WF则是微软提供的Windows平台下对业务流程、业务逻辑和规则、并发以及控制进行系统级建模的技术,同样也是开发工作流特征应用的编程模型和框架技术

EWF可以轻易的达到COM本质论的高度,因为两位作者非常资深,一个是WF的架构师,一个是资深PM。但也许这本书的美誉和称赞无法达到COM本质论的高度,甚至许多人不会认为这是最好的有关WF的书籍,尽管我认为这是目前有关WF最好的书籍。
我认为原因有两个:

第一,WF和COM的年代不一样了,COM出生的时候,唯我独尊,而WF之前都已经有WCF和WPF了。其二,是这本书面对的读者,EWF更着重和关注在WF最底层和原理的深层次,因为这是作者的优势所在。但如同导弹专家和使用导弹的用户来说,这种落差非常容易理解,因为导弹专家可以将导弹的生成和运行过程剖析得非常的清楚和细致,但对于哪些使用导弹的人来说,他们可能更希望看到是一本类似有关WF开发的使用手册,使得他们可以遵循和依照,甚至模仿来开发自己最新的.NET应用。

可以说这不是一本面向WF初学者的书籍,因为对于WF初学者来说,可能他看完这本书,他还是写不出一个简单的WF应用;同样一个中级的WF开发人员,要花很久细细琢磨该书,才可能将书中的精髓应用到他的WF应用开发中去,这个过程,如同你看COM本质论一样,很多人看完了,还是写不出一个COM的应用来。因此,如果你是第一次或刚刚接触WF,那么我不建议你从这本书开始,建议你从
  • Microsoft Windows Workflow Foundation Step by Step
  • Foundations of WF
  • Programming Windows Workflow Foundation
  • Pro WF: Windows Workflow in .NET 3.0
这些书开始,但反过来看,当你看过这些书,反过来你可能会喜欢EWF这本书,你会发现其他WF的书都是类似的套路,什么是WF,WF内置的多个工作流组件的介绍,WF和WCF或SPS 2007的应用介绍,反而没有EWF这本书的内涵深远和大气,所以EWF是一本值得你购买和收藏的有关WF编程的一本书,另外一本可能就是Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C# 我认为也是充满期待和有深度的,感觉上我认为EWF一书并不是博大精深概括和涉及到WF的方方面面,有些WF的话题和特性书中基本没有提,有的提及甚少,我想这是该书另外一个不足。抑或是作者根本就是这么设计,因为12个月后他会出第二版?

EWF一书的编排和构思,和COM本质论非常类似。我建议你不要顺着看,而是跳着看,然后再顺着看。
第一章到第四章是这本是绝对的经典和重头戏,也是WF很隐晦难懂的部分,这四章的描述打倒了任何工作流编程人员对WF误区和新观念,记得网上那些剖析开源工作流产品的开发人员,总是在翻阅代码之后,将某个工作流产品的精髓定位在某个代码或处理段落上,从而认为自己可以总结出这个工作流产品的特性了。但WF不同,看完这四章,往往才是你刚刚入门的时候。

对我来说,第一章是最难懂的,或者说最难理解和完全掌握的,往往你以为自己已经明白了,但这是你的意识这么告诉你,你的大脑是一片空白,二三四章都是在讲WF最核心的概念,WF Program,WF Activity,WF Runtime,Activity Automaton, AEC,Scheduling,甚至Compensation。这些都是WF编程模型中最核心最基本的概念和思想。这四章如同COM本质论的前4章一样,看着看着你会发现你又会到了IUnknown,QueryInterface,Aggregatable Class和Containment的时代,你会发现,也许你一点也不喜欢WF,一点也不喜欢这种直面深刻的冰冷剖析,你会发现有时候我们过分的追求“它为什么会这样”,一点也不好玩,很多时候其实我们更想知道“如何去用好它”。

这绝对是一个坎,问题在于你能否走过来。我想这也是对翻译中文版的译者的一个挑战。而后的三章绝对让你豁然开朗,因为Application,Transactions,Advanced Authoring这三章,就变得通俗和相对独立,无论初学者,还是高级的开发人员,都会从中发现WF的一些自己以前从来不知道的东西和概念,我特别喜欢第七章一开始介绍的DP(Dependency Properties),第五章的WF应用也不错。我建议大家可以先看这3章甚至第8章,然后再再返回头看前四章,之后再看最后一章-第八章和二个附录。和COM本质论一样,作者认为如果你理解了WF的最基本的概念(1-4章)所论述的,那么后面的即使更深奥和复杂,也都能一马平川,反而不需要放过多的精力。

Don Box当年在COM本质论中说,COM的关键要素和概念在于,对象、接口和套间(Apartment)线程模型;也有人WF的关键要素在于Activity,WF Runtime和WF Hosting,以及三者之间的互动。不过更通俗的讲,WF试图在设计时提供XML的定义语言,让某个领域的专家能够将他们的意图和想法先用一种领域相关的语句(Activities)描述出来(某种行为),接着根据业务需要,将这些语句进行组织和定义以完成某种任务--这一般是我们做行业需求和设计的场景

对应开发人员来说,编写原生或天然支持业务流程、规则和控制特性的应用是一种梦想,而WF似乎想更简单的定位在提供一种“Reactive programs ”-可以理解成一种永远运行着的程序,一种原生支持的后台服务器端的场景,即可以为某个任务而一直运行某个逻辑处理的实例,程序被界面或指令控制,可以开始、停止、暂停、挂起、再启动,每个时刻可以接受各种输入,辨别不同的业务或逻辑规则,进行运算并产生不同的输出,以及存在和展现不同的状态。--这一般是我们开发应用的场景(设计和运行时刻)

所以说,这也许不是一个简单的工作流技术。从需求和设计的角度来看,WF是一种可以快速跨越行业需求、设计和开发边界的应用实现技术,而现在.NET平台,开始提供一个编程的模型和底层的技术来支持极为普通和常见的业务流程、业务逻辑和规则、并发以及控制的系统级建模和实现。

就目前来说,WF依然是.NET FX发展的一个最新进展,同时也是非常基础甚至原始的先进技术和框架,就.NET开发人员来说,它是一个很好的朋友但绝对是一个需要你花不少时间和精力才能结识的新朋友,Essential Windows Workflow Foundation则是一本讲述你这位朋友个性、行为和喜好的书,从另一个角度来说,这本书针对WF的一些功能、特性进行了翔实丰富甚至揭秘性的说明,但请也相信我,该书所有的描述并不包括WF的全部,它更倾向于作者认为重要和特别的部分,并聚焦和定位在某些对WF感兴趣的中高级读者。

而我们为什么会去了解一个朋友,去结识一段友谊,我想很重要的一个原因,是我们相信他在现在和未来会对我们有帮助和价值,抑或是我们喜欢他的某个个性或行为。同样如果你最近体验到最新Visual Studio "Orcas" (March CTP)以及.NET FX3.5中WCF和WF的集成,看到未来发展演化的功效,你会有更多的兴奋和期待。因为WF的确是一个个性十足并且君子不器的朋友。

Don Box在该书的序言中写道“Something big is about to happen….”翻译成中文,我想就是这句:精彩,才刚刚开始

同样这也是我看完这本书的感觉---------一切精彩,才刚刚开始

最后祝你阅读快乐!

小气的神(ccBoy)
2007.02.19一稿,03.09 晚修正