我對完整的架構想法有不同的疑問。我希望有經驗豐富的人能夠幫助我,因爲我幾乎陷入了所有的可能性。API作爲網站和移動應用程序的核心
我打算重寫一個社區網站。我們的客戶希望在未來使用原生移動應用程序。所以我需要考慮這一點。正因爲如此,我決定創建一個基於PHP框架Kohana的100%REST API體系結構。我選擇了Kohana,因爲這樣可以非常輕鬆地將內部API擴展到其他服務器,而無需額外的工作。 (Kohana威脅內部URL請求不是HTTP,因此開始時沒有太多開銷,並且可以通過一些小的代碼更改擴展到HTTP)。
起初,API將是私有的,但稍後我們可能會公開讓更多服務輕鬆連接到我們。
德基本REST結構如下:
- /貓
- /貓/ 1
- /貓/ 1 /自定義
'自定義' 可以是 '孩子的'例如。
同樣適用於:
- /廣告
- /投標
- /用戶
- /橫幅
- 等。
這些是API完美的實體因爲移動應用程序肯定會使用所有這些功能。
所以我們可以總結出網站的核心是REST。所以基本上我想將網站作爲API的客戶端,就像將來的本地應用程序一樣。這樣維護似乎更容易。
我擔心的是,除此之外還有很多事情(管理上傳的文件,發票,發票的自動郵件,廣告的自動郵件等等)。上傳文件需要通過網站到達API。這是常見的做法嗎?如果我不這樣做,該網站將做上傳邏輯,這使得該網站不再是客戶端和應用程序本身。因此,移動應用程序甚至無法上傳,API和網站都需要知道上傳文件夾(重複邏輯)。
我想創建以下模塊:
- 社區API
- 社區網站
阿比似乎是核心呢。但是...... cronjob等呢?其實他們不應該成爲網站的一部分,因爲這只是一個'客戶'。我覺得他們應該直接與模型或API交互。所以基本上API變得更像一個門戶的核心,我想我需要這樣的:
- 社區爲核心
- 模型
- Cronjobs
- 自動郵件(cronjobs的一部分)
- 發票等
- 社區API
- 交互通過HTTP
- 社區網站
- 網站
- 聯繫
核心的cronjob核心模型s是REST結構的一個例外。他們是唯一可以在不通過API的情況下更改數據的人。至少這是我的想法,因爲他們屬於核心,API是核心。
但通過設計,這似乎只是錯誤的。操作應該只通過API!
備選:
- 社區爲核心
- 模型
- 社區API
- 互動通過HTTP在覈機型
- 社區商業
- Cronjobs
- 自動郵件(cronjobs的一部分)
- 發票等
- 社區網站
- 網站
- 聯繫
這看起來通過設計更好的給我。 Mindmap illustration http://mauserrifle.nl/mindmap.jpg
主要問題
1)
應該cronjobs通過API或Core模式操作?
2)
我的發票的cronjob需要一個模板幾乎當然主要網站的風格。但是如果我的cronjob是業務或核心的一部分,它不會知道我的主要網站。解決這個問題有意義嗎?
3)
我的網站將使用鬍子作爲模板引擎。 (php和javascript都可以解析這些模板)。我想直接使用API的Ajax調用,但後來意識到:
該網站從API獲取數據,格式化時間戳時間(Y-M-d)爲模板,然後渲染。如果我讓javascript直接調用api,javascript也必須有邏輯(格式化)。這是重複的代碼!感覺像唯一的解決方案是調用網站的Ajax(調用api和格式)並返回格式化的json。我對嗎?
但是....簡單的調用,如刪除一個廣告可以去直接通過API(例如,刪除:/廣告/ 1
我收到電話的混合....
任何更好的解決方案此
4)
總:是我的建築太複雜?我應該考慮任何替代方案?
我很想聽聽您的意見!
我假設你的最後一句話是肯定的? (通過構建API-Centric,你已經擁有了一個公共API?)感謝那篇文章,它指的是Twitter博客,它激勵我使用這種構建方式,所以一定要閱讀這篇文章,然後回到這個話題稍後:) – mauserrifle 2012-02-27 13:56:21
好吧,我已經實施的文章(kohana方式)的大部分。我對創建該網站作爲API的客戶端有很好的感覺。仍然不確定在哪裏把cronjobs等(這是內部邏輯)。我還必須建立一個管理員(網站的一部分)來管理所有額外的實體,這感覺就像是一項工作的開銷:/再次,一旦構建......未來有很多可能性。提示? – mauserrifle 2012-02-27 15:08:30
這正是我的觀點。幾乎100%的案例都需要具備與應用程序相關的特定功能,例如cronjob,這些功能並不適合採用以API爲中心的方法。這意味着在我看來,應該將Web服務與主應用程序(如wsdl)分離。 – 2012-03-07 13:22:09