vRp.CD2g_test/modular
kercylan98 40acb567a7 docs: 完善 README.md 2024-02-05 12:11:11 +08:00
..
example docs: 完善 README.md 2024-02-05 12:11:11 +08:00
README.md docs: 完善 README.md 2024-02-05 12:11:11 +08:00
block.go feat: modular 包新增 Block 接口,当模块化服务实现 modular.Service 后可选择的实现 Block 接口,该接口将适用于具有阻塞等待需求的服务,例如网络服务器。 2024-02-05 12:06:17 +08:00
modular.go feat: modular 包新增 Block 接口,当模块化服务实现 modular.Service 后可选择的实现 Block 接口,该接口将适用于具有阻塞等待需求的服务,例如网络服务器。 2024-02-05 12:06:17 +08:00
service.go fix: 移除 modular 包的自动注入,优化 modular.Service 接口说明 2024-01-31 12:09:20 +08:00

README.md

Modular

Go doc

暂无介绍...

目录导航

列出了该 package 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️

展开 / 折叠目录导航

包级函数定义

函数名称 描述
Run 运行模块化应用程序
RegisterServices 注册服务

类型定义

类型 名称 描述
INTERFACE Block 标识模块化服务为阻塞进程的服务,当实现了 Service 且实现了 Block 接口时,模块化应用程序会在 Service.OnMount 阶段完成后执行 OnBlock 函数
INTERFACE Service 模块化服务接口,所有的服务均需要实现该接口,在服务的生命周期内发生任何错误均应通过 panic 阻止服务继续运行

详情信息

func Run()

运行模块化应用程序


func RegisterServices(s ...Service)

注册服务


Block INTERFACE

标识模块化服务为阻塞进程的服务,当实现了 Service 且实现了 Block 接口时,模块化应用程序会在 Service.OnMount 阶段完成后执行 OnBlock 函数

该接口适用于 Http 服务、WebSocket 服务等需要阻塞进程的服务。需要注意的是, OnBlock 的执行不能保证按照 Service 的注册顺序执行

type Block interface {
	Service
	OnBlock()
}

Service INTERFACE

模块化服务接口,所有的服务均需要实现该接口,在服务的生命周期内发生任何错误均应通过 panic 阻止服务继续运行

  • 生命周期示例: OnInit -> OnPreload -> OnMount

在 Golang 中,包与包之间互相引用会导致循环依赖,因此在模块化应用程序中,所有的服务均不应该直接引用其他服务。

服务应该在 OnInit 阶段将不依赖其他服务的内容初始化完成,并且如果服务需要暴露给其他服务调用,那么也应该在 OnInit 阶段完成对外暴露。

  • 暴露方式可参考 modular/example

在 OnPreload 阶段,服务应该完成对其依赖服务的依赖注入,最终在 OnMount 阶段完成对服务功能的定义、路由的声明等。

type Service interface {
	OnInit()
	OnPreload()
	OnMount()
}