1

我有一個使用精益啓動方法開發的ZF1項目。我現在準備進入一個更進化的項目,因爲我知道我的用戶需要什麼,但我真的想要開發更好的技術。我決定從ZF1轉移到ZF2,這是我所在的位置:Api-Admin-Client應用程序的最佳ZF2體系結構

API(客戶端) - 我有一個「僅推送」API,用戶用來向我發送數據 API(管理員) - 管理員可以使用各種指標和聚合消耗推送的數據

客戶端的API很安靜,但只是當前進入Redis作業隊列,並通過cron進行處理,這消除了客戶端等待他們的數據將被插入並且他們的請求被立即返回。

管理員的API目前並不穩定,實際上只是在應用程序內部消耗,我認爲這是可以的,因爲我不希望有單個頁面前端或API消耗前端。我寧願數據立即由服務器返回。

這給我留下了一個問題,即我是否有一個API服務模塊,它提供了所有模型(Doctrine2 ODM POPO),映射器,過濾器和服務層來訪問它,然後需要它的控制器可以消費API而不發出HTTP請求(通過服務調用)。

這是結構的正確方法還是存在更精確和可接受的方法?一般情況下,我喜歡服務層,因爲測試會更加準確,所有客戶端/管理員都使用相同的API(如果它更新,實質上立即更新,因爲沒有單獨的項目)。

回答

1

我認爲你想到的模塊不需要有一個自己的構建服務層,它只會轉發到另一個服務(比如Doctrine entitymanager或其他的服務),它應該只通過配置向其他模塊提供所需的服務DI並封裝所需的類(如模型,映射器,過濾器...)。

在我的公司爲此目的總是有一個'應用程序'模塊(就像它在早期的ZF2教程中)。我不知道這是否仍然是最佳做法,但在維護和結構方面有一些重要的好處。

您應該考慮在「消費」模塊(如Client-API或Admin-UI)中定義module dependency

也值得看看Doctrine庫和DoctrineModule的實現,以感受一個模塊應該提供什麼以及它在何處提供一個庫。