首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

RichClient/RIA 原則與實踐(下):事件管理與觀察者模式

     編輯:關於ASP.NET

事件管理是 RichClient 開發最難掌握、也最關鍵的部分。良好的事件設計讓使用者思維流暢不中斷,實現「一切皆異步」的終極目標。

從非同步操作到事件抽象

取股票資料不應只是「背景執行緒跑完回呼」,而應建模為事件流:

  • 開始取得資料
  • 正在取得資料
  • 取得完成
  • 取得失敗

介面僅回應事件,運算於他處悄悄進行。同一資料可能在多處以不同形式呈現(Skype 通話中頭像顯示忙線、通話視窗另一種顯示;MSN 簽名在好友列表可編輯、聊天視窗唯讀)。資料更新時,所有檢視需同步反映——單純 runInAnotherThread 完全無法解決。

觀察者模式實作

StockDataRetriever {
  observers: []
  retrieve() {
    try {
      theData = ... // 遠端取得
      observers.each { |o| o.stockDataReady(theData) }
    } catch {
      observers.each { |o| o.stockDataFailed() }
    }
  }
}

StockDataRetriever.observers.add(StockWindow)

StockWindow {
  stockDataReady(theData) { showDataInUIThread(); }
  stockDataFailed() { showErrorInUIThread(); }
}

忽略事件抽象將導致架構級災難,小修小補無濟於事。此為核心原則,必須深度掌握。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved