5.25.2010

Zend Framework和Struts2

POJ是我們實驗室的項目,現在的POJ基本上還沿用了2003年時的Serverlet代碼結構,沒有任何框架,視圖和控制器都混在一起。這個學期打算要重構POJ,於是我就開始糾結到底用什麼MVC框架。

擺在我面前的選擇有這麼幾個:

  • asp.net
  • php, Zend Framework框架
  • Java, Struts2框架
  • Python, Pylons或者Django框架

我是Linux愛好者,所以首先排除asp.net。Python其實是一門很優秀的語言,面向對象做得很徹底,可以和各種其他語言粘合,兩個熱門框架也很不錯。但是一方面我對python非常不熟悉,另一方面python的框架更新速度非常緩慢,近一年只更新了0.0.1,我對它的發展前景表示擔憂,再加上中文資料太少,所以遺憾的排除。真正讓我糾結的是Zend Framework和Struts2這兩個框架。這兩個框架我都使用過,感覺各有利弊。POJ本來的代碼基於Java,因此重構的時候可以省一些事情。而圖蟲整個項目都是用Zend Framework,我對php和Zend Framework了如指掌,可以省卻許多學習過程。但這都不足以說服我做出選擇,還是比較一下框架之間的特性吧。

  1. php是動態腳本語言,在許多時候更加靈活。
  2. php是弱類型的,在變量處理的時候省卻許多類型轉換的麻煩。
  3. php不需要聲明變量,大大減少代碼量
  4. Zend Framework更加靈活,可以按需取用(use as wish),對於效率低下的部分,可以自己寫代碼替換。而Struts的框架核心代碼則相對封閉
  5. Zend Framework自己就提供了功能庫,方便調用各種Web Service。
  6. apache + php的結構更加便於熱部署,只需要在服務器上svn update就可以了;而Java必須編譯一下。這同時也有利於調試過程。
  7. php在任何地方都可以得到所需要的變量,在任何地方都可以執行任何函數或方法
  8. php有大量的開源項目,可以參考他們的代碼,比如wordpress, joomla, phpBB, drupal, discuz, mediawiki;而Java的開源web項目,我一個都不知道
  9. php有許多超大規模網站的成功案例,比如:facebook,yahoo,wikipedia,baidu等;而Java,除了一個從網,我就不知道別的了
  10. struts2需要外加數據模型庫,比如hibernate,非常不喜歡hibernate生成代碼的方式,我認為hql完全沒有必要;而zend Framework自己就提供了數據接口
  11. struts2的標簽庫完全是雞肋
  12. struts2的布局系統需要外加別的模板庫,比如sitemesh。而Zend Framework自己就能搞定
  13. php更加輕量,執行速度更快。而且很魯棒。不會像JVM,因為一個Servelet掛掉而當機
  14. Java 的代碼過於複雜,大量無聊的getter和setter簡直是一場噩夢。做一件簡單的事情也必須牽涉到幾個對象和函數
  15. Zend Framework很年輕,開發遠比Struts活躍。Zend Framework在一年內,從1.5升級到了1.9,期間包括近30個小版本,而Struts2在一年內僅僅從2.1.6升級到了2.1.8
  16. php今年來發展勢頭非常好,遠比Java更活躍;Java在Sun被收購之後,各種改進明顯受到影響

總結起來,我們就能發現。php是為web而生的,各種特性都是為web而設計,web需要小巧,輕量,敏捷開發,php都能滿足。而Zend Framework的誕生則讓php的生命力在企業級應用上得以延續。而Java本來並不是為web而設計的,它過於笨重,在J2EE開發上有明顯優勢,但是對於web項目,未免有些殺雞用牛刀。所以,最終我還是選擇了Zend Framework。

來源:沈二鋪子

0 留言:

發佈留言

您使用留言則表示同意及遵守使用條款及守則

建議: 為方便留言回覆,請不要用匿名方式 留言。