WF本質(zhì)論

出版時(shí)間:2007  出版社:機(jī)械工業(yè)出版社  作者:Dharma Shukla,Bob Schmidt  頁數(shù):322  譯者:周健  
Tag標(biāo)簽:無  

內(nèi)容概要

  《WF本質(zhì)論》詳細(xì)講解Windows Workflow Foundation(WF)的運(yùn)作原理,并在解析原理的過程中給出WF的設(shè)計(jì)初衷。WF使用了一種開創(chuàng)性的方法來編寫和執(zhí)行程序?!禬F本質(zhì)論》兩位作者從WF項(xiàng)目立項(xiàng)開始就參與這個(gè)項(xiàng)目,負(fù)責(zé)規(guī)劃、設(shè)計(jì)、開發(fā)了其中的大部分技術(shù)。在《WF本質(zhì)論》中,作者高屋建瓴地探討了WF中的關(guān)鍵概念和整體架構(gòu),不僅涉及如何使用WF,還涉及為什么這樣使用WF,揭開了WF技術(shù)的神秘面紗。通過簡單而極具說明性的例子,《WF本質(zhì)論》演示了如何利用WF的可擴(kuò)展性編程來構(gòu)造具體領(lǐng)域的程序。  WF編程模型關(guān)鍵部分的核心概念和觀點(diǎn)。  活動(dòng)的執(zhí)行模型,包括活動(dòng)自動(dòng)機(jī)的細(xì)節(jié)、書簽機(jī)制、調(diào)度策略以及WF運(yùn)行時(shí)的線程模型?! 「呒増?zhí)行概念,包括活動(dòng)執(zhí)行上下文、事務(wù)、持久化點(diǎn)、鈍化、錯(cuò)誤處理、取消操作、補(bǔ)償和異步?! ≡趹?yīng)用程序中宿主WF運(yùn)行時(shí)?! 』顒?dòng)組件模型,包括驗(yàn)證的細(xì)節(jié)、WF程序的編譯、序列化以及可視化?! ?shù)據(jù)綁定、XAML、依賴屬性以及WF程序元數(shù)據(jù)。  聲明性條件及規(guī)則、活動(dòng)設(shè)計(jì)器以及如何駐留設(shè)計(jì)器?! ∽远x控制流模式,從簡單的順序和迭代控制流到復(fù)雜的圖和狀態(tài)機(jī)控制流等各種層次?! ∵\(yùn)行期間對WF程序?qū)嵗膭?dòng)態(tài)編輯。

作者簡介

作者:(美)舒克拉(Dharma Shukla) 施密德  譯者:周健Dharma Shukla 微軟架構(gòu)師,工作目標(biāo)為下一代編程模型。他是WF項(xiàng)目組的一名支柱成員,在定義WF體系結(jié)構(gòu)的過程中扮演了重要的角色。Bob Schmidt 微軟高級程序經(jīng)理,他的工作目標(biāo)也是下一代編程模型。自2003年開始,他的主要精力放在了WF的設(shè)計(jì)上。他曾獲得斯坦福大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位。

書籍目錄

