58同城開源其輕量級Web框架Argo
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框架。
作為一個有一定規模的網際網路企業,如果在變化的網際網路環境中上線一個專案,在軟體開發中需要對三方面進行平衡:
- 組織/公司,在一個組織內部,需要每個專案開發儘量有統一的風格、架構,學習成本、維護成本等儘可能低。
- 運維,希望每個站點的配置和可執行部分分離,部署的方式相同。
- 專案內部,希望程式設計師聚焦在業務上,可以快速實現產品需求、響應產品變化。 在此基礎上,我們開發了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。
是否會掀起國內的開源熱潮呢?也有網友直接驚呼:希望中國的開源事業越來越強大!各位網友不妨一起來討論下。
相關文章
- PhalApi(π框架) - PHP輕量級開源介面框架API框架PHP
- 輕量級Web框架Flask(二)Web框架Flask
- 強大的輕量級開源框架web.py安裝詳解框架Web
- Midori:輕量級開源 Web 瀏覽器Web瀏覽器
- Spring 5| 輕量級的開源JavaEE框架SpringJava框架
- 輕量級 Web 框架 Gin 結構分析Web框架
- 開源輕量級 IM 框架 MobileIMSDK v6.1.2 釋出!框架
- 「造個輪子」——cicada(輕量級 WEB 框架)Web框架
- CherryPy :一個輕量級的 Python Web 框架PythonWeb框架
- 我們開源了一個輕量的 Web IDE UI 框架WebIDEUI框架
- Oracle釋出開源的輕量級 Java 微服務框架 HelidonOracleJava微服務框架
- 輕量級IOC框架:Ninject框架
- 開源輕量級 IM 框架 MobileIMSDK 的微信小程式端已釋出!框架微信小程式
- Go Web輕量級框架Gin學習系列:路由分組GoWeb框架路由
- Flutter路由輕量級框架FRouterFlutter路由框架
- 輕量級orm框架——gzero指南ORM框架
- 超輕量級PHP框架BroPHPPHP框架
- 一個輕量級WebFramework開發框架介紹WebFramework框架
- 整合開源技術的輕量級的 Web Application Framework 設計思路WebAPPFramework
- Android 輕量級ORM資料庫開源框架ActiveAndroid 原始碼分析AndroidORM資料庫框架原始碼
- Go Web輕量級框架Gin學習系列:資料繫結GoWeb框架
- Go Web輕量級框架Gin學習系列:安裝與使用GoWeb框架
- Javalin2.4.0釋出,Kotlin/Java輕量級Web框架JavaKotlinWeb框架
- Golang web filter 輕量級實現GolangWebFilter
- looter——超輕量級爬蟲框架爬蟲框架
- Fd.Service 輕量級WebApi框架WebAPI框架
- 如何編寫輕量級 CSS 框架CSS框架
- 【Android開源專案分析】android輕量級開源快取框架——ASimpleCache(ACache)原始碼分析Android快取框架原始碼
- Solon 1.6.25 釋出,輕量級應用開發框架框架
- Go Web輕量級框架Gin學習系列:HTTP請求日誌GoWeb框架HTTP
- LambdaToSql(輕量級ORM) 入門篇 開源專案SQLORM
- 輕量開源相簿 Album
- Solon 1.6.18 釋出,輕量級應用開發框架框架
- 輕量級 Web 元件編譯器 — StencilWeb元件編譯
- wangEditor——輕量級web富文字框Web
- 輕量級DI框架Guice使用詳解框架GUI
- 輕量級Android快取框架ASimpleCacheAndroid快取框架
- Go Web輕量級框架Gin學習系列:中介軟體使用詳解GoWeb框架