Zinx
  • Zinx--Golang轻量级并发服务器框架
  • 一、引言
    • 1、写在前面
    • 2、初探Zinx架构
  • 二、初识Zinx框架
    • 1. Zinx-V0.1-基础Server
    • 2.Zinx-V0.2-简单的连接封装与业务绑定
  • 三、Zinx框架基础路由模块
    • 3.1 IRequest 消息请求抽象类
    • 3.2 IRouter 路由配置抽象类
    • 3.3 Zinx-V0.3-集成简单路由功能
    • 3.4 Zinx-V0.3代码实现
    • 3.5 使用Zinx-V0.3完成应用程序
  • 四、Zinx的全局配置
    • 4.1 Zinx-V0.4增添全局配置代码实现
    • 4.2 使用Zinx-V0.4完成应用程序
  • 五、Zinx的消息封装
    • 5.1 创建消息封装类型
    • 5.2 消息的封包与拆包
    • 5.3 Zinx-V0.5代码实现
    • 5.4 使用Zinx-V0.5完成应用程序
  • 六、Zinx的多路由模式
    • 6.1 创建消息管理模块
    • 6.2 Zinx-V0.6代码实现
    • 6.3 使用Zinx-V0.6完成应用程序
Powered by GitBook
On this page
  • A) 创建抽象的IRouter层
  • B) 实现Router类

Was this helpful?

  1. 三、Zinx框架基础路由模块

3.2 IRouter 路由配置抽象类

现在我们来给Zinx实现一个非常简单基础的路由功能,目的当然就是为了快速的让Zinx步入到路由的阶段。后续我们会不断的完善路由功能。

A) 创建抽象的IRouter层

在ziface下创建irouter.go文件

zinx/ziface/irouter.go

package ziface

/*
    路由接口, 这里面路由是 使用框架者给该链接自定的 处理业务方法
    路由里的IRequest 则包含用该链接的链接信息和该链接的请求数据信息
*/
type IRouter interface{
    PreHandle(request IRequest)  //在处理conn业务之前的钩子方法
    Handle(request IRequest)     //处理conn业务的方法
    PostHandle(request IRequest) //处理conn业务之后的钩子方法
}

我们知道router实际上的作用就是,服务端应用可以给Zinx框架配置当前链接的处理业务方法,之前的Zinx-V0.2我们的Zinx框架处理链接请求的方法是固定的,现在是可以自定义,并且有3种接口可以重写。

Handle:是处理当前链接的主业务函数

PreHandle:如果需要在主业务函数之前有前置业务,可以重写这个方法

PostHandle:如果需要在主业务函数之后又后置业务,可以重写这个方法

当然每个方法都有一个唯一的形参IRequest对象,也就是客户端请求过来的连接和请求数据,作为我们业务方法的输入数据。

B) 实现Router类

在znet下创建router.go文件

package znet

import "zinx/ziface"

//实现router时,先嵌入这个基类,然后根据需要对这个基类的方法进行重写
type BaseRouter struct {}

//这里之所以BaseRouter的方法都为空,
// 是因为有的Router不希望有PreHandle或PostHandle
// 所以Router全部继承BaseRouter的好处是,不需要实现PreHandle和PostHandle也可以实例化
func (br *BaseRouter)PreHandle(req ziface.IRequest){}
func (br *BaseRouter)Handle(req ziface.IRequest){}
func (br *BaseRouter)PostHandle(req ziface.IRequest){}

我们当前的Zinx目录结构应该如下:

.
├── README.md
├── ziface
│   ├── iconnnection.go
│   ├── irequest.go
│   ├── irouter.go
│   └── iserver.go
└── znet
    ├── connection.go
    ├── request.go
    ├── router.go
    ├── server.go
    └── server_test.go
Previous3.1 IRequest 消息请求抽象类Next3.3 Zinx-V0.3-集成简单路由功能

Last updated 6 years ago

Was this helpful?