第1章   剖析WF	1 1.1   線程進(jìn)程靈活性	4 1.1.1   書簽	6 1.1.2   可恢復(fù)語句組件	9 1.2   復(fù)合語句組件	11 1.3   控制流	15 1.3.1   復(fù)合語句組件	17 1.3.2   控制流的健壯性	19 1.3.3   現(xiàn)實(shí)中的控制流	20 1.4   程序的聲明	21 1.5   本章小結(jié)	23 第2章   WF程序	24 2.1   WF編程模型	24 2.1.1   活動(dòng)	24 2.1.2   復(fù)合活動(dòng)	28 2.1.3   WF程序	30 2.2   WF運(yùn)行時(shí)	33 2.3   本章小結(jié)	38 第3章   活動(dòng)的執(zhí)行	40 3.1   調(diào)度	41 3.2   活動(dòng)自動(dòng)機(jī)	42 3.2.1   活動(dòng)的執(zhí)行狀態(tài)和結(jié)果	43 3.2.2   活動(dòng)執(zhí)行上下文	46 3.2.3   活動(dòng)的服務(wù)	47 3.3   回顧書簽	49 3.3.1   WF程序的執(zhí)行	51 3.3.2   WF程序隊(duì)列	51 3.3.3   計(jì)時(shí)器	57 3.4   活動(dòng)的初始化和終結(jié)化	60 3.5   組件活動(dòng)的執(zhí)行	64 3.6   WF線程	74 3.7   本章小結(jié)	79 第4章   活動(dòng)執(zhí)行的進(jìn)階話題	80 4.1   活動(dòng)執(zhí)行上下文	80 4.1.1   活動(dòng)執(zhí)行上下文管理器	82 4.1.2   迭代控制流	84 4.1.3   交錯(cuò)式迭代	93 4.1.4   活動(dòng)執(zhí)行上下文的結(jié)束	96 4.1.5   AEC和WF程序的鈍化	96 4.2   取消	98 4.2.1   取消狀態(tài)	98 4.2.2   復(fù)合活動(dòng)的取消	104 4.2.3   提早完成	106 4.2.4   取消處理器	107 4.3   錯(cuò)誤處理	109 4.3.1   異常狀態(tài)	109 4.3.2   復(fù)合活動(dòng)的錯(cuò)誤處理	112 4.3.3   錯(cuò)誤傳播	113 4.3.4   錯(cuò)誤處理器	113 4.3.5   未處理錯(cuò)誤	114 4.3.6   為錯(cuò)誤處理建模	114 4.3.7   ThrowActivity活動(dòng)	119 4.4   補(bǔ)償	119 4.4.1   補(bǔ)償狀態(tài)	120 4.4.2   補(bǔ)償處理器	122 4.4.3   默認(rèn)補(bǔ)償	123 4.4.4   自定義補(bǔ)償	125 4.5   本章小結(jié)	128 第5章   宿主應(yīng)用程序	129 5.1   WF運(yùn)行時(shí)	129 5.1.1   服務(wù)	131 5.3   創(chuàng)建WF程序?qū)嵗?134 5.4   運(yùn)行WF程序?qū)嵗?144 5.5   WF程序?qū)嵗拟g化	150 5.5.1   運(yùn)行期間活動(dòng)序列化	156 5.5.2   基于代理的序列化	156 5.6   WF程序?qū)嵗膾炱?162 5.7   WF程序?qū)嵗闹兄?164 5.8   放棄WF程序?qū)嵗?165 5.9   WF程序?qū)嵗耐瓿?166 5.10   WF程序?qū)嵗纳芷?166 5.11   本章小結(jié)	175 第6章   事務(wù)	176 6.1   TransactionScopeActivity活動(dòng)	177 6.2   保存點(diǎn)	181 6.3   事務(wù)服務(wù)	183 6.4   數(shù)據(jù)的事務(wù)化傳輸	187 6.5   本章小結(jié)	188 第7章   進(jìn)階話題	189 7.1   依賴屬性	189 7.1.1   活動(dòng)元數(shù)據(jù)	190 7.1.2   活動(dòng)數(shù)據(jù)綁定	195 7.1.3   附著屬性	198 7.2   使用XAML定義活動(dòng)類型	200 7.3   活動(dòng)組件模型	208 7.4   驗(yàn)證	211 7.4.1   活動(dòng)驗(yàn)證器	217 7.4.2   復(fù)合活動(dòng)的驗(yàn)證	217 7.4.3   驗(yàn)證選項(xiàng)	219 7.5   編譯	220 7.5.1   編譯器參數(shù)	221 7.5.2   編譯器輸入	222 7.5.3   驗(yàn)證和編譯	223 7.5.4   活動(dòng)代碼生成	224 7.6   設(shè)計(jì)器序列化	229 7.6.1   代碼序列化	231 7.6.2   XAML 序列化	233 7.6.3   集合序列化	234 7.7   本章小結(jié)	236 第8章   雜項(xiàng)	237 8.1.2   代碼型條件	239 8.1.3   聲明性條件	241 8.1.4   規(guī)則	243 8.1.5   規(guī)則集的執(zhí)行	247 8.2   動(dòng)態(tài)編輯運(yùn)行中的WF程序?qū)嵗?248 8.3   跟蹤服務(wù)	255 8.4   設(shè)計(jì)器	261 8.4.1   設(shè)計(jì)器基類	265 8.4.2   附著屬性	269 8.4.3   設(shè)計(jì)器動(dòng)作	272 8.4.4   設(shè)計(jì)器圖形	275 8.4.5   設(shè)計(jì)器布局管理	277 8.4.6   設(shè)計(jì)器主題	279 8.4.7   工具箱條目	282 8.5   駐留設(shè)計(jì)器	284 8.5.1   回顧WorkflowView控件	284 8.5.2   動(dòng)態(tài)解析活動(dòng)設(shè)計(jì)器	288 8.6   本章小結(jié)	290 附錄A   活動(dòng)自動(dòng)機(jī)	291 附錄B   控制流模式	292

