本文解答兩個常見問題:

  • 每次修改 .xcf 設定檔,都必須重新啟動 GAS 嗎?
  • 同一個 GAS 設定項目,是否需要在每個個別的 .xcf 檔案中重複定義?

GAS 設定與 Web 應用程式設定的分離

正確的做法是將兩類設定清楚分開:GAS 本身的設定應放在主設定檔中,而個別 Web 應用程式與 Web 服務應用程式的設定則應各自放在獨立的設定檔裡,不要混入主設定。

這樣的結構帶來一個重要好處:修改個別應用程式的設定時,無需重新啟動 GAS dispatcher。主設定檔中 APPLICATION_LISTSERVICE_LIST 內的 GROUP 元素,會引導 GAS dispatcher 去尋找這些個別的設定檔。

抽象父應用程式模式

個別應用程式的設定檔中,只需定義該應用程式特有的值,其餘設定則繼承自一個抽象父應用程式。以 Calculator.xcf 為例,只需指定 PATHMODULEACCESS_CONTROL,其他所有設定都從以下抽象應用程式繼承:

<APPLICATION Id="ws.default" Abstract="TRUE">

這種繼承模式能有效避免在多個設定檔中重複相同的設定,大幅降低維護成本與設定不一致的風險。

多 dispatcher 實例的資源覆寫策略

若同一台伺服器上需要執行多個 dispatcher 實例,可以使用 -E 命令列參數,在執行時期覆寫特定資源值,而無需為每個實例各自維護一份設定檔。

例如,以下範例示範如何用相同的設定檔啟動兩個 httpdispatch 實例,但分別透過 -E 旗標指定不同的 port 與路徑:

httpdispatch -f gas.xcf -E RES_NAME_PORT=8090 -E RES_NAME_PATH=/app1
httpdispatch -f gas.xcf -E RES_NAME_PORT=8091 -E RES_NAME_PATH=/app2

設計原則

本文的核心觀念是:設定應遵循「定義一次,多處參照」的原則。透過抽象父應用程式繼承通用設定、透過 GROUP 元素引用個別設定檔、透過 -E 參數覆寫執行時期資源,可以大幅減少重複設定,降低日後維護的負擔,也避免因設定不一致而產生的問題。

原文:https://4js.com/ask-reuben/ig-241/  ·  有任何 Genero 技術問題或翻譯疑問,歡迎來信 support@t100.app