框架内的服务模型(ServiceModel)用于处理各类业务逻辑(如最简单的CRUD操作),在设计时以类似于伪代码的形式存在,发布时后端会通过Roslyn转换并编译为运行时代码。为了方便开发者作者初步实现了在线调试服务与监测服务调用性能的功能,下面分别介绍。
一、服务在线调试
1.1 实现原理
原本想参照VSCode实现调试功能,但VSCode使用的vsdbg调试器有许可限制,无法用于第三方IDE,好在GitHub上的netcoredbg项目使用MIT许可且支持VSCode的调试协议。作者画了个流程图简要说明一下调试流程:

- WebIDE定位需要调试的服务方法并设置相应的断点后启动调试(如果方法有参数则需要输入参数值);
- 服务端DebugService收到调试请求后转换并编译Debug版本的服务代码,然后启动netcoredbg子进程(需要重定向标准输入输出,netcoredbg通过标准输入输出接收调试指令并响应),初始化调试子进程后发送运行命令启动AppContainer子进程,AppContainer子进程在启动时加载已编译好的目标服务实例并注入容器内;
- 服务端DebugService在一切准备就绪后发送调用服务方法(调试目标)的请求至AppContainer子进程,开始调试过程(处理netcoredbg调试事件)。
VSCode调试协议参考:
- https://github.com/Microsoft/vscode-debugadapter-node/blob/master/debugProtocol.json
- https://github.com/Microsoft/vscode-debugadapter-node/blob/master/protoc

本文介绍了AppBoxFuture框架内服务模型的在线调试与性能监测功能。通过利用netcoredbg实现在线调试,服务端接收到调试请求后编译Debug版本代码并启动调试子进程。此外,系统内置了服务性能监测,使用Prometheus的Histogram指标监控服务调用次数与响应时间,帮助定位性能瓶颈。运维管理系统提供了服务监控面板,便于查看和优化服务模型代码。
最低0.47元/天 解锁文章
295

被折叠的 条评论
为什么被折叠?



