乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Event-Listerner事件監(jiān)聽模式

       CevenCheng 2011-07-28

      事件監(jiān)聽模式其實就是一種觀察者模式,只是角度有點不同,在Java的JavaBean機制以及GUI中都使用了事件監(jiān)聽模式。在如今AJAX RIA客戶端中,事件監(jiān)聽模式也成為一個主要的界面模式。

      事件監(jiān)聽模式分同步和異步兩種實現(xiàn)方式,JavaBean機制和GUI基本都是同步機制,事件監(jiān)聽異步模型,需要引入Event Queue。

      事件監(jiān)聽同步模式分兩個部分:Event Source和Event Listener:
      Event Source:被監(jiān)聽者的事件集合,可能是方法,提供事件的注冊加入和移除功能。類似被觀察者的集合。
      Event Listener:事件的監(jiān)聽者,當事件被觸發(fā),所有監(jiān)聽這個事件的監(jiān)聽者將被通知,然后執(zhí)行自己的Action響應動作。

      事件監(jiān)聽異步模式在Source和Listener之間引入event queue,
      event queue是一個基于事件的publish-subscribe. 它一種松耦合方式提供不同模塊和角色之間異步通訊。它比同步更加松耦合,這樣,我們就把Source-Listener改成了publish-queue-subscribe方式。

      事件監(jiān)聽模式使用在客戶端RIA比較多,因為這里是用戶輸入的源頭,是事件發(fā)生的源頭。而且在目前WOA趨勢下,事件監(jiān)聽模式不能只單獨局限于RIA客戶端這個范圍,還需要把事件通過http形式傳遞到服務器端,也就是跨客戶端和服務器的,事件必須和服務器的PUSH異步結合在一起。這是一種先進的架構設計。

      基于Javascript的ZK 5 RIA已經(jīng)實現(xiàn)了這種先進的事件監(jiān)聽模式,見:
      http://docs./wiki/ZK_5:_Chat_with_Event_Queue#Event_queues_and_server_push

      如果將這種異步的事件模式和服務器的OSGI結合,那么在服務器端更新一個Jar模塊,可以主動通知到客戶端瀏覽器,
      這對服務器端模塊管理很有好處。
      http://bundle-exception./2009/07/zk-on-osgi-dynamic-asynchronous.html


      記得在Header First設計模式中,MVC被看成一種復合設計模式,是策略模式和觀察者模式的有機組合(很多其他文獻中把MVC層看成一種架構風格),其談到MVC設計CS的時候可以嚴禁的實現(xiàn)策略模式和觀察者模式,但是MVC面對BS時候尤其是現(xiàn)在主流框架在jsp/servlet上沒法支持觀察者模式,因為你不可能把jsp注冊為model的觀察者,所以jsp/servlet一直從根據(jù)上不支持push,以至于主流push技術都需要客戶端首先發(fā)起請求“我需要接下來的一段時間里你每10面更新一次新聞”,之后才可以開啟push。
      所以我在考慮是不是可以基于freemaker封裝一個模板,然后摒棄jsp,而實現(xiàn)自己可注冊監(jiān)聽的服務頁技術呢?

      嚴格來說:MVC模式是一種同步機制,MVC的Controller是Mediator模式,而Mediator模式的特點和缺點就是封裝通訊,而Observer模式則是分離通訊。

      實踐證明:象Observer這種分離通訊的做法是符合可伸縮性要求的,而Mediator模式這種封裝通訊是不可伸縮的。

      所以,可以說MVC模式是不可伸縮的,所以,才有REST替代一說,也可以在MVC中引入事件模式。ZK5的設計就是這種基于MVC模式基礎上的事件異步架構。

      所以,現(xiàn)在只是使用一個MVC的Web框架已經(jīng)遠遠不滿足伸縮性要求。

      說得不客氣的話:現(xiàn)在所有的基于MVC框架,如Struts 2或Webwork JSF Wicket,如果不在其上引入異步事件框架,都是不合格的,都是落后的技術。


      > 現(xiàn)在所有的基于MVC框架,如Struts 2或Webwork JSF Wicket,如果不在其上引入異步事件框架,都是不合格的,都是落后的技術。

      我覺得這些MVC框架不支持異步是因為其基于jsp/servlet封裝起來的,servlet2.x 全都不支持異步,底層都不支持,指望上層架構如何能實現(xiàn)?所以要么等servlet3.0規(guī)范為大多數(shù)應用服務器實現(xiàn)之時,要么干脆摒棄jsp/servlet和主流servlet容器,用mina封裝通訊,第三方包解析http,freemaker定制頁面模板,實現(xiàn)真正的異步

      >干脆摒棄jsp/servlet和主流servlet容器,用mina封裝通訊
      這才是最靈活 最伸縮的好辦法,也是我目前推崇的。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多