2011-09-19 35 views
1

我正在開發一個具有複雜用戶界面的Web應用程序。看起來用相應的狀態機支持UI可能是一個好主意,定義了各種狀態之間可能的轉換以及相應的行爲。使用狀態機備份用戶界面

感知的好處是,用於控制行爲的代碼結構一致,並且UI的狀態可以保持並輕鬆恢復。

任何已經嘗試過的人都可以借鑑這種方法嗎?我需要注意哪些缺陷?

回答

1

關閉我的頭頂,這是一個有點明顯了,不過,因爲沒有人說什麼:

  • 我建議堅持應用服務器端的狀態,通過會話索引變量/用戶ID出於安全性和靈活性原因;

  • 接口更好地通過基於事件的方法IMHO建模,但這取決於您正在開發的用戶界面的哪一層,也取決於您選擇的開發語言。您可能能夠在項目觸發器和項目本身上存儲一些邏輯。

通過基於事件的方法,我有些指this technique,其中一些「多個視覺」面向環境(土坯彎曲,Oracle Forms和也HTML,在一種方式限定的)的使用。簡而言之,您使用觸發器(item.on_click,label.on_mouse_overtext_field.on_record_update)來驅動界面的狀態。

這種方法(分佈式控制)的一個非常常見的警告是無限循環:你有一個物品可以啓用另一個物品,當它啓動時會觸發自己的觸發器,並最終獲得第一個物件再次觸發相同的觸發器。這在開發時通常不明顯,但在測試時很常見。

一些語言/環境爲更明顯的情況提供了一些保護,但這是要留意的。

這可能對您的方法有用。

+0

當用戶界面發生變化時(例如,展開手風琴),會向服務器發送一條消息,然後相應地更新狀態機。您能否通過贊成基於事件的方法來擴展您的意思?用戶界面由多個用戶界面組件組成,分爲幾個「面板」,每個面板都有自己的特定行爲(和狀態)。面板的狀態一起構成UI的狀態。開發語言是C#,狀態機將駐留在服務器端。 – Ben

+0

我不是.net人,所以我不熟悉您的環境的限制或特定功能。我會用你要求的信息更新答案。 –