写点什么

Magician 1.1.16 发布,handler 采用注解配置

发布于: 2021 年 07 月 16 日

Magician 从诞生的那天起,其定位就是一个网络编程包,他虽然属于应用层,但是又偏向于底层。在用户手里 一般是承担内核的角色,主要职责就是负责网络通信。


由于偏底层的特性,所以在使用的过程中 通常会出现这么一个问题,当我们创建好一个 TCP 服务之后

Magician.createTCPServer()                    .handler("/", new DemoHandler())                    .bind(8080);
复制代码

如果需要增加 handler,就不得不更改这部分代码,使其变成这样

Magician.createTCPServer()                    .handler("/", new DemoHandler())                    .handler("/test", new TestHandler())                    .bind(8080);
复制代码

如果需要 websocket 又得改成这样

Magician.createTCPServer()                    .handler("/", new DemoHandler())                    .handler("/test", new TestHandler())                    .webSocketHandler("/websocket", new DemoSocketHandler())                    .bind(8080);
复制代码

创建服务的步骤 和 创建 handler 的步骤 耦合的太紧,如果纯粹的使用这个项目 问题倒不大,但是如果把这个项目作为另一个项目的内核来使用,这个问题就会非常明显,因为这个场景下 创建服务的代码会单独封装掉,经常去改这个被封装掉的代码,会有一定的安全隐患。


所以在 1.1.16 中 我们解决了这个问题。

我们采用了注解来定义一个 handler

在创建服务的时候,只需要指定一个扫描范围

Magician.createTCPServer()                    .scan("handler所在的包名")// 指定扫描范围                    .bind(8080);
复制代码

这样如果需要新增 handler 就不需要再动这块的代码了

比如新增一个 TCPHandler

@TCPHandler(path="/")// 只需要加个注解即可public class DemoHandler implements TCPBaseHandler<MagicianRequest> {
@Override public void request(MagicianRequest magicianRequest) { // response data magicianRequest.getResponse() .sendJson(200, "{'status':'ok'}"); }}
复制代码

新增一个 WebSocketHandler

@WebSocketHandler(path = "/websocket")public class DemoSocketHandler implements WebSocketBaseHandler {       @Override    public void onOpen(WebSocketSession webSocketSession) {         }       @Override    public void onClose(WebSocketSession webSocketSession) {            }
@Override public void onMessage(String message, WebSocketSession webSocketSession) {
}}
复制代码

这么做 就彻底的解耦了,创建服务就是纯粹的创建服务,创建 handler 就是纯粹的创建 handler,两者之间没有很强的联系。

跟 Magician 一起升级的还有

Magician-Web 组件,Martian 组件。这两个组件的升级点,主要是配合 Magician 的改动而改动。而且给 Martian 带来了一个新特性:可以很方便的支持 WebSocket 了。

Magician 的性能测试

TFB 测试结果 达到了每秒可以完成 15 万次请求。

项目官网:http://magician-io.com


Magician IO,Magician 开源项目的官方公众平台,会第一时间推送 Magician 的动态,同时也会不定期的发布业内资讯,技术文章等


发布于: 2021 年 07 月 16 日阅读数: 14
用户头像

还未添加个人签名 2020.12.08 加入

还未添加个人简介

评论

发布
暂无评论
Magician 1.1.16 发布,handler采用注解配置