`
biocy
  • 浏览: 34870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

58同城开源的轻量级web框架 https://github.com/58code/Argo

 

今天开头说说抽象,面向对象的特点:抽象、继承、多态,好的设计都是基于优秀的抽象,抽象层次越高、越完善,他的扩展性就越好,也越容易理解。好比居家过日子,多多少少需要一些工具,可切割的、可裁剪的,这就是两个interface,于是我们准备了刀和剪子,就是一种实现。再后有了水果刀和切菜刀、园艺剪子和裁衣服剪子,这就是多态。再然对菜进行分类,把荤素分开,准备同样的两把菜刀,一把切荤的一把切素的,就是重载。

中心思想就是以特性为核心,然后一点点的实现,过程中可以对底层不同特性组合使用,但是尽量保持最高抽象级别,以便于……(你懂的)

 

看看ArgoFilter 的 init()方法

public void init(FilterConfig filterConfig) throws ServletException {
        ServletContext servletContext = filterConfig.getServletContext();
        try {
            dispatcher = ArgoDispatcherFactory.create(servletContext);
            dispatcher.init();
        } catch (Exception e) {
            servletContext.log("failed to argo initialize, system exit!!!", e);
            System.exit(1);
        }
    }

ArgoDispatcherFactory.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();可以保证只进行一次初始化,看来是自己写的一个工具类了。

 

List<Module> modules = 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.zip

    Argo,源自58同城,是一款强大的开源Web框架,专为构建高性能、高可扩展性的Web应用而设计。基于Java语言,Argo在58同城内部广泛应用于各种Web站点,包括移动端和WAP访问,展现出了其在处理大规模并发和复杂业务场景...

    58同城开源框架

    【58同城开源框架】是58同城公司推出的一款开源技术框架,旨在为开发者提供高效、稳定、可扩展的开发工具。这个框架凝聚了58同城在互联网服务领域的技术积累,体现了其对软件工程的最佳实践,有助于提升开发效率,...

    argo.jar 开源的web框架

    Argo是开源的web框架,目前Argo支撑着58同城几乎所有的web站点,包括wap和手机端的访问等,现在wf每天处理10亿级的请求。经过长时间的运作与运行,证明Argo是一个可靠的、高效的web框架。 Argo在wf做了大量优化和...

    ArgoUML-0.26开源.exe

    ArgoUML-0.26开源.exe 推荐下载

    《58同城架构演进与优化二三事》沈剑

    - **自研系统**:开发了专门的图片存储系统,以及一套完整的开发框架(包括Web框架Argo和服务框架Gaea),大大降低了站点和服务的开发成本。 #### 四、更大流量挑战及解决方案 - **面临的新挑战**:如何应对更高的...

    ArgoUML-0.14.zip_Argo_argouml

    ArgoUML是一款开源的UML(统一建模语言)工具,主要版本为0.14,被封装在名为"ArgoUML-0.14.zip"的压缩包文件中。这个工具允许用户创建、编辑和管理UML模型,是软件开发过程中的一个重要辅助工具,尤其对于系统分析...

    Argo 水平和垂直样式管理后台模板UI框架

    代码超级干净,可以很容易地定制,很容易转化为任何类型的web应用程序,包括自定义管理面板,数据分析仪表盘,电子商务后端、CMS、CRM或任何SASS面板。 主要特色 响应布局(台式电脑、平板电脑、移动设备) 用Bootstrap...

    argouml.jar.zip

    ARGO UML(ArgoUML)是一款基于Java开发的开源统一建模语言(UML)工具。UML是一种广泛用于软件系统分析和设计的标准化建模语言,它提供了图形化的表示方法,帮助开发者理解和交流软件系统的结构和行为。而argouml....

    ArgoUML 0.34 使用手册

    - 开源:ArgoUML是开源项目,这意味着任何人都可以自由地下载、使用、修改和分发该软件,这促进了社区的参与和创新。 关于手册的版权,它采用了开放出版许可证(Open Publication License, OPL),这允许用户在满足...

    ArgoUML开源的uml设计软件,可以和php集成!!

    ArgoUML是一款开源的统一建模语言(UML)设计工具,专为软件开发者提供图形化界面,以便创建和管理UML模型。这款软件的独特之处在于它支持与PHP的集成,使得Web开发者也能利用UML进行项目规划和设计。 UML是一种...

    ArgoUML最新版

    ArgoUML是一款免费且开源的统一建模语言(UML)建模工具,它允许用户创建、编辑和管理各种UML模型。该软件是由Tigris组织开发并维护的,广泛应用于软件工程领域,特别是对于那些需要进行系统设计和分析的项目。通过...

    ArgoUML工具包

    ArgoUML是一款开源的计算机辅助软件工程(CASE)工具,主要用于统一建模语言(UML)的建模。它提供了丰富的功能,让用户能够便捷地设计、创建和管理UML模型。这款轻量级的应用程序在Java平台上运行,因此具有跨平台的...

    ARGO入门手册1

    ARGO入门手册1为用户提供了一个全面了解ARGO项目和ARGO数据的指南,包括ARGO浮标的工作原理、ARGO数据的类型和获取方式、ARGO数据的应用等方面。该手册旨在帮助用户更好地理解和使用ARGO数据,从而推动全球海洋研究...

    CI/CD-ArgoCD交付管理

    ArgoCD 是一个开源项目,专门设计用于Kubernetes的持续交付。它提供了一种声明性的方式来管理K8s资源,使开发者能够将应用程序的状态与Git存储库中的定义保持一致。这使得整个部署过程变得可审计、透明且易于管理。...

    ArgoUML最新版源码

    ArgoUML 是一个开源的统一建模语言(UML)建模工具,专为软件开发者和设计师提供便捷的UML模型创建环境。该工具支持多种编程语言的代码自动生成,包括C++、C、Java、PHP、SQL和C#等,极大地提升了开发效率和代码一致...

    zooviewer:像 node-zk-web 一样用 java.jsut 编写的 zookeeper web ui

    zooviewer zookeeper web ui written in java.jsut like node-zk-web 这是一个查看zookeeper节点并可以...1,基于58开源的web框架Argo,全应用无一个配置文件。详见. 2,页业端用了jquery-tree ,方便查看zk的树状节点.

    argoUML(中文版)

    argouml一款很好的开源uml工具 中文版的

    ArgoUML mac 工具

    ArgoUML是一款开源的、基于Java编写的统一建模语言(UML)设计工具,适用于多种操作系统,包括Mac OS X。它提供了全面的UML支持,使得软件开发者和系统分析师可以方便地创建、编辑和管理各种UML模型。在Mac平台上,...

    argouml快速入门电子书 PDF

    ArgoUML是一款开源的统一建模语言(Unified Modeling Language, UML)工具,支持大部分UML 1.4标准中的图类型。它适用于软件设计师、开发人员和其他相关人员在软件开发生命周期中的需求分析、设计阶段进行系统建模。...

    ArgoUML UML绘图工具

    **ArgoUML** 是一个基于Java开发的开源UML(统一建模语言)绘图工具,它允许用户在各种操作系统上创建、编辑和管理UML模型。由于其跨平台特性,无论是在Windows、Linux还是Mac OS X系统上,用户都能方便地使用Argo...

Global site tag (gtag.js) - Google Analytics