將Web應用程式設定成有限狀態機

2021-07-06 11:05:38 字數 1056 閱讀 5738

雖然web應用程式是目前最熱門的主題,但它們的程式設計模型有別於傳統的、非web的應用程式,這為開發者帶來了新的挑戰。傳統應用程式具有相當確定的控制流,但web應用程式要針對不由自己控制的外部事件(http請求)來採取行動和生成輸出。

我們無法強迫這些事件按特定順序發生,或者強迫在特定情況下發生,所以當使用者採取非預料之中的操作時,必須特別小心地確保應用程式不會被打斷。但是,針對web程式設計模型所帶來的問題,作為一種解決方案,讓我們來看一看將web應用程式建模為有限狀態機的概念。這樣一來,我們能建立可靠的應用程式,並可在任何情況下做出確定的響應。

什麼是有限狀態機

傳統應用程式的控制流程基本是順序的:遵循事先設定的邏輯,從頭到尾地執行。很少有事件能改變標準執行流程;而且這些事件主要涉及異常情況。「命令列實用程式」是這種傳統應用程式的典型例子。

另一類應用程式由外部發生的事件來驅動——換言之,事件在應用程式之外生成,無法由應用程式或程式設計師來控制。具體需要執行的**取決於接收到的事件,或者它相對於其他事件的抵達時間。所以,控制流程既不能是順序的,也不能是事先設定好的,因為它要依賴於外部事件。事件驅動的gui應用程式是這種應用程式的典型例子,它們由命令和選擇(也就是使用者造成的事件)來驅動。

web應用程式由提交的表單和使用者請求的網頁來驅動,它們也可劃歸到上述類別。但是,gui應用程式對於接收到的事件仍有一定程度的控制,因為這些事件要依賴於向使用者顯示的視窗和控制項,而視窗和控制項是由程式設計師控制的。web應用程式則不然,因為一旦使用者採取不在預料之中的操作(比如使用瀏覽器的歷史記錄、手工輸入鏈結以及模擬一次表單提交等等),就很容易打亂設計好的應用程式邏輯。

顯然,必須採取不同的技術來處理這些情況。它能處理任何順序的事件,並能提供有意義的響應——即使這些事件發生的順序和預計的不同。有限狀態機正是為了滿足這方面的要求而設計的。

有限狀態機是一種概念性機器,它能採取某種操作來響應乙個外部事件。具體採取的操作不僅能取決於接收到的事件,還能取決於各個事件的相對發生順序。之所以能做到這一點,是因為機器能跟蹤乙個內部狀態,它會在收到事件後進行更新。為乙個事件而響應的行動不僅取決於事件本身,還取決於機器的內部狀態。另外,採取的行動還會決定並更新機器的狀態。這樣一來,任何邏輯都可建模成一系列事件/狀態組合。

Web應用程式狀態管理

web應用程式狀態管理 一 web狀態管理概述 1 http協議使用的是無狀態的連線 2 對容器而言,每乙個請求都來自於乙個新的客戶 二 狀態管理解決方案 隱藏字段 2 為伺服器端程式提供預定義的輸入。3 儲存動態產生的頁面上下文資訊。三 cookie原理 1 伺服器在響應請求時將一些資料以 鍵 值...

web應用程式狀態管理

web應用程式狀態管理概述 http協議使用的是無狀態連線 1 客戶端和web伺服器建立連線 2 客戶端傳送http請求 3 伺服器端接收客戶端的http請求,生成http響應回發 4 伺服器端關閉連線,客戶端解析回發響應,恢復頁面 連線只針對乙個請求 響應,解決方案 1 表單隱藏字段 對伺服器端程...

WEB應用程式狀態管理

方案 cookie session url重寫 隱藏表單 會話 開啟瀏覽器,通過超連結或者按鈕返回伺服器,獲取到內容,關閉瀏覽器,稱為一次會話。會話解決的問題 使用者訪問伺服器,想要儲存當前的資料。表單隱藏字段 hidden可以區分多個表單提交。可以儲存當前使用者操作 的狀態。防止表單重複提交,儲存...