轻量级的 Kotlin 异步 Web 框架 Next 发布 3.0.0.0

栏目: 软件资讯 · 发布时间: 5年前

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

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

Cloudopt Next 主要拥有以下特点:

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

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

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

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

3.0.0.0 主要变动是在升级了底层依赖、全面重构了反射、支持协程及全面实现非阻塞能力。其次是优化了 websocket 的使用和定制了很多协程相关的语法糖。

依赖升级

在 3.0.0.0 中对一些基础依赖进行了全面升级, JDK 升级到 11、Vertx 升级到 4.0.0、Kotlin 升级到 1.4.0。我们也建议在这样的环境下运行,较低的版本尚未做兼容性测试。

反射重构

对使用 Java 的开发者来说影响不大,主要是提升了 Kotlin 开发者的开发体验。

在新版中,对大部分的反射、扫描注解进行了重构。原本是使用 Java 原生的反射操作,现在全部改为了 Kotlin 原生的反射操作。改为 Kotlin 原生语法后对 Kotlin 的基础类型的支持更加友好、也避免了 Kotlin 类转回 Java 类的开销。

在反射上也全面支持了 kotlin 协程的 suspend 声明。

 

WebSocket 更新

请使用以下新的用法。现在支持更优雅的用法,只需要继承 WebSocketResource 并实现相应的方法即可。

@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.")
    }


}

支持协程

3.0.0.0-BETA1 开始支持 Kotlin 协程及 await 语法。目前 Interceptor、 Validator、 Route 都已经支持协程(suspend 和 await)。Handler 没有支持打算,主要是因为 Handler 涉及到的地方很多,基本每一步都有,理论上在 Handler 中就不应该放阻塞的、处理时间长的代码,更适合做像是日志输出等等。如果需要使用阻塞代码建议使用 Worker.worker 这种专门运行阻塞代码的方法。

同时 Next 对协程做了大量的优化封装。首先是对所有的类都注册了 worker 和 await 两个语法糖,你可以在任何的类中进行使用。在运行阻塞代码时会自动调用 vertx 的 executeBlocking() 来运行。

如:

fun test() {
    var id = worker<Int>({ handler ->
        handler.complete(1)
    }, { asyncResult ->
        //onComplete
    })
}suspend fun test() {
    var id = await<Int> { handler ->
        handler.complete(1)
    }
}

新的插件

增加了全新的非阻塞的 redis 操作插件及 rocketmq 插件。

全新的 Cache 插件

cloudopt-next-cache 是基于 caffeine 和 lettuce 的分布式二级缓存插件。 参考了 J2Cache,重新实现了一个非阻塞的分布式二级缓存插件。

---------------------------------------------------------------------------------------

更新详情:https://www.yuque.com/cloudopt/next/xg50uq

GitHub 地址:https://github.com/cloudoptlab/cloudopt-next

码云地址: https://gitee.com/cloudopt/cloudopt-next


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

实战Linux编程精髓

实战Linux编程精髓

罗宾斯 / 中国电力出版社 / 2005-7 / 59.80元

编写应用软件,特别是那些比较重要的软件,毫无疑问要涉及到系统调用。在UNIX/Linux环境下编程更是如此。要想编写优秀的软件,就必须熟悉这些系统调用的方方面面。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。全书主要分为三大部分:第一部分讨论了基本的编程问题,包括Linux编程环境、基本的文件和进程管理与操作、内存操作,还介绍了一些基本的库接口。第二部分比较深入地讨论了......一起来看看 《实战Linux编程精髓》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具