Cloudopt Next 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理Url的解析,数据的封装,Json的输出等等,从根本上减少开发时间、提升开发体验。
官网: https://next.cloudopt.net
Cloudopt Next 主要拥有以下特点:
简单 极简设计,几乎不要任何配置,不依赖 Tomcat、Jetty 等 Web 容器。
异步 基于 vertx 轻松实现高性能的异步服务。
扩展 支持 vertx 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。
中文 全中文文档、中文社区,帮助中文开发者快速上手。
性能
测试电脑的 CPU 是 2.2 GHz 六核 Intel Core i7,内存为 16 GB 2400 MHz DDR4。
吞吐量参数为用户数 10,循环 10000 次。
| 框架名称 |
吞吐量 |
| Cloudopt Next |
20267.5/sec |
| Spring Boot |
10698.2/sec |
| Flask |
440.8/sec |
根据性能测试结果:Cloudopt Next 的性能是 Flask 的 50 倍,是 Spring Boot 的两倍。
示例
您可以通过访问Cloudopt Next的官网来查看文档,也可以前往Example查看简单的示例。
路由
让我们来看看一个简单的基于Cloudopt Next的路由:
@API("/")
class IndexController : Resource() {
@GET
fun get(){
renderHtml(view = "index")
}
}
@API(value = "/")
public class IndexController extends Resource {
@GET
public void get(){
View v = new View();
v.setView("index");
renderHtml(v);
}
}
启动
fun main(args: Array<String>) {
NextServer.run()
}
public static void main(String args[]) {
NextServer.run();
}
WebSocket
@WebSocket("/websocket")
class WebSocketController : WebSocketResource {
override fun handler(userWebSocketConnection: ServerWebSocket) {
println("Connected!")
userWebSocketConnection.writeTextMessage("Hello World")
userWebSocketConnection.frameHandler { frame ->
println(frame.textData())
}
}
}
SockJS
@SocketJS("/socket/api/*")
class SocketController : SocketJSResource {
override fun handler(userSocketConnection: SockJSSocket) {
println(userSocketConnection)
userSocketConnection.handler {message->
println(message)
userSocketConnection.write("Hello world!")
}
}
}
插件
fun main(args: Array<String>) {
NextServer.addPlugin(TestPlugin())
NextServer.addPlugin(EventPlugin())
NextServer.run()
}
2.0.8.0-BETA
- EventBus 支持 map 类型和 fastjson 的常用对象。
- 修复在读取配置文件 json 对象时,如果取空值会引发报错的问题。
- 获取配置时会去读取配置文件的 json 对象,现在在获取类似 "net.cloudopt.next" 这种多级别的值的之前会将配置文件的 json 对象新生成一份再读取。
- 重命名 NextServer 的 controllers 对象为 resourceTables。
- 优化 Handler 的生命周期,现在执行 afterCompletion 会一定在请求结束后执行,之前在请求时间较长时可能会出现事件丢失的问题。
- 优化了 Handler 的生命周期后,现在错误拦截器也已经支持全局的 Handler。
- 重构了 Handler 类,将其从抽象类改为接口,同时支持 afterRender(),支持在渲染后运行、支持通过返回的布尔值控制是否进行下一步还是直接返回数据。
- 自带的 Handler 都已经对新的 Handler 接口进行了适配。
- 现在如果 Handler 类中没有声明结束请求的话,Next 在执行相关方法时会自动关闭请求。
- 升级 fastjson 的相关依赖。
- 关闭 fastjson 的安全模式,使用白名单模式(目前已内置 Next 相关包名)。
- 增加 cloudopt-next-cache 插件。