章節(jié)摘錄

前言前  言 Windows Workflow Foundation(WF)是一個(gè)通用的編程框架,它可用于創(chuàng)建需要對外部實(shí)體的信號作出響應(yīng)的交互式程序。交互式程序的基本特征是它會(huì)在執(zhí)行期間暫停某一長短未知的時(shí)段,以等待輸入。 當(dāng)然,交互式程序并不是什么新現(xiàn)象。自從計(jì)算機(jī)網(wǎng)絡(luò)出現(xiàn)以來,交互式程序就廣泛應(yīng)用于兩臺計(jì)算機(jī)之間的通信。這些技術(shù)還適用于運(yùn)行在單臺計(jì)算機(jī)上的數(shù)據(jù)交換。這種技術(shù)的變體涵蓋了從套接字到Web服務(wù)等各種技術(shù),這些技術(shù)在程序通信領(lǐng)域已應(yīng)用了多年。盡管在這幾年中,編程模型的互操作性、可伸縮性以及易編程性等方面有了長足的發(fā)展,但開發(fā)人員在程序交互方面的投入依然匱乏。比如,時(shí)下流行的Web編程模型,這類模型通常為開發(fā)人員強(qiáng)加控制流模型,且非常生硬。因此,WF希望改變這一切。 WF編程模型的核心概念就是活動(dòng)—WF程序中的程序語句?;顒?dòng)的執(zhí)行具有固有的可恢復(fù)性,同時(shí)以片段式的方式執(zhí)行,它根據(jù)活動(dòng)與外部實(shí)體的交互來暫停和恢復(fù)執(zhí)行。當(dāng)你在深夜合卷睡覺前,一般都會(huì)在書本當(dāng)前閱讀的位置放置一個(gè)書簽,對WF中的活動(dòng)來說也是這樣,當(dāng)活動(dòng)等待外部輸入時(shí),它會(huì)在當(dāng)前執(zhí)行的位置做一個(gè)書簽,當(dāng)收到外部輸入打算恢復(fù)執(zhí)行時(shí),則從書簽的位置繼續(xù)執(zhí)行。 WF是一個(gè)框架,而不是一組由語法定義的編程構(gòu)造。WF中活動(dòng)的概念是可擴(kuò)展的,這使得WF程序中的表達(dá)式以及控制流相對于C#或Visual Basic這樣的語言要豐富得多。你可以使用領(lǐng)域?qū)S械幕顒?dòng)以及特定的控制流結(jié)構(gòu)來表示W(wǎng)F程序,因此,它能通過捕捉復(fù)雜的人機(jī)交互來高度擬真特定的場景。 WF運(yùn)行時(shí)是一個(gè)元運(yùn)行時(shí),它建立在通用語言運(yùn)行時(shí)(CLR)之上,并管理著WF程序的執(zhí)行。在一個(gè)分布式的環(huán)境中,WF程序可以在不需要做任何額外工作的前提下,相當(dāng)自然地暫停或恢復(fù),也可以執(zhí)行任意長一段時(shí)間。在WF程序空閑時(shí),它既不會(huì)執(zhí)行失敗,也不會(huì)過度消耗系統(tǒng)資源。在WF的上下文中,CLR的工作就是管理那些在內(nèi)存中代表WF程序的對象。而WF運(yùn)行時(shí)的工作就是管理WF程序的完整生命周期,WF程序的生命周期是可以跨越CLR線程、應(yīng)用程序域、操作系統(tǒng)進(jìn)程甚至機(jī)器的。 總之,WF提供了一個(gè)編寫和執(zhí)行交互式程序的編程模型。WF程序是由被稱為活動(dòng)的領(lǐng)域相關(guān)程序語句構(gòu)建的。這允許領(lǐng)域?qū)<铱梢允褂迷擃I(lǐng)域的概念來描述。 關(guān)于本書 我們撰寫這本書有一個(gè)簡單的理由,那就是我們都相信在WF的核心有一個(gè)令人矚目的概念。在當(dāng)今主流平臺上,這些概念還是第一次出現(xiàn)。WF的面向活動(dòng)編程方法采用了與時(shí)下流行的編程范式完全不同的原則,因此,學(xué)習(xí)WF最好的方式就是首先關(guān)注WF編程模型賴以建立的基礎(chǔ)概念。僅僅熟悉System.Workflow命名空間下的一系列類型,對于WF開發(fā)者來說是遠(yuǎn)遠(yuǎn)不夠的。 總而言之,這本書不會(huì)介紹WF的三個(gè)程序集中350個(gè)以上的類。WF有意地回避了WF的外圍設(shè)施,而將注意力集中于WF的精髓—核心編程模式和運(yùn)行時(shí)特性集。大量經(jīng)驗(yàn)告訴我們,從基本原理著手來學(xué)習(xí)一個(gè)框架是成為資深WF開發(fā)者的最可靠路徑。 撰寫這本書是對我們信念的考驗(yàn),也是對交互程序所做假設(shè)以及這類程序開發(fā)方式的檢驗(yàn)。如果這本書以及WF中的新概念能幫助讀者更好地構(gòu)建應(yīng)用,那么我們就成功了。 本書的組織如下。第1章介紹支撐WF編程模式的一些關(guān)鍵概念:書簽、延續(xù)、線程與進(jìn)程靈活性、鈍化、可恢復(fù)程序語句以及可恢復(fù)程序的運(yùn)行時(shí)。對這些概念的討論都游離于WF之外,以最簡潔的形式出現(xiàn),以求使討論最明確化。 第2章將第1章中介紹的概念映射到了WF編程模型中,因此,第2章可以說是接下來幾章的橋段。我們從這里開始開發(fā)活動(dòng),將這些活動(dòng)組合為簡單程序,從而運(yùn)行這些WF程序。 第3、4章討論活動(dòng)執(zhí)行的一些細(xì)節(jié)方面,包括書簽機(jī)制、錯(cuò)誤處理、取消操作以及補(bǔ)償邏輯。而描述活動(dòng)生命周期的活動(dòng)自動(dòng)機(jī)則是這兩章一致的主題。第5章探討構(gòu)建WF運(yùn)行時(shí)宿主程序的方法,同時(shí)展現(xiàn)WF的可擴(kuò)展性。第6章討論WF程序執(zhí)行中事務(wù)的臨界區(qū)功能。第7章講解許多與活動(dòng)和WF程序創(chuàng)作相關(guān)的進(jìn)階話題,其中包括驗(yàn)證和編譯。第8章介紹WF核心概念的若干外圍特性。 附錄A是活動(dòng)自動(dòng)機(jī)的一個(gè)參考。附錄B為我們展現(xiàn)若干復(fù)合活動(dòng)的代碼,這些復(fù)合活動(dòng)比正文中所開發(fā)的復(fù)合活動(dòng)復(fù)雜得多。這些例子強(qiáng)調(diào)了WF編程模型的那些擴(kuò)展點(diǎn),同時(shí)演示了復(fù)合活動(dòng)構(gòu)建復(fù)雜控制流模型的能力。 在本書中,我們完全把重點(diǎn)放在Windows Workflow Foundation上。我們假定讀者已經(jīng)掌握C# 2.0和CLR的基本知識。如果讀者還不了解這些,可以參考《The C# Programming Language, Second Edition》,Anders Hejlsberg等(Addison-Wesley,ISBN:0321334434)和《Essential .NET, Volume I: The Common Language Runtime》Don Box和Chris Sells(Addison-Wesley,ISBN:0201734117),以上列出的書都是這一領(lǐng)域的權(quán)威資料。本書中的示例都十分簡單—我們有意識地降低場景對示例的干擾,將注意力集中在概念本身。在你掌握了竅門之后,我們期望你能嘗試將本書中的概念和技術(shù)應(yīng)用到你所從事的行業(yè)中。 致謝 WF項(xiàng)目開始于三年前。當(dāng)時(shí)我們這個(gè)小型工程師團(tuán)隊(duì)已經(jīng)強(qiáng)烈地預(yù)感到:改變陳舊的程序構(gòu)造方式,開創(chuàng)一種嶄新的程序開發(fā)方法已經(jīng)勢在必行。我們的首次嘗試發(fā)生在與Microsoft Office團(tuán)隊(duì)合作的時(shí)候,當(dāng)時(shí),我們思忖著該項(xiàng)嶄新的技術(shù)是否能成為他們計(jì)劃中的工作流特性的基礎(chǔ)結(jié)構(gòu)。我們的工作進(jìn)展十分順利,WF成為了Microsoft Office 2007中工作流特性的基礎(chǔ),同時(shí)更讓我們引以為榮的是,WF的第一個(gè)公開版本是作為.NET Framework 3.0的一部分發(fā)布的(眾所周知,.NET Framework 3.0是和Windows Vista一起發(fā)布的)。許多人為WF的設(shè)計(jì)出謀劃策,沒有他們的意見和建議,WF就沒有今天的公開發(fā)行版。在這里,我們不可能對每個(gè)為WF作出貢獻(xiàn)的人們致謝,但是我們還是向他們所做的努力致敬。 我們的審校也做了相當(dāng)多的工作,他們告訴我們什么該著重強(qiáng)調(diào),哪里不能著墨過多,他們還幫我們指出了各章節(jié)的錯(cuò)誤和遺漏。他們是:Angel Azcarraga、Don Box、Krzysztof Cwalina、Joe Duffy、 Omri Gazitt、Ian Griffiths、Mark Michaelis、Dennis Pilarinos、Jeffrey Richter、Andrei Romanenko、Akash Sagar、Chris Sells、Clemens Szyperski、Nate Talbert、Eric Zinda,正是有了以上各位的反饋意見,才能使本書變得更好。Ian提供了極具針對性和洞察力的意見;Aditya Bhandarkar在設(shè)計(jì)期間一節(jié)中提供了額外的幫助;Don不僅提供建設(shè)性的意見,還慷慨地捉筆為此書撰寫序言。 對我們來說,在寶貴的業(yè)余時(shí)間撰寫這樣一本書確實(shí)是一個(gè)挑戰(zhàn)。我們要感謝Addison-Wesley公司的Karen Gettman和Curt Johnson,所有耐心指導(dǎo)我們的出版界專家們,以及所有將我們的文字最終變?yōu)闀静⒊尸F(xiàn)在您面前的人們。 如果本書還有什么紕漏的話,那一定是我們的緣故了。 我是幸運(yùn)的,因?yàn)槲覐腤F誕生那一刻起就參與其中。WF是我迄今為止在微軟做過的最有趣的項(xiàng)目。對我來說,撰寫本書是構(gòu)建WF技術(shù)的一種延續(xù)。現(xiàn)在這本書完成了,我也可以好好休息一下了。 多年來,Don Box一直是我的靈感源泉,他一直鼓勵(lì)我撰寫這本書,對此我十分感激。Don幫助我構(gòu)思本書的內(nèi)容,他廢寢忘食的精神以及和藹可親的態(tài)度,我將銘記在心。再次深表感謝,Don! Bob Schmidt和我共同完成了本書的撰寫工作。和Bob一起工作是一段十分愉快的經(jīng)歷。我們先是一起構(gòu)建WF技術(shù),隨后共同完成本書。謝謝你,Bob,祝旅途愉快。 還要感謝那些一線的編程人員,感謝你們將不可能變?yōu)榭赡堋?我一直十分感激Abhay Parasnis,他創(chuàng)建了一套獨(dú)特的環(huán)境,不僅為孕育技術(shù)革新提供了溫床,并且奇跡般地在短時(shí)間內(nèi)讓實(shí)現(xiàn)新技術(shù)成為可能。良好的開端是成功的一半,在WinOE期間的工作給我留下了美妙的回憶。 感激我的父母為我不計(jì)回報(bào)地付出,還有Pushpa堅(jiān)定的支持。 我還要感謝我的妻子Bina,她總與我形影不離,還有我的女兒Anya,使一切都變得這么美好。 Dharma Shukla 2006年7月 作為首個(gè)研發(fā)經(jīng)理加入WF團(tuán)隊(duì),我確信這將是個(gè)研究改變程序開發(fā)方法的契機(jī)。能夠?yàn)檫@種新技術(shù)的開發(fā)貢獻(xiàn)自己的一份力量,我深感榮幸,與此同時(shí),我也十分榮幸地參與了撰寫這本關(guān)于WF的書。 Dharma Shukla誠邀我與他合著這部書籍,我深表感激,他的洞察力、熱忱以及對真理的追求,使得我們彼此的討論總是熱情洋溢,而他的寬闊眼界與豐富的想象力,為這部書疏理出清晰的脈絡(luò)。 我要對Don Box表示感謝,這期間,我們從他那里得到了很大的支持和指導(dǎo),Don Box有著敏銳的目光,設(shè)計(jì)的初始思路中著重于基礎(chǔ)的理念正是來源于他,這個(gè)理念使得我們能夠凝聚力量。 Abhay Parasnis不僅在WF項(xiàng)目中是絕對的主力,同時(shí)還起到了模范帶頭作用,他的領(lǐng)導(dǎo)能力在無形中激勵(lì)著我們。Abhay Parasnis理應(yīng)得到褒獎(jiǎng),這無可厚非。 由衷地感謝我的妻子Elaine,這么多年來她一直為我默默地付出,她是我堅(jiān)強(qiáng)的后盾。我的兩個(gè)兒子,Thomas 和Andrew,作為父親,因?yàn)橹鴷l繁地奔波于各項(xiàng)會(huì)議而無暇照顧他們的時(shí)候,他們總是在耐心等待而沒有無理取鬧,他們甚至知道什么時(shí)候才能進(jìn)入我的辦公室以提供給我些許樂趣與靈感—我向你們保證:這個(gè)美好的夏天將充斥著冰淇淋和你們喜愛的壁球運(yùn)動(dòng),一同期待吧。還有我的父母,你們讓我領(lǐng)悟到,全身心投入的團(tuán)隊(duì)能創(chuàng)造多么偉大的奇跡,你們對我的幫助是無價(jià)的,感謝你們。  譯者序譯 者 序 當(dāng)看到這本書的英文名稱時(shí),你是否會(huì)聯(lián)想到另一本重量級的書《Essential COM》。誠然,這兩本書除了名稱類似外,確實(shí)還有些淵源,為本書作序的正是《Essential COM》的作者,Don Box。既然本書能冠以Essential的名號,那必定有過人之處。 首先,據(jù)我所知,這是市面上第一本深入剖析WF(Workflow Foundation)的書(本書的中譯本更是關(guān)于WF的第一本中文資料)。本書詳細(xì)解釋了WF的底層運(yùn)作原理,并在解析原理的過程中,交代出了WF的設(shè)計(jì)初衷。從這個(gè)角度看,可以說這不是一本寫給WF初學(xué)者的書籍。它不能幫助讀者學(xué)習(xí)如何使用WF設(shè)計(jì)器,也沒有介紹出現(xiàn)在工具條中的每個(gè)活動(dòng),事實(shí)上,本書通篇沒有介紹任何一個(gè)WF自帶的活動(dòng)。但通讀本書后,讀者就能完全了解WF架構(gòu)者的設(shè)計(jì)目的,從而最大限度地發(fā)掘WF的潛力??梢赃@么說,WF是架構(gòu)在CLR之上的另一個(gè)CLR,它完全改變了傳統(tǒng)的程序開發(fā)方式。 其次,本書的兩位作者見證了孵化WF的全過程。Dharma Shukla是WF的架構(gòu)師,而Bob Schmidt則是WF團(tuán)隊(duì)的項(xiàng)目經(jīng)理。關(guān)于WF,此二人應(yīng)該是最有發(fā)言權(quán)的。也正是因?yàn)檫@個(gè)原因,才使得本書具備相當(dāng)?shù)纳疃?。另一個(gè)不得不提的人就是Don Box,他的深刻洞察力以及把握全局的能力,為本書提供了強(qiáng)大支持。 本書以一個(gè)最簡化的Hello World程序開篇,隨后漸進(jìn)式地改造該程序,最后該程序具有所有WF中的核心特性,可謂是麻雀雖小五臟俱全。在第1、2章中,作者從無到有地構(gòu)建了一個(gè)最簡化的WF程序。第3、4兩章則正式切入WF,介紹了作為WF核心概念的活動(dòng)的整個(gè)生命周期。隨后幾章則從WF的其他幾個(gè)側(cè)面入手,介紹了WF運(yùn)行時(shí)的幾個(gè)核心特性。當(dāng)然,本書不是一本參考手冊,所以不能也沒有必要包羅萬象。 早在大學(xué)期間,我就開始關(guān)注工作流技術(shù)了,但那時(shí)對業(yè)界來說,工作流技術(shù)始終是陽春白雪,直到WF的出現(xiàn)。WF第一個(gè)beta版發(fā)布后,我急急地試用了一番,由此我預(yù)感到這將是一種使工作流走向普及的技術(shù)。去年本書的原版面世,我又迫不及待地瀏覽了一番,這讓我對WF有了新的認(rèn)識:WF不僅僅是一個(gè)嵌入式工作流引擎,它更是一種新穎的編程方式。它打破了傳統(tǒng)的以編程語句為原子單元的編程方式,取而代之以活動(dòng)作為編程的基本元素。這讓程序的邏輯控制流等元結(jié)構(gòu)得以無限擴(kuò)展。因此,當(dāng)陳冀康編輯邀我翻譯本書的時(shí)候,我甚感榮幸。 本書的翻譯少不了周圍朋友的支持。 感謝陳冀康編輯對我的信任。與陳編輯的合作十分愉快,這段經(jīng)歷將使我終身難忘。 我還要特別感謝我的摯友沈群超,他的文字功底和語言組織能力使得原本生硬的語句變得生動(dòng)。他在新項(xiàng)目啟動(dòng)的強(qiáng)大工作壓力下,完成了全書的審閱工作,沒有他,這本書就不可能這么快和讀者見面。 感謝我的導(dǎo)師兼上司黃紀(jì)綱。在得知我正在進(jìn)行本書的翻譯工作后,他一直在給予我鼓勵(lì)和支持,協(xié)助我校對錯(cuò)誤。甚至于在工作安排上也照顧到我的翻譯進(jìn)度,有這樣老板的公司怎么能不成功。 我還得感謝我的女朋友。她雖然在工作上幫不上什么忙,但每天晚上回家后看到她的笑臉對我來說又何嘗不是一種最大的安慰呢。 在這里,對所有給予過我?guī)椭矣譀]能提到的朋友們一并致謝。 由于譯者水平有限,加之時(shí)間倉促,譯文中有錯(cuò)誤或不當(dāng)之處,敬請讀者不吝指正。我的郵箱是 zhoujian.ww@gmail.com。  周健 2007年7月 序言序  言 2006年7月,我寫下了這篇序,當(dāng)時(shí)我已經(jīng)預(yù)感到這將是一個(gè)美好的開始。 起初,程序員們就已經(jīng)發(fā)現(xiàn),將表達(dá)其意圖的程序用機(jī)器可讀的方法表達(dá)具有舉足輕重的作用。也正是這個(gè)念頭,導(dǎo)致了助記碼的廣泛使用。 更為重要的是,不僅開發(fā)者已經(jīng)逐漸意識到,相關(guān)領(lǐng)域的專家也已經(jīng)發(fā)表了專業(yè)意見—目前尚未存在任何運(yùn)行時(shí)框架或語言設(shè)計(jì)器能完全勝任數(shù)據(jù)模式的定義工作—這種觀念促使了行業(yè)相關(guān)語言的誕生。 Smalltalk、Java虛擬機(jī)(JVM)以及通用語言運(yùn)行時(shí)(CLR)等系統(tǒng)已經(jīng)證實(shí):諸如反射、序列化、產(chǎn)生式編程等類型定義的機(jī)器可讀標(biāo)識法是有其實(shí)際價(jià)值的。但是,類型的基本表示法(諸如字段、方法、類)很大程度上是一個(gè)封閉的世界,它不允許用戶定義諸如控制流、并發(fā)、邏輯結(jié)構(gòu)或者領(lǐng)域相關(guān)的概念(比如貼現(xiàn)政策或者四分音符),除非在將一個(gè)操作不透明地貫穿于多個(gè)方法體。 現(xiàn)在,人們開始反問自己:“既然類型定義能用于數(shù)據(jù),那為什么其他設(shè)計(jì)期結(jié)構(gòu)不能呢?” 幸運(yùn)的是,有一個(gè)人早在2003年就提出了這個(gè)問題,他就是我的好友,曾就職于Biztalk Server團(tuán)隊(duì)的Dharma Shukla。 當(dāng)Biztalk Server團(tuán)隊(duì)的成員開始將XLANG orchestration engine封裝為一個(gè)可嵌入的平臺組件時(shí),他們已經(jīng)可以把語言結(jié)構(gòu)從XLANG移植到另一個(gè)XML語法的語言上了(事實(shí)上,這項(xiàng)提案確實(shí)已經(jīng)提上了日程)。對于構(gòu)建Windows Orchestration Engine(WinOE)來說,這是迄今最為符合設(shè)計(jì)目的的方法。 幸運(yùn)的是,Dharma先生早已極具預(yù)見性地洞察到:對所有的程序定義“一種實(shí)模式”并非可行之計(jì),相反,他認(rèn)為應(yīng)該將它“元化”,用戶可以為他們所工作的領(lǐng)域定義自己的操作碼,于是WF項(xiàng)目朝著構(gòu)建一個(gè)可擴(kuò)展運(yùn)行時(shí)的方法進(jìn)行。這個(gè)重要的決策使你能使用XML語法來定義和組合這些操作碼,因此你有了一個(gè)系統(tǒng),這個(gè)系統(tǒng)可以讓你親自決定用于描述某個(gè)領(lǐng)域中的應(yīng)用程序的詞匯表和文句結(jié)構(gòu)。 在本書中,Dharma Shukla和Bob Schmidt向我們展示了Windows Workflow Foundation(WF)是一個(gè)極好的元運(yùn)行時(shí)的例子,它使程序員將程序的編寫與執(zhí)行置于其管理之下。開發(fā)者為程序定義模式,并提供一個(gè)該模式的解釋器來使其能被部署和運(yùn)行。這個(gè)簡單的概念會(huì)有大量衍生體。 是的,我說過,好戲即將上演,我們堅(jiān)信,并執(zhí)著期待。 Don Box 2006年7月,華盛頓州 Yarrow Point

