如今,建構網站和開發Web應用程式已經不僅要求開發人員是一名優秀的程式員,更需要聰明的程式員。這也就是說,在可能的情況下,重複使用已有的代碼和應用程式,而不是自己重頭開始。
開源由來已久,并且很多網站的建構也使用了開源。開發人員都知道Linux、Apache、MySQL及 PHP (LAMP)。
但是除那些之外的其他開源項目呢?作為一名Web開發人員,你可以借助諸多可用的項目,以節省開發時間,或提高程式性能。
下面讓我們看一下哪些開源項目可供大家免費使用。
可供使用的新型資料庫
傳統上講,你可能習慣使用MySQL。盡管MySQL是一個非常棒的資料庫,但諸多試圖解決MySQL存在的問題的新型資料庫已經問世。
1. MongoDB
MongoDB就是的“非關系型”資料庫之一。它擴充性強、性能高。
2. Apache Cassandra
與MongoDB相似,Apache Cassandra也是一種“非關系型”資料庫,它亦擴充性強、性能高。并且能夠很好地處理龐大而活躍的資料集。(編注:Facebook用Cassandra來做郵箱搜尋。)
更多
根據需要,你還有更多的選擇。請參閱維基百科的這個清單。
緩存資料
因為需要頻繁使用一些資料,是以相比每次去資料庫中查詢,把這些資料存放在記憶體中更加合理。這能夠大大提高Web應用程式的運作速度。
3. Memcached
Memcached是一種在記憶體中緩存小型資料塊的簡單但強大的解決方法。(編注: Facebook運作着成千上萬的Memcached伺服器,借以及時處理TB級的緩存資料。)
4. Redis
Redis的作用與Memcached相同,但包含更多的特性。例如,它也可以存儲本應當永久性儲存在磁盤上的資料。
加快網絡請求的速度
大多數網站使用Apache的網絡伺服器來提供服務。它能夠很好地服務于大多數網站,但是一旦網站的通路量增大,就需要做進一步優化。
5. Nginx
Nginx是一種與Apache非常相像的網絡伺服器,但它的速度相當快。作為負載平衡器,它常用于處理靜态内容,如圖像檔案。
6. Varnish
Varnish是位于正常網絡伺服器之前的高速緩存器。它将所有熱門内容放入記憶體,直接對其處理,無須将所有内容都傳給網絡伺服器。(編注: Facebook用Varnish 處理圖檔和使用者照片,每天都要處理十億級的請求。Facebook所用到的其他開源項目,請參閱《揭秘Facebook背後的那些軟體》一文。)
輕松管理内容
如果你在建構一個允許使用者添加及編輯内容的網站,那麼你可能需要一個内容管理系統(CMS)。CMS能夠幫助開發人員輕松地管理部落格及網站,并且提供大量的能夠擴充網站功能的插件。
7. WordPress
雖然WordPress是個部落格平台,但它也能用于管理大大小小的網站。
8. Drupal
Drupal是一個可用于建構強擴充性、高靈活性網站的完整平台。
還有很多可用的内容管理系統。請參閱維基百科的這個大型清單。
互動式的網絡UI
如今,你可以使用JavaScript和AJAX技術,開發一個類似桌面應用程式那樣的以多種方式運作的網絡應用。使用JavaScript架構,能夠輕松地開發大型的網絡應用程式。
9. JQuery
JQuery是一個帶插件的架構,這些插件有主建構包含AJAX互動及動畫的動态網站。
10. MooTools
MooTools就和jQuery一樣,是一個使用JavaScript建構強大網絡應用程式的架構。
如果你想嘗試一下其他選擇,請參考維基百科的這個清單。
其他比較炫的資源
當你開始開發一個複雜的網絡應用程式時,很多軟體、庫及模型能夠幫你解決難題,如果不參考這些資源,你可能會花費大量的時間。以下是兩個入門的例子。
11. Node.js
Node.js是一個事件驅動的輸入/輸出架構,支援用JavaScript編寫應用程式,并在V8 JavaScript引擎上運作。這是一種開發快速、可擴充網絡程式的很棒的方式。
12. RabbitMQ
RabbitMQ是一種可靠的、可擴充的資訊傳送系統,它能夠處理高吞吐量。如果需要在系統之間或應用程式之間交換資料,比起傳統的解決方案或直接将資料存儲在資料庫中,資訊傳送系統的更能勝任這一工作。
使用架構來加速開發程序
不管你是使用PHP還是其他的程式設計語言,有很多不同的可用架構能夠幫助你加速開發程序,并能夠更加輕松地管理代碼。
13. Symfony
Symfony是一個PHP架構,它包含很多能夠加速開發複雜網絡應用程式的元件及工具。同時它包含社群提供的1000多個插件。
14. Ruby on Rails
對Ruby語言而言,Ruby on Rails是最流行的可用架構。
15. Django
Django是一個Python網絡架構,它用來幫助快速開發高性能、優秀的網絡應用程式。
維基百科上有一份更完整的清單,這個清單包含不同語言的可用網絡應用架構。
後話 - 合理利用時間
開發人員有必要花費時間不斷了解哪些新軟體是可用的,這樣對輕松地解決複雜的任務大有裨益。
而且在項目開發之初,花費一些時間做計劃和調查也是非常有必要的,因為這樣可以明确即将面臨的問題,并确定其最佳解決方案。
自己程式設計來解決每個問題的時代已經結束,如今更多的是靈活使用現有技術來解決問題。
不知正在看本文的Web開發人員,在上述這些開源項目中,你用到了哪些?歡迎你在評論中分享你的使用經驗和心得。