NetCore之Serslot
创建时间 2020-01-28 12:00 修改时间 2020-01-28 14:21
1.服务站点的生命周期
介绍Serslot之前,我们先了解一下服务站点的生命周期。
1.1 服务站点启动时
- 先使用api加载器(ApiLoader)查找本地提供的api,打包成api接口描述数据(SsApiDesc,json格式)
- 通讯层(CL,CommunicationLayer)连接服务中心,连接成功后,调用服务注册接口(/sys/serviceStation/regist)向服务中心注册本地api。
1.2 服务运行中
- 服务中心收到api调用请求,查找提供此api的服务站点(若查找到多个,则负载均衡,获取其中一个),通过通讯层向服务站点发送api请求。
- 服务站点收到api请求后进行处理,返回处理结果。
1.3 服务站点结束时
- 服务中心检测到服务站点结束时,关闭站点提供的api服务。
2.Serslot的使命
现在我们想把net core web api接入服务中心,要怎么做呢?我们把这中间的服务注册、服务转发等工作全部交给Serslot完成,Serslot就是适配服务中心和net core web api的服务适配器。
从上篇文档中我们知道把net core web api接入服务中心只需一行c#代码,而这行代码完成了Serslot所有的工作。
// Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerslot() //----添加代码2
.UseStartup<Startup>();
那么这行代码究竟做了什么呢?
3.Serslot的具体职责
第一段介绍了服务站点的生命周期,那么Serslot在这中间能做什么呢?
3.1 服务站点启动时
- 首先,Serslot使用api加载器(ApiLoader)查找本地提供的Api(查找项目入口dll中所有ControllerBase的子类)
- 打包成api接口描述数据(SsApiDesc,json格式)
- 向服务中心注册本地api。
3.2 服务运行中
Serslot在收到api请求后
- 把api请求包装成http请求格式
- 转发到HttpApplication,让HttpApplication处理
- 接受HttpApplication处理后的http结果
- 再通过通讯层(CL,CommunicationLayer)返回结果数据给服务中心