6

我有一個目前遍佈各地的項目,我正在考慮讓它成爲MVC。我應該使用框架還是編寫自己的MVC?

問題是系統目前正在使用,我無法更改界面(它是在幀:s)還有一些我需要處理自己,如密碼生成,登錄和用戶級別。

我已經有MVC的模型端,所以我想知道是否值得使用像Zend Framework或CakePHP這樣的框架,或者只是編寫我自己的視圖和控制器來解決這個問題?

我將不得不工作,這在慢慢的,我不知道如果我將能夠做到這一點,如果我用的是現成的框架之一。

回答

8

通常我會退縮在恐怖和建議不要把另一個web框架融入世界,但它是公平地指出,我們的東道主喬爾和傑夫都對此事的另一種意見認爲:

喬爾:In Defense of Reinventing the Wheel 傑夫:Don't Reinvent the Wheel

最後一個念頭:如果它是一個單人項目,那麼你就只能用這個選擇會影響自己。如果一個開發長壽命產品的團隊參與其中,我的抵抗力就會激增。如果您推出自己的產品,您可能會損害團隊和客戶的利益。

+0

這是一個公平點。目前只有我維護和編碼它,但我注意到未來的編碼器正在工作,這是我重構代碼的原因之一(另一個原因是它很難維護) – xenon 2009-05-23 16:07:46

4

你會發現CakePHP特別相當「侵入」。恕我直言,你應該使用一個輕量級的框架或寫你自己的。我通常不會建議你自己寫這種東西,但是當你處理軟件時,你不能改變它,有時可能是最好的解決方案。另外,PHP中的控制器並不是一件很難寫的東西,所以如果你使用的預製解決方案太重或者不適合你當前的限制,你有時會不必要地過度複雜化解決方案。

對於輕量級MVC框架,我強烈推薦CodeIgniter

+0

謝謝,我不會給予任何時間這樣做的權力,所以我認爲我是gunna必須相位/潛入它:P從來沒有使用CodeIgniter,但我知道它將很容易取貨 – xenon 2009-05-23 16:01:32

3

車輪改造不好。使用像Zend Framework這樣久經考驗的框架,除非你有一個非常特別的理由不要。

+4

依賴性是不好的。使用您開發的久經考驗的框架,除非您根據外部框架的興致而行。 – Andomar 2009-05-23 16:03:24

+0

的確如此,但像ZF這樣的框架可以被看作是獨立包的集合,依賴性問題可能不如CakePHP – karim79 2009-05-23 16:07:56

+0

重要。我想CakeFP比CakePHP更像ZF,因爲Cake的功能似乎更難定製(但那麼它又是一個快速的開發框架,所以我會放過它) – xenon 2009-05-23 16:12:23

8

我寫我自己的MVC框架ColdFusion的,因爲目前的「一個月的味道」的Mach-II是窘況緩慢。切換後,我的頁面生成時間從2-5秒下降到9毫秒。

在過去的3年裏,我開發了這個框架爲對手任何商業或開源框架,我用(我已經使用了不少)通過建立函數庫和組件的範圍(CMS,CC處理,圖像處理等)。

雖然毫無疑問某些「重新發明輪子」的輪子,但我最終選擇的輪子正是我需要做的工作。我明白它是如何與親密無間的,沒有任何文件可以提供。

當然,有一天一些未來的程序員可罵了我的代碼上我希望痘不使用自己喜愛的圖書館 - 但坦白說 - 我一點也不在乎。我爲我寫了這篇文章,它滿足了我的需要,並且它做得很好。我在這個過程中也學到了很多東西。

說了這樣的話,你並不是通過編寫自己的框架來自動地爲你的客戶/同事提供幫助。公共框架往往沒有真正的方向,所以它們往往會大量膨脹,試圖讓每個人都感到高興。這種膨脹意味着要學習更多,更多的可能會出錯。你的框架將會滿足更小的要求,並且良好的文檔可能比更爲公認的文檔更容易理解和設置。

我說去吧,住在邊緣一點點。也許在5年後你會發佈下一個「Mach-II」或其他任何東西,我們都可以喋喋不休。

2

這取決於你的任務。一些簡單的任務已經有了很好的解決方案,但是有時候修復bug或者爲了滿足自己需求的解決方案比編寫自己的解決方案更困難。

無論如何,當你開始使用框架 - 你必須花一些時間來學習它。有時寫作比學習更快。

只要google一下你需要的解決方案,找一些成熟的,看看他們的功能,打開讀取錯誤,並決定是否要使用它。這就是我可以告訴你的所有細節任務。

2

問題是系統目前正在使用,我不能改變接口(它是在幀:s)還有一些事情,我需要處理自己,如密碼生成,登錄和用戶水平。

我將不得不工作,這在慢慢的,我不知道如果我將能夠做到這一點,如果我用的是現成的框架之一。

不知道你的情況的細節,我想說,系統當前正在運行的事實將使一個通用MVC框架難以整合。

話雖如此,許多MVC框架是由可作爲獨立實體使用的模塊化組件組成。您可能能夠獲得這些框架的某些功能以供您的項目使用。

用戶驗證,會話管理和口令的處理是一個特別的區域應該只有從頭開始,如果你有這方面的經驗大量建造。

1

制定一個框架是不容易的事,順便說一句,你應該編碼,測試,打補丁,更多的測試,並不斷開發新的功能。因此,如果您不打算開源,那麼我們對於擁有一個龐大的測試人員社區(開發人員)來說是一個好主意,您不應該考慮重新發明輪子。 它是一個完整的環境,所以選擇最適合您的需求,並從社區的幾個月編碼和測試中獲益。

最好的祝願

1

問題是舊的,但仍然有效。 個人我是一個「從零開始」類型的傢伙。我喜歡節省時間,但不是所有的成本。所以我可以交換使用框架。這意味着我可以在任何框架之外的TDD過程中創建所有業務類/規則,然後將它們集成到允許我的工作與標準服務和館藏合併的框架中。但我的工作並沒有與他們聯繫在一起。它們分離並且快速。

爲了更直接地回答這個問題。我創建了自己的CMS。而且我可以告訴你,如果你想了解一些事情,請自行創建。即使你永遠不會分享它。最終你可以更好地理解其他系統,這會讓你更容易選擇其中一個系統。然後你可能再也不想使用另一個。但是,這通常發生在幾個修改後:)

所以是創建自己的,但研究其他人。

相關問題