58同城開源其輕量級Web框架Argo

csdn發表於2013-03-21

  58同城開源其輕量級Java Web框架——Argo,Argo起源與58同城的內部Web框架wf(Web Framework)。目前wf支撐著58同城幾乎所有的Web站點。開發者們對此次開源的反響非常強烈,幾乎一天時間就被收藏了90次,fork34個。那麼是否會掀起國內的開源熱潮呢?

  Argo起源於58同城的內部Web框架wf(Web Framework)。

  據58同城內部資料顯示,目前wf支撐著58同城幾乎所有的Web站點,包括WAP和手機端的訪問等,現在wf每天處理10億級的請求。經過長時間的運作與執行,證明wf是一個可靠的、高效的Web框架。

  作為一個有一定規模的網際網路企業,如果在變化的網際網路環境中上線一個專案,在軟體開發中需要對三方面進行平衡:

  1. 組織/公司,在一個組織內部,需要每個專案開發儘量有統一的風格、架構,學習成本、維護成本等儘可能低。
  2. 運維,希望每個站點的配置和可執行部分分離,部署的方式相同。
  3. 專案內部,希望程式設計師聚焦在業務上,可以快速實現產品需求、響應產品變化。 在此基礎上,我們開發了wf。

  Argo在wf做了大量優化和重構,以適應各組織軟體開發的個性化需求,提升了系統效能,具有更好的可擴充套件性。Argo的開源反過來也促進wf2.0的開發。

  理念 

  1. 約定優於配置,減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。Argo體系中有且只有一個組織級約定,規定包的命名、配置檔案路徑、日誌檔案路徑等。組織的約定是不容侵犯,每個專案在組織級約定下工作。組織級約定建議以jar形式下發給各專案。
  2. 簡單,Argo可以不需要任何配置檔案,專案程式碼結構簡單,易於維護。
  3. 紀律,包和類的命名都受組織級約定的控制,任何違反約定的行為可能導致系統無法正常執行。

  特徵

  Argo不是一個通用的Web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:

  1. SEO友好的URL結構,Argo天然支援RESTful的url結構,並能自動匹配合適的引數。
  2. 零配置,甚至你不要web.xml就能在tomcat上執行。
  3. 插拔式元件架構,可以靈活擴張功能。
  4. 高安全性,提供叢集模式下,避免ip欺騙等功能。

  系統約定

  Argo不是一個通用的Web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:

  1. servlet 3.0環境,主要針對Tomcat 7.x。
  2. 基於 guice的Ioc,組織和專案可以各提供一個module注入模組,而且module的命名必須符合約定。
  3. maven依賴,專案的程式碼體系和maven預設程式碼體系一致,maven以外掛提供開發過程中所需要的開發執行環境( jetty:runtomcat7:run)。

  開發者們對此次開源的反響非常強烈,幾乎一天時間就被收藏90次,fork34個。

  那麼,微博上的網友是如何響應的呢?不妨一起來看下:

  SunnyerEric孫晗曉:

現在到處都有開源專案可以用···傳統的軟體銷售商們要顫抖了···以後IT銷售這個行業會逐漸消失的吧。@微博平臺架構 也得行動了

  得意的那些事兒:

第一時間用Maven構建了專案,初看了程式碼。總結一下,1 大量使用零配置的谷歌GuiceIOC;2 使用約定優於配置,各專案可以高效使用公用的WF;3 充分利用2,載入Controller,Model和Conf ;4 看到說明使用 Google的Guice IOC,大亮點!Guice速度比Spring快很多,而且不需要配置,亮點

  欣謙-謙謙君子:

這個readme挺有專業水準。另,基於ioc和約定,web frmwork邏輯可以寫好看,但難點在怎麼簡化page view/flow。

  是否會掀起國內的開源熱潮呢?也有網友直接驚呼:希望中國的開源事業越來越強大!各位網友不妨一起來討論下。

  開源地址:https://github.com/58code/Argo

相關文章