如今,開源已成為業界網際網路公司的一種發展趨勢,許多公司在GitHub平臺上開源其產品。北京時間3月19日,58同城開源其輕量級Java Web框架——Argo。
歷史
Argo起源於58同城的內部Web框架wf(Web Framework)。
據58同城內部數據顯示,目前wf支撐著58同城幾乎所有的Web站點,包括WAP和手機端的訪問等,現在wf每天處理10億級的請求。經過長時間的運作與運行,證明wf是一個可靠的、高效的Web框架。
作為一個有一定規模的網際網路企業,如果在變化的網際網路環境中上線一個項目,在軟體開發中需要對三方面進行平衡:
組織/公司,在一個組織內部,需要每個項目開發儘量有統一的風格、架構,學習成本、維護成本等儘可能低。 運維,希望每個站點的配置和可執行部分分離,部署的方式相同。 項目內部,希望程式設計師聚焦在業務上,可以快速實現產品需求、響應產品變化。 在此基礎上,我們開發了wf。Argo在wf做了大量優化和重構,以適應各組織軟體開發的個性化需求,提升了系統性能,具有更好的可擴展性。Argo的開源反過來也促進wf2.0的開發。
理念 約定優於配置,減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。Argo體系中有且只有一個組織級約定,規定包的命名、配置文件路徑、日誌文件路徑等。組織的約定是不容侵犯,每個項目在組織級約定下工作。組織級約定建議以jar形式下發給各項目。 簡單,Argo可以不需要任何配置文件,項目代碼結構簡單,易於維護。 紀律,包和類的命名都受組織級約定的控制,任何違反約定的行為可能導致系統無法正常運行。特徵Argo不是一個通用的Web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:
SEO友好的URL結構,Argo天然支持RESTful的url結構,並能自動匹配合適的參數。 零配置,甚至你不要web.xml就能在tomcat上運行。 插拔式組件架構,可以靈活擴張功能。 高安全性,提供集群模式下,避免ip欺騙等功能。系統約定Argo不是一個通用的Web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:
servlet 3.0環境,主要針對Tomcat 7.x。 基於 guice的Ioc,組織和項目可以各提供一個module注入模塊,而且module的命名必須符合約定。 maven依賴,項目的代碼體系和maven默認代碼體系一致,maven以插件提供開發過程中所需要的開發運行環境( jetty:run或 tomcat7:run)。開發者們對此次開源的反響非常強烈,幾乎一天時間就被收藏90次,fork34個。
那麼,微博上的網友是如何響應的呢?不妨一起來看下:
SunnyerEric孫晗曉:
得意的那些事兒:
欣謙-謙謙君子:
這個readme挺有專業水準。另,基於ioc和約定,web frmwork邏輯可以寫好看,但難點在怎麼簡化page view/flow。是否會掀起國內的開源熱潮呢?也有網友直接驚呼:希望中國的開源事業越來越強大!各位網友不妨一起來討論下。
開源地址:https://github.com/58code/Argo