媒體關(guān)注與評論

如果我要編寫一本工作流的圖書,那么,本書就是我想寫的。——Jeffrey Richter (http://Wintellect.com)Dharma Shukla和Bob Schmidt用一種易于理解而又權(quán)威的方法介紹了工作流技術(shù),真的值得一讀?!狢lemens Szyperski微軟公司軟件架構(gòu)師Dharma和Bob使得任何已經(jīng)精通C#和.NET框架的開發(fā)者以及那些想要登堂入室的開發(fā)者都可以學(xué)習(xí)和掌握這門技術(shù),他們做的非常不錯(cuò)??蓜e錯(cuò)過了這本書?!狫oe Duffy微軟公司CLR組項(xiàng)目經(jīng)理

編輯推薦

★第一本W(wǎng)F技術(shù)圖書,帶你了解.NET 3.0的核心技術(shù)之一。    [精彩試讀一]      "好戲即將上演......"-Don Box, 微軟公司軟件架構(gòu)師    Windows Workflow Foundation(WF)使用了一種開創(chuàng)性的方法來編寫和執(zhí)行程序。WF程序是由一些可恢復(fù)的語句塊(稱為活動(dòng))組成的,封裝了專有領(lǐng)域的邏輯和控制流的模式,這些模式都可以映射到真實(shí)世界的處理流程。《WF本質(zhì)論》兩位作者從WF項(xiàng)目開始立項(xiàng)就參與這個(gè)項(xiàng)目,負(fù)責(zé)規(guī)劃、設(shè)計(jì)、開發(fā)了其中的大部分技術(shù)。在《WF本質(zhì)論》中,作者高屋建瓴地探討了WF中的關(guān)鍵概念和整體架構(gòu),不僅涉及如何使用WF,還涉及為什么這樣使用WF,揭開了WF技術(shù)的神秘面紗。很多WF開發(fā)者都想知道如何通過編寫活動(dòng)來高效使用和擴(kuò)展框架,《WF本質(zhì)論》提供權(quán)威性的解釋和答案。通過簡單而極具說明性的例子,《WF本質(zhì)論》演示了如何利用WF的可擴(kuò)展性編程來構(gòu)造具體領(lǐng)域的程序。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    WF本質(zhì)論 PDF格式下載


用戶評論 (總計(jì)7條)

 
 

  •   Dharma和Bob使得任何已經(jīng)精通C#和.NET框架的開發(fā)者以及那些想要登堂入室的開發(fā)者都可以學(xué)習(xí)和掌握這門技術(shù),他們做的非常不錯(cuò)。
  •   這本書,寫的不好建議大家不要買
  •   內(nèi)容晦澀難懂,翻譯刻板,例子舉的也不具體和生動(dòng),對初學(xué)者不建議購買。
  •   還行。講的都是本質(zhì)的東西。可以從中得到很多啟發(fā)。對提高自身的編程水平很有好處。
  •   這本書比較深入,詳細(xì)介紹了WF的原理。不過不夠?qū)嵱?/li>
  •   我們要的是怎么使用vs2008開發(fā)wf,不是聽你說一堆理論的
  •   什么是WF?那是Windows Workflow Foundation的縮寫,它使用了一種開創(chuàng)性的方法來編寫和執(zhí)行程序。WF程序是由一些可恢復(fù)的語句塊(稱為活動(dòng))組成的,封裝了專有領(lǐng)域的邏輯和控制流的模式,這些模式都可以映射到真實(shí)世界的處理流程。... 閱讀更多
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7