V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cloudopt
V2EX  ›  分享创造

试试一个轻量级的 Web 框架 —— Cloudopt Next

  •  
  •   cloudopt · 2020-08-03 19:34:32 +08:00 · 2753 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    image.png image.png 

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

    Cloudopt Next 主要拥有以下特点:

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

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

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

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

    GitHub:

    开源中国:

    性能

    测试电脑的 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()
    }
    

    寻求帮助

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

    • 请关注我们的推特,以便获得最新的信息。
    • 请仔细检查参考文档,查看具体的代码案例或者是常见问题。
    • 如果您在升级版本以后遇到问题,可以查看 Wiki 中的升级说明。
    • 请发送邮件到 support@cloudopt.net
    • 请在 GitHub 发送 Issue 提交您的问题,我们将尽快为您解答。
    • 如果您在中国,还可以加入交流 QQ 群:557692142 。
    6 条回复    2020-08-04 19:38:19 +08:00
    Austin2035
        1
    Austin2035  
       2020-08-03 20:35:46 +08:00
    **Cloudopt Next 的性能是 Flask 的 50 倍,是 Spring Boot 的两倍。**
    原来 Spring boot 那么菜
    cloudopt
        2
    cloudopt  
    OP
       2020-08-03 21:00:52 +08:00
    @lookcos Spring Boot 比较大,性能没那么好。具体你也可以看下各大性能测试榜单的数据,vertx 一直都是在前几的。
    d5
        3
    d5  
       2020-08-04 16:44:46 +08:00
    cloudopt adblocker 用户支持一个
    cloudopt
        4
    cloudopt  
    OP
       2020-08-04 16:59:49 +08:00
    @d5 感谢支持~ cloudopt adblocker 也是开源的~
    zzlettle
        5
    zzlettle  
       2020-08-04 18:58:46 +08:00
    和 go 比性能怎么样
    cloudopt
        6
    cloudopt  
    OP
       2020-08-04 19:38:19 +08:00
    @zzlettle 根据 《 Web Framework Benchmarks 》是 gin 的三倍多,goframe 的四倍多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1900 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.