2009-11-09 113 views
0

我之間徘徊於乾燥鬆散的耦合:(api鴻溝的哪一邊?

我有兩個網站,你可以將自己的帳戶,然後網站可以共享數據(通過一個RESTful API ...)

一個網站一個媒體聚合網站,另一個是人們可以購買數字媒體(音樂/照片/視頻)的媒體商店。

我的老闆想模仿itunes商店,並在聚合網站有一個內置商店,可以購買他們喜歡的東西,並自動添加到他們的帳戶。

我有99%的爲商店網站編寫的模板和視圖(django),我需要在媒體網站上顯示內容。

我應該只是渲染模板並將預渲染的html(通過api)傳遞到媒體(聚合)網站(並服從DRY),還是應該交付json以避免商店端緊密耦合的自定義模板?

或者,也許混合設計會更好?交付預渲染的html塊(比如<ol>中的前10個產品),並讓媒體站點請求它需要的塊?

的混合設計似乎最有前途的,我(現在),但可能會導致是一個很大的API調用(因此多個數據庫查詢)

你覺得呢?

編輯 - 一個新想法:(如評論中所見)您如何看待商店網站將一些自定義CSS加載到iframe中?

我認爲應該消除混淆,將緊密耦合的代碼數量減少到3打左右的2行,並且爲我節省了維護兩套幾乎完全相同的模板的麻煩。

+1

如果你打算擴展,鬆耦合是你的朋友。 – jldupont 2009-11-09 13:42:21

+0

我同意 - 但如果我(如在我,開發人員)打算擴大規模,我需要消除通過在媒體聚合網站 – Jiaaro 2009-11-09 16:01:47

+0

再次呈現商店將會發生的DRY的大規模違反......至少我認爲我=/ – Jiaaro 2009-11-09 17:20:04

回答

2

當您將HTML分佈到兩個網站時,網頁設計師將會殺了你,所以一個網站應該提供(原始)數據,另一個網站應該決定如何呈現該數據。此外,這將成爲維護噩夢。試想一下,你必須通過盯着一些HTML來修復一個bug:你多久會問自己,這兩個網站中的哪一個生成了哪部分HTML?

因此,讓商店呈現它從媒體網站獲得的數據結構。媒體網站應該發送整個數據結構(即前10名,只有描述,可能是JSON,沒有格式)。這避免了不必要的往返行程。

+0

我有一個想法,你覺得有什麼商店網站生成一切,並把它放在媒體網站上的iframe?這樣就不會出現混淆,我還可以避免使兩組模板的95%相同? – Jiaaro 2009-11-09 15:55:15