modular

package
v0.5.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: MIT Imports: 4 Imported by: 0

README

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()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterService added in v0.5.5

func RegisterService[S Service](service S) S

RegisterService 注册服务

func RegisterServices

func RegisterServices(s ...Service)

RegisterServices 注册服务

func Run

func Run()

Run 运行模块化应用程序

func RunDimensions added in v0.5.4

func RunDimensions[Owner any](owner Owner, dimensions ...Dimension[Owner]) error

RunDimensions 运行维度

Types

type Block added in v0.5.4

type Block interface {
	Service
	// OnBlock 阻塞进程
	OnBlock()
}

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

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

type Dimension added in v0.5.4

type Dimension[Owner any] interface {
	// OnInit 服务初始化阶段,该阶段不应该依赖其他任何服务
	OnInit(owner Owner) error

	// OnPreload 预加载阶段,在进入该阶段时,所有服务已经初始化完成,可在该阶段注入其他服务的依赖
	OnPreload() error

	// OnMount 挂载阶段,该阶段所有服务本身及依赖的服务都已经初始化完成,可在该阶段进行服务功能的定义
	OnMount() error
}

Dimension 维度接口

  • 维度与服务的区别在于,维度是对非全局性的服务进行抽象,例如:依赖特定游戏房间的局内玩家管理服务

type Service

type Service interface {
	// OnInit 服务初始化阶段,该阶段不应该依赖其他任何服务
	OnInit()

	// OnPreload 预加载阶段,在进入该阶段时,所有服务已经初始化完成,可在该阶段注入其他服务的依赖
	OnPreload()

	// OnMount 挂载阶段,该阶段所有服务本身及依赖的服务都已经初始化完成,可在该阶段进行服务功能的定义
	OnMount()
}

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

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

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

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

  • 暴露方式可参考 modular/example

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL