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

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

 
阅读更多

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

很多网站在建设初期都会选择PHP  .net,随着业务规模不断扩大,开发需求增多,已经各种成本问题,逐渐得向JAVA过渡。过渡过程中,架构师们根据各自业务特点及需要,规划出技术平台的框架,然后面对着JAVA社区和各种形形色色的开源产品。

 

在这里不得不提的是58文化:简单、高效

同样适用于技术选型和平台搭建,每一个应用框架、RPC服务甚至是工具类,都要足够简单、高效、可依赖。

有两种代码是没有bug的:1. 逻辑复杂到没有人能明白其中的运行轨迹,而最终结果总是对的。2. 逻辑简单到每个人都能明白代码的每一个细节,要做的事一目了然。

其中的取舍很明显了吧,完成功能的基础上,足够简单是终极目标。

 

好了,废话不多说,下面首先跑一个demo试试

从github下载的代码中有个demo项目 company-sample,可以直接运行(建议使用mvn插件 jetty:run或tomcat:run,例子中已经依赖两种jetty插件),打开 http://localhost/hello 即可看到效果

 

细心的朋友会发现,demo中并没有web.xml

这是因为Argo基于servlet3.0,web.xml是可以省略的,关于servlet3.0,请参考 http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/index.html?ca=drs-cn-0423

 

 

com.mycompany.sample.controllers.HomeController

这就是我们MVC中的C,其中有四个import

import com.bj58.argo.controller.AbstractController;

import com.bj58.argo.ActionResult;
import com.bj58.argo.BeatContext;
import com.bj58.argo.annotations.Path;

 

1. AbstractController:

我们的MVC中的C的父类。

(这里再提一个内部规范:约定优于配置。工程中大量的配置可提高灵活性,但是负面影响就是难于维护,学习配置文件也需要一定过程,所以干脆,我们约定某种规则,减少不必要的配置文件)

C有三个要素:(1) 继承自AbstractController  (2) 类名以Controller结尾   (3) 包名以controllers结尾

 

2. ActionResult:

所有的web返回结果都是ActionResult,页面、文字、图片各种类型……

 

3. BeatContext:

一次请求中的上下文环境,内置某些全局变量,还封装了一些更友好易于理解的方法。

beat().getClient()  可以理解成客户端对象,对cookie和上传文件有封装处理,forms()把表单封装成map……

 

4. Path:

这是Argo的内部注解,用于映射url,支持正则表达式和匹配注入对象。例如:

 

@Path("{phoneNumber:\\d+}")
public ActionResult helloView(int phoneNumber) 

Argo会把匹配到的 \\d+  自动赋值给形参 phoneNumber

 

 

 

说完import,最后再说说demo中出现的内置方法(继承自AbstractController)

三个返回ActionResult的方法:

view(String viewName)    返回一个页面,系统默认采用velocity实现,viewName + .html存放的目录resources/views下

redirect(String redirectUrl)   跳转到一个地址(302临时跳转)redirect301(String redirectUrl)   跳转到一个地址(301永久跳转) 

其他:

model() 返回变量列表,熟悉velocity的同学都知道,渲染vm模板的时候需要set变量

beat() 获得当前的上下文信息

request() 获得当前的request,也可以这样写 beat().getRequest()

response() 获得当前的response,也可以这样写 beat().getResponse()

logger() 获得当前类的logger

logger(String name) 根据名字获得Logger

logger(Class clazz) 根据类名获得Logger

argo() 这个对象慎用!里面包含了Argo的所有核心:DI、公共处理线程池、Servlet适配器(URL转发)

 

 

 

分享到:
评论

相关推荐

    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.14.zip_Argo_argouml

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

    ArgoUML-0.26开源.exe

    ArgoUML-0.26开源.exe 推荐下载

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

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

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

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

    Python-Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序

    Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序

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

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

    argouml.jar.zip

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

    ArgoUML 0.34 使用手册

    ArgoUML是一款开源的统一建模语言(UML)工具,它支持多种编程语言如Java、C#和PHP等。它主要用于面向对象分析和设计(OOA&D),并强调认知心理学、开放标准、100%纯Java开发以及开源社区的贡献。ArgoUML的版本0.34...

    argoUML(中文版)

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

    ArgoUML工具包

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

    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)建模工具,它允许用户创建、编辑和管理各种UML模型。该软件是由Tigris组织开发并维护的,广泛应用于软件工程领域,特别是对于那些需要进行系统设计和分析的项目。通过...

    ARGO入门手册1

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

    CI/CD-ArgoCD交付管理

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

    ArgoUML UML绘图工具

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

    ArgoUML最新版源码

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

    ArgoUML-0.24.zip_Argo UML_ArgoU_argoUML pudn_argouml_www.argo-sc

    ArgoUML是一款基于Java语言开发的开源统一建模语言(UML)工具,它提供了全面的UML建模功能,被广泛认为是业界最受欢迎的UML建模平台之一。这款软件不仅允许用户创建和编辑各种UML图表,还支持模型的导出、导入以及...

Global site tag (gtag.js) - Google Analytics