2013-09-30 71 views
0

我正在開發一個正在開發中的標準LAMP堆棧上的巨大系統。長話短說,犯了太多錯誤,我們目前的發展載體變得難以爲繼。我們總結了以下問題:將REST和Play Framework集成到開發中的LAMP系統中

  • 正在使用自定義且非常基本的PHP MVC框架,該框架未強制執行任何結構。
  • 沒有使用ORM,允許開發人員拿出他們自己的系統。
  • 前端由Smarty渲染,除了所有的動態交互都是用jQuery完成的。
  • 在PHP失敗/非常慢的系統部分,我們有一些重要的處理。
  • 沒有單元測試是用來
  • REST僅用於某些API到外部系統
  • 的PHP框架不支持依賴注入

我就不提了,有助於系統的其他問題成爲一團糟,我認爲這些是主要的。

我想通過引入類似於Twitter使用的類似系統將系統的開發轉到不同的方向 - 與REST連接的模塊中的系統拆分(如果我的假設是正確的)。這些都是我想介紹:

  • 播放框架(Java /斯卡拉)
  • 連接通過REST
  • 播放與現有的LAMP堆棧
  • 開關阿帕奇Nginx的
  • (最有可能)使用角.js爲前端。
  • 在長期轉換整個現有LAMP玩我面對

主要問題和是希望任何忠告:

  • 我將如何保持/通狀態,在軸承介意REST是無狀態的?我們目前的LAMP顯然使用PHP會話。

對這個特殊情況的任何其他意見也歡迎。

+0

您可以對現有的LAMP堆棧進行更改嗎?例如,從PHP會話遷移到memcached,redis或其他密鑰庫數據庫? –

+0

@ViniciusMiana問題是,目前的LAMP堆棧正在走向滅亡的道路,因爲我們必須重做很多代碼,所以我寧願選擇一個優秀的堆棧。 – Caballero

+1

要通過REST將X與現有LAMP堆棧連接起來,您需要在現有堆棧上創建此REST API。一種方法是將狀態移出Php,以便在php離開後保留。你的api將是無狀態的,但是將一個關鍵字傳遞給存儲在這個存儲區中的狀態,這個關鍵字可以通過用Scala/Java編寫的新函數或者其他任何東西直接更新。 –

回答

1

你想分享什麼狀態?當前登錄的用戶?還要別的嗎?你想分享什麼?在不同的Play節點之間? Play和你的LAMP堆棧之間?

如果狀態量很小,並且如果它不敏感(例如,當前用戶看到該狀態就可以),那麼您可以使用Play的會話。遊戲會話是完全無狀態的,他們將狀態存儲在cookie中,並簽署cookie以防止篡改。點擊此處瞭解詳情:

http://www.playframework.com/documentation/2.2.x/ScalaSessionFlash

如果使用相同的應用程序祕密爲您的每個遊戲模塊(應用祕密是什麼用來簽名/驗證會話cookie),那麼他們將所有能夠使用該機制共享狀態。您甚至可以與現有的LAMP堆棧共享該狀態,您只需在PHP中實現Play cookie簽名算法。

如果狀態較大,例如您正在使用它來緩存事物,或者如果您想存儲可能敏感的狀態,那麼類似memcached的東西可能適合您。

相關問題