58同城開源web框架 Argo (四)

2021-09-01 19:51:24 字數 1945 閱讀 9564

58同城開源的輕量級web框架

今天開頭說說抽象,物件導向的特點:抽象、繼承、多型,好的設計都是基於優秀的抽象,抽象層次越高、越完善,他的擴充套件性就越好,也越容易理解。好比居家過日子,多多少少需要一些工具,可切割的、可裁剪的,這就是兩個inte***ce,於是我們準備了刀和剪子,就是一種實現。再後有了水果刀和切菜刀、園藝剪子和裁衣服剪子,這就是多型。再然對菜進行分類,把葷素分開,準備同樣的兩把菜刀,一把切葷的一把切素的,就是過載。

中心思想就是以特性為核心,然後一點點的實現,過程中可以對底層不同特性組合使用,但是盡量保持最高抽象級別,以便於……(***)

看看argofilter 的 init()方法

public void init(filterconfig filterconfig) throws servletexception  catch (exception e) 

}

argodispatche***ctory.create(servletcontext) 進入之後看到簡單的兩行**

1. groupconvention groupconvention = groupconventionfactory.getgroupconvention();

這句話是獲取了乙個預設的約定配置。argo的配置分為組織級和專案級,組織級包括配置檔案路徑configfolder(),日誌檔案路徑logfolder(),組織級guice的注入module module(),專案級包括專案id  id(),所有的controller類 controllerclasses(),專案級guice的注入module module()。

2.argo.instance.init(servletcontext, groupconvention);

這裡對全域性的argo進行初始化。instance應該是乙個靜態例項,argo不是用guice麼,怎麼還能看見new,這種強引用的初始化方法暴露出來,難道不怕重複載入導致錯誤麼。再去看看這個init方法。裡面的onlyonce.check();可以保證只進行一次初始化,看來是自己寫的乙個工具類了。

listmodules = lists.newarraylist();

modules.add(new argomodule(this));

module groupmodule = groupconvention.group().module();

if (null != groupmodule)

modules.add(groupmodule);

module projectmodule = groupconvention.currentproject().module();

if (null != projectmodule)

modules.add(projectmodule);

看到了吧,秘密在這裡,argo本身用的

module是

argomodule,此外還允許開發者定義自己的

module,組織級和專案級分得很明確,就是soa的基石,統一由argo的guice來管理排程。(有遠見!)

this.argodispatcher = getinstance(argodispatcher.class);

return argodispatcher;

init()方法返回argodispatcher,argodispatcher繫結的實現是

com.bj58.argo.internal.defaultargodispatcher,argo

用於處理請求的

排程中心。看得出他的service方法   

public void service(httpservletrequest request, httpservletresponse response) 就是處理方法了。

這次看到這裡,可以知道argo底層應該是面向大型企業架構的一種簡單抽象,具體實現到什麼程度以後繼續深入。

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

近日,58同城開源 微博稱,58同城輕量級web框架argo正式開源。目前argo支撐著58同城幾乎所有的web站點,包括wap和手機端的訪問等,現在argo每天處理10億級的請求。經過長時間的運作與執行,證明argo是乙個可靠 高效的web框架。argo起源於58同城的內容web框架wf web ...

使用Scrapy框架爬取58同城的出租房資訊

from scrapy.exceptions import dropitem from pymongo import mongoclient from scrapy.conf import settings from pymongo.errors import duplicatekeyerror f...

開源web框架Rose開發初感

rose 是由人人網 糯公尺網 提供的 基於servlet規範 spring 規範 的開放源 web開發框架。rose的開源位址是 本文不打算為您詳細介紹rose,而且假設你已經對rose已經有一些了解,本文的中心是自己初次接觸rose後的一點感言。一句話 基於spring的元件框架,推崇頁面驅動和...