image


image.png image.png image


Cloudopt Next 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理Url的解析,数据的封装,Json的输出等等,从根本上减少开发时间、提升开发体验。


Cloudopt Next 主要拥有以下特点:


简单 极简设计,几乎不要任何配置,不依赖 Tomcat、Jetty 等 Web 容器。


异步 基于 vertx 轻松实现高性能的异步服务。


扩展 支持 vertx 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。


中文 全中文文档、中文社区,帮助中文开发者快速上手。


GitHub:


image


开源中国:


image


性能


测试电脑的 CPU 是 2.2 GHz 六核 Intel Core i7,内存为 16 GB 2400 MHz DDR4。


吞吐量参数为用户数 10,循环 10000 次。

框架名称吞吐量
Cloudopt Next20267.5/sec
Spring Boot10698.2/sec
Flask440.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();
}


超好用的协程

var value = await<String>{handler->
    handler.complete(RedisManager.sync().get("key"))
}


WebSocket

@WebSocket("/websocket")
class WebSocketHandler : WebSocketResource {

    override fun beforeConnection(resource: Resource): Boolean {
        resource.request.response().statusCode = 400
        resource.request.response().end()
        return false
    }

    override fun onConnectionSuccess(websocket: ServerWebSocket) {
        websocket.writeTextMessage("Connection successful!") {
            println("The event of after write.")
        }
        val buffer: Buffer = Buffer.buffer().appendInt(123).appendFloat(1.23f)
        websocket.writeBinaryMessage(buffer) {
            println("The event of after write binary.")
        }
    }

    override fun onConnectionFailure(throwable: Throwable) {

    }

    override fun onConnectionComplete(websocket: ServerWebSocket) {

    }

    override fun onFrameMessage(frame: WebSocketFrame, websocket: ServerWebSocket) {
        println(frame.textData())
        websocket.writeTextMessage("This is the message from the server!")
    }

    override fun onTextMessage(message: String, websocket: ServerWebSocket) {
        println(message)
        websocket.writeTextMessage("This is the message from the server!")
    }

    override fun onBinaryMessage(buffer: Buffer, websocket: ServerWebSocket) {

    }

    override fun onPingPong(buffer: Buffer, websocket: ServerWebSocket) {
        println("Pong...")
    }

    override fun onException(throwable: Throwable, websocket: ServerWebSocket) {
        throwable.printStackTrace()
        if (!websocket.isClosed) {
            websocket.close()
        }
    }

    override fun onDrain(websocket: ServerWebSocket) {

    }

    override fun onEnd(websocket: ServerWebSocket) {
        println("Connection was closed.")
    }


}

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()
}


寻求帮助


在使用Cloudopt Next的过程中遇到了问题?您可以通过下面途径寻求帮助:



报告问题


Cloudopt Next使用GitHub的问题跟踪系统,以记录bug和特性请求。如果您想提出一个问题,可以参考下面的建议:



许可协议


Cloudopt Next 是一个开源项目,遵循 Apache 2.0许可协议


旧版文档

2.x

https://github.com/cloudoptlab/cloudopt-next/releases/tag/2.0.8.1-BETA


公众号

关注公众号,第一时间获得更新资讯。

扫码_搜索联合传播样式-白色版.png