Redkale(红菜苔)致力于简化集中式和微服务架构的开发

Redkale是一个使用不多但简洁的Java框架,用于构建集中式和微服务应用。其亮点包括轻量级HTTP、SNCP协议、DataSource和异步接口。虽然资料较少,但在小型项目中能提供便捷的数据源管理和RESTful API实现。

前言:
这个Redkale这个东西呀,使用的人不多,我也是公司同事Jerry大神引进来的,他离职后,Redkale框架搭建的测试部质量中心随之由我这边进行维护与扩展,相对比Python的django搭建的web框架,这个Redkale搭建web也很简单,缺点就是资料少了点,网上都没啥子资料或者博客,活跃度不高,毕竟不主流。

摘要:
Redkale官方文档中讲到了5个亮点,这里说全部说下:
亮点一. 序列化与反序列化
亮点二. 轻量级HTTP
亮点三. SNCP协议
亮点四. DataSource
亮点五. 异步接口
其中序列化与反序列号、SNCP协议在现有的质量中心框架中没有体现, 轻量级HTTP和DataSource倒真的是亮点,免去SQL/JPQL语句的编写,与快捷的生成REST full API

目录:

  1. Redkale Demo
  2. 框架设计
  3. View 视图层
  4. 相关配置

正文:
一. Redkale Demo
demo建议参考 https://github.com/redkale 里有个 redkale-demo 里面已经把框架给搭建好了,只需要下载下来研读一番即可,这里推荐一款qaoss的IDE:NetBeans 下载地址:https://netbeans.org/

二. 框架设计
设计模式也是采用了MVC模式,采取分层的思想,主要分4层,分别是:entity、filter、service、servlet

2.1 数据库操作层(entity):主要进行与数据库进行交互,增删改查,如:

/**
 *
 * @author timen.xu
 */
@Entity
@Table(name = "app.app_platform")
public class ApplicationEntity  extends BaseEntity{
   
   
    @Id
    private int id;

    private String name;

    private String ename;

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    private long ctime;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getCtime() {
        return ctime;
    }

    public void setCtime(long ctime) {
        this.ctime = ctime;
    }  
}

2.2 数据处理层(filter):对数据进行过滤与处理,如:


                
### BO、VO、DTO 的定义与区别 #### 1. **BO (Business Object)** BO 表示业务对象,主要用于封装业务逻辑中的数据行为。它是服务层的核心组件之一,在实际开发中常用来表示某个具体的业务实体及其关联的操作方法。 - **定义**: BO 是一种面向业务的设计模式,通常包含了业务规则、状态以及与其他对象的交互逻辑[^2]。 - **使用场景**: 主要在服务层中使用,负责实现复杂的业务逻辑。例如,当用户提交订单时,`OrderBO` 可能会包含计算总价、校验库存等功能。 ```java public class OrderBO { private Long orderId; private BigDecimal totalAmount; public void calculateTotal() { // 计算总金额的业务逻辑 } } ``` --- #### 2. **VO (View Object)** VO 即视图对象,专门用于前端展示的数据传递。它的设计目标是满足前端页面的具体需求,因此可能会对原始数据进行裁剪或重组。 - **定义**: VO 是专门为前端界面定制的对象,只保留前端所需的信息[^3]。 - **使用场景**: 当需要将复杂的服务端数据简化并呈现到前端时,可以使用 VO 来适配这些需求。比如,显示用户的个人信息时,可能只需要 `name`, `age` 而不需要其他敏感信息。 ```java public class UserInfoVO { private String name; private Integer age; // Getters and Setters } ``` --- #### 3. **DTO (Data Transfer Object)** DTO 是数据传输对象,主要用于在不同层次之间(如 Controller Service 层)高效地传递数据。它是一种轻量级的对象形式,不涉及任何业务逻辑,仅作为数据载体存在。 - **定义**: DTO 是为了减少网络通信次数而设计的一种机制,能够一次性携带多个相关联的数据项[^4]。 - **使用场景**: 常见于接口调用或者跨模块间的数据交换过程中。例如,登录功能可以通过一个 `LoginDTO` 接收用户名密码参数。 ```java public class LoginDTO { private String username; private String password; // Getters and Setters } ``` --- ### 总结对比 | 名称 | 定义 | 特点 | 使用场景 | |------|------|------|----------| | BO | 业务对象 | 封装业务逻辑及相关操作 | 服务层内部处理复杂事务 | | VO | 视图对象 | 面向前端展示优化后的数据 | 数据最终呈现在界面上 | | DTO | 数据传输对象 | 承载数据而不含业务逻辑 | 各层间的高效数据传递 | --- ### 示例代码演示 假设有一个简单的购物车系统: 1. 用户通过表单提交商品购买信息 (`CartDTO`); 2. 服务层将其转化为带有业务逻辑的 `CartItemBO` 并执行下单流程; 3. 下单完成后返回给前端一个精简版的结果(`OrderResultVO`)。 ```java // DTO - 数据传输对象 public class CartDTO { private List<Long> productIds; private int quantity; // Getters & Setters } // BO - 业务对象 public class CartItemBO { private Long productId; private int quantity; private double price; public double getTotalPrice() { return this.price * this.quantity; } // Other business methods... } // VO - 视图对象 public class OrderResultVO { private boolean success; private String message; // Getters & Setters } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值