事件驅動編程

13-05-26 banq
                   

事件驅動編程是以事件為第一驅動的編程模型,提到事件,可能有很多容易混淆的概念,這里的事件是指一種異步并發的消息模型,而普通的觀察者模式則沒有這個強調,觀察者和被觀察者之間通訊可以是同步機制。

同步機制的最大問題是會發生堵塞,不但導致性能大幅度降低,無法充分利用CPU潛力,浪費硬件投資,更重要造成軟件模塊的鐵板化,緊耦合,無法切割,不利于日后擴展和變化。

異步并發的概念非常符合日常生活中事件的定義,也應該是事件語義的重要核心,實際生活中,事件的觸發是無序且不可控的,對事件的響應當然要做到即時處理,如果用傳統線程機制同步處理響應,可能因鎖爭奪發生堵塞,結果導致大量事件未及時處理,非常沒有效率。

從客戶端和服務器概念來看,客戶端發出大量事件到服務器(如通過ajax等),服務器應該是多線程響應,但是如果每個線程內部處理業務時發生堵塞,線程再多也沒有用,也就不能發揮服務器高并發處理的能力。

所以,我們不只是在服務器后端要選擇事件驅動的socket架構,如Node.js或Vert.x,還要用事件驅動的編程模型將我們的業務落地到它們上面運行。這樣才能在后端形成從底至上徹底的事件驅動架構。

業務的事件驅動編程,實際上是將node.js的前后端socket事件驅動機制搬遷到業務領域模型和技術架構之間,正如瀏覽器或Iphone客戶端發出大量事件交由服務器處理,領域模型也能發生大量事件需要技術架構響應處理,比如大量同時讀寫數據庫等等。這兩者的機制應該是一樣。

下面這個PPT是從服務器的底層Socket的事件驅動架構上升到最高層業務邏輯的事件驅動編程,提出了聚合根的業務模型與Actor模型非常吻合的天然銜接。

事件驅動編程PPT下載

在線PPT

開源力量公開課第十九期- Java事件編程視頻

完整視頻下載:http://pan.baidu.com/share/link?shareid=3706618000&uk=2365734848

[該貼被admin于2013-09-18 14:46修改過]

                   

7
gameboyLV
2013-05-28 07:07

已報名,還沒見過活的banq =.=!

bingyang
2013-05-28 13:08

可以給軟件開發者指明正確的方向,非常有意義,。

chanball
2013-06-06 22:16

2013-05-26 09:35 "@banq

"的內容

開源力量公開課第十九期- Java事件編程視頻 ...

視頻只有一半,另一半呢?

3Go 1 2 3 下一頁
美女漫画大全