2011-09-15 24 views
0

我正着手創建一個Yii項目,該項目基本上有一個前端網站(稱爲site),管理站點admin和網絡服務ws的共享數據模型(假設爲CerealStuff)。我對整個MVC事物很陌生,我想知道我應該如何設計這個項目來保持Yii/MVC最佳實踐的一致性。到目前爲止,我已經確定了兩個基本的選擇:Yii MVC + Web服務=不是MVC?

  1. 創建模型CerealStuff在根目錄,創建三個模塊siteadminws每一個都有自己的控制器;
  2. 在根目錄創建模型CerealStuff,創建兩個模塊adminpublicpublic包含控制器處理站點和具有@soap聲明來處理ws的東西。

我知道選項2減少了複製編碼的總量,但它並不像老實說的那樣乾淨。此外,我覺得也許現代的網絡應用程序應該是這樣的,即使是「網站」(視圖)使用Web服務來訪問數據庫。

告訴我該怎麼想!

回答

0

我在我的應用程序中公開了一個簡單的Web服務,並且我使用了一個單獨的(soap)控制器。

如果您遵循fat model/skinny controller範例,將Web服務前端添加到您的模型非常簡單。

編輯:脂肪車型更好的例子:http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers

+0

所以這樣做的缺點是你最終在兩個地方對前端和Web服務控制器中的共享函數進行了更改?假設你有一個控制器,可以執行一些複雜的輸出格式。 –

+0

不是。查看有關瘦身控制器的鏈接 - 您的邏輯正在模型中進行。你的控制器不應該做複雜的輸出格式,這就是你的觀點。 – 2011-09-15 14:49:40

+0

明白了 - 謝謝! –

0

閱讀this article查看MVC結構化Yii項目的示例,其中有兩個入口點,分別爲front-endback-end。一旦瞭解到這一點,您可以輕鬆地爲ws添加另一個入口點。

正如您可以看到所有模型在模塊之間共享。控制器,配置文件和視圖是分開的。視圖也可以配置爲共享。我在許多項目中使用這種類型的結構,從來沒有任何擴展或縮放的問題。

+0

不,它並不意味着它應該有不同的切入點。 Yii允許你創建幾乎任何類型的配置。有很多方法來組織你的文件結構。 – Johnatan

+0

有些時候,由於工作流程或其他問題,對於正面和背面具有單獨的受保護目錄(使用該文章中的示例)以及我簡單地將模型目錄軟鏈接,基本上可以完成相同的事情,同時允許用於分離其餘的代碼。 – ldg