V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  assiadamo  ›  全部回复第 2 页 / 共 26 页
回复总数  517
1  2  3  4  5  6  7  8  9  10 ... 26  
20 天前
回复了 importmeta 创建的主题 程序员 后端程序员更喜欢哪个前端框架?
jquery
@NessajCN 兜兜转转还是用了上面说的生成个 handles.go 的方法,目前能跑通
```
package proto
type Echo struct {
BaseMsg
Msg string
}
func (msg *Echo) Decode(src *bytes.Buffer) error {}
func (msg *Echo) Encode(dst *bytes.Buffer) error {}
func (echo *Echo) Process() error {
return MsgProcessor[echo.GetHeader().TypeId](echo)
}
```
外部代码生成个放所有业务逻辑入口的 map
```
type MsgProcessorFunc[T Msg] func(msg T) error

var MsgProcessor = map[int32]MsgProcessorFunc[Msg]{}
MsgProcessor[1] = func(msg io.Msg) error { return echo.ProcessEcho(msg.(*proto.Echo)) }
```
在 echo.ProcessEcho 中写实际业务,协议和业务分开
痛苦
@NessajCN 这样和我的需求反过来了...变成了协议的 package 里写业务逻辑,业务的 package 生成后不动了....
@povsister 因为以前用过这样的框架,觉得用起来非常爽,现在也算是体验到了框架开发者的心情
@NessajCN 我理解一下,如果有代码例子就更好了
@povsister 我预想的使用方式是开发者定义好协议,这个协议可能带 package 信息,然后 go generate ,所有的模板都生成好了,开发者只需要打开一个生成的 go 文件写业务代码就行
@povsister 我理解 register 需要开发者自己做,就兴趣缺缺
@NessajCN 不是一个
Echo 协议类生成的时候,会伴随着在业务项目中生成一个
```
func Process 协议名(协议){}
```
这样其实当协议收取的时候,框架就应该知道对应的处理函数是什么,信息完全是足够的,但需要一个方法让协议内部的 Process 方法和业务对应协议 Prosess 方法联动起来,我想这一步让框架自己处理,而不是手动的去配置联动关系
@NessajCN Java 有注解和字节码替换,可以批量的处理一系列相同定义的东西,但 Go 如果没有相关的魔法,就要手动的注册函数,比如经典的 HandleFunc(path, func(){}),这样在玩具中,或者接口比较少的项目中可以手动,但如果有几百上千种协议定义呢?
当然可以借用代码生成,比如再生成一个 handle.go ,我想省去这个文件
@to2false Go 的 interface 不能放成员变量就很可惜,比如协议内数据定义,Decode/Encode 相关的代码都不想出现在业务层,要想用 interface 就要再搞个 BaseEcho 之类的组合,还是觉得有点丑
@NessajCN 这就是想要做到的魔法
@NessajCN 框架想做到不接触业务层,直接调用协议的`msg.Process()`就能执行业务逻辑,否则还要手动将业务层的各种协议处理函数注册一下
@zjsxwc 有点天才,可以一试
@NessajCN 因为不要去 proto 包下生成的协议类中写业务逻辑,想把两边的编码隔离开
一张表存无压力,过几年再看
自己的小东西,服务器配置又小,可以试试 go ,相同的业务可以省很多内存
@aa514758835 这个比电还贵
30 天前
回复了 assiadamo 创建的主题 生活 潮男们推荐点衣服?
@oppoic 有点猛男
30 天前
回复了 assiadamo 创建的主题 生活 潮男们推荐点衣服?
@zjsxwc 看成了骑手套装,这么一想小蓝衣小黄衣还挺耐看的
30 天前
回复了 assiadamo 创建的主题 生活 潮男们推荐点衣服?
@wweerrgtc 羽绒服就是这样的
1  2  3  4  5  6  7  8  9  10 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5755 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
Developed with CodeLauncher
♥ Do have faith in what you're doing.