我正在設計提供自己的自定義API的某個硬件設備的Web界面。所述網絡界面可以一次管理多個設備。通過使用自定義API進行輪詢從設備中檢索數據,因此最好使其異步。針對多個消費者和單個數據源的設計模式
最明顯的是有一個輪詢線程輪詢數據,使用信號量保存到一個進程範圍的單例中,然後Web服務器線程將從所述單例中檢索數據並顯示它。我不是一個單身人士或者一起設計設計的狂熱粉絲,所以我想可能會將輪詢數據源從Web服務器分離出來,在本地接口上循環使用,並使用類似XML-RPC的方式來使用數據。
該應用程序不必是'enterprisey'或可擴展的,因爲它一次最多可以由幾個人訪問,但我寧願通過不將兩種邏輯混合在一起來使其穩定。目前在Python中使用CherryPy實現了它,它是我見過的最糟糕的設計混雜體。我覺得如果我用最明顯的設計去做,我最終會以我自己的方式重新實現同樣可怕的事情。
「單個數據源」!=「可以管理多個設備」 – katrielalex 2010-09-03 21:18:40
對我而言,這並不重要,因爲每個消費者都會將整個數據視爲一個整體。有點像如果你建立一個RDMBS的無共享集羣,它仍然是一個單一的數據源。 – Novikov 2010-09-03 21:20:53