網站工程結構

最近在做網站。

因為是全新的工作機會,而且有全新的職場觀點,所以,我用了蠻多較深度的思考,來處理網站的結構。

以下稍微提出一點點系統分析:

權限

我的網站提供了多個組織系統,並設想每個組織可以個別設定自己的權限模板,因此,權限是最核心的系統單元。

原本每個帳號都獲得天然的授權,自己的資料,可以自己操作。

而權限基本是跟隨著角色而定義的一份對照表,依序規定該角色可以做什麼事情,而不能做什麼事情。

就像一張遮罩紙板一樣,把權限模板蓋罩到個別帳號上,系統對照著模板與帳號,決定要不要開放現有功能。

而特殊權限,則是對權限模板做一些修改,而產生特殊的權限模板。比喻為將遮罩紙板多剪幾個洞。

每一個組織要有一些角色,而每一個角色都有一份權限模板。若一個帳號註冊為一個角色,則當帳號登入之後,要把該角色的權限模板與該帳號的天然權限綜合評估,而產生一份專屬於該帳號的權限模板,放在 session 中。

權限模板是最核心的系統單元,因此,它的上層系統單元,則是 session 。

Session

網站系統是以使用者帳號資料為本。登入一個帳號之後,它之前所存在資料庫裡,屬於背景性質的資料,包括使用者個人資料與權限模板,都要抽取出來,建立為一組份量較小而形狀雷同於資料庫的結構,放在記憶體中。這個結構叫做 session 。

Session 是系統的第二層核心單元,有二項工作:建立系統資料的縮影,並且查核權限。

對系統的其他功能單元而言, session 是資料模型的化身與索引。

在系統開始產生每一張網頁之前,要先用 session 核對授權,接著是從 session 取出個人資料來使用。

主要操作

主要操作是使用者進入系統之後,經常做的事情。例如,新聞網站的使用者,經常在系統中打新聞稿。

主要操作的設計,盡可能簡單,並且快一點完成設計。盡量不要有太多自我描述的部分。

不過,會有另一個系統單元要來描述使用者做了哪些主要操作。這些側面描述資料,可以用來做一些外圍的功能,包括通知訊息、稽核報表與記錄檔。

通知訊息

像 facebook 那種小小紅色標籤,寫著你有幾通訊息未讀的樣式,蠻流行的。

在系統中,本來稱為記錄檔的東西,如果將它分割並且貼成表格,則稱為報表。而如果將它寄送給該寄到的人,並藉由 AJAX 貼到小小紅色標籤裡,則稱為通知訊息。

當然,要讓通知訊息被收合為「誰和誰都對你的文章發表回應」這種簡單又有意義的描述,就要聰明地拆解通知訊息。

基本上,按照語言的分割,簡單來說,每一則通知訊息可分為主詞、動詞、受詞、被動物。大約可以分為三張資料表:通知訊息、被告知之事物、通知者。

網頁表單驗證

網頁表單,看起來是一些表單欄位被繁雜的 JavaScript 與 CSS 糾纏住。以前我是用 Sahi 做自動測試。

不過,在系統中,網頁表單,跟本文之前所提的一樣,也是一份對照表。

在程式裡,可以用 Erlang 的 property list ,或用 Python 的 dictionary 來寫出一份表單的案例。而且,有了案例之後,就可以寫單元測試。

所以,不必等待網頁編排與美工設計,你可以先測試表單與系統的互動是否順暢。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Web Programming。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s