首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

cicada

前言

俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围。

创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式。

好了,现在着重来谈谈 cicada 这个项目的核心功能。

我把他定义为一个快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。

也仅需要一行代码即可启动一个 服务。

特性

现在来谈谈重要的几个特性。

当前版本主要实现了基本的请求、响应、自定义参数以及拦截器功能。

功能虽少,但五脏俱全。

在今后的迭代过程中会逐渐完善上图功能,有好的想法也欢迎提 https://github.com/crossoverJie/cicada/issues。

快速启动

下面来看看如何快速启动一个 HTTP 服务。

只需要创建一个 Maven 项目,并引入核心包。

如上图所示,再配置一个启动类即可。

配置业务 Action

当然我们还需要一个实现业务逻辑的地方。 提供了一个接口,只需要实现该接口即可实现具体逻辑。

创建业务 Action 实现 接口。

同时需要再自定义类中加上 注解,并需要指定一个 ,该 value 主要是为了在请求路由时能找到业务类。

这样启动应用并访问

便能执行业务逻辑同时得到服务端的返回。

目前默认支持的是 响应,后期也会加上模板解析。

服务中也会打印相关日志。

灵活的参数配置

这里所有的请求参数都封装在 中,可以利用其中的各种 API 获取请求数据。

之所以是灵活的:我们甚至可以这样请求:

这样就可以传递任意结构的数据,只要业务处理时进行解析即可。

自定义拦截器

拦截器是一个框架的基本功能,可以利用拦截器实现日志记录、事务提交等通用工作。

为此 提供一个接口: 。

我们只需要实现该接口即可编写拦截功能:

这里演示的是记录所有 action 的执行时间。

目前默认只实现了 action 的拦截,后期也会加入自定义拦截器。

拦截适配器

虽说在拦截器中提供了 两个方法,但也不是所有的方法都需要实现。

因此 提供了一个适配器:

我们需要继承他便可按需实现其中的某个方法,如下所示:

性能测试

既然是一个 HTTP 服务框架,那性能自然也得保证。

在测试条件为: 用 Jmeter 压测情况如下:

同样的服务器用 Tomcat 来压测看看结果。

Tomcat 的线程池配置:

我这里请求的是 Tomcat 的一个 doc 目录,虽说结果看似 的性能比 Tomcat 还强。

但其实这个对比过程中的变量并没有完全控制好,Tomcat 所返回的是 HTML,而 仅仅返回了 json,当然问题也不止这些。

但还是能说明 目前的性能还是不错的。

总结

本文没有过多讨论 实现原理,感兴趣的可以看看源码,都比较简单。

在后续的更新中会仔细探讨这块内容。

同时不出意外 会持续更新,未来也会加入更多实用的功能。

甚至我会在适当的时机将它应用于我的生产项目,也希望更多朋友能参与进来一起把这个「轮子」做的更好。

项目地址:https://github.com/crossoverJie/cicada

你的点赞与转发是最大的支持。

更多推荐内容

↓↓↓

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180903G0A8WV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券