58同城開源羽量級JAVA Web框架 Argo 發表于21小時前| 次閱讀| 來源CSDN| 0 條評論| 作者張紅月 開源58同城JAVAWeb框架 摘要:58同城開源其羽量級JAVA Web框架——Argo,Argo起源與58同城的內部Web框架wf(Web Framework)。 目前wf支撐著58同城幾乎所有的Web網站。 開發者們對此次開源的反響非常強烈,幾乎一天時間就被收藏了90次,fork34個。 那麼是否會掀起國內的開源熱潮呢?
如今,開源已成為業界互聯網公司的一種發展趨勢,許多公司在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孫晗曉:
現在到處都有開源專案可以用··· 傳統的軟體銷售商們要顫抖了··· 以後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