• >
主页 > 2018香港王中王挂牌图134期 >
2018香港王中王挂牌图134期
Core 30之深入源码理解Host(二)
发布日期:2019-11-05 07:33   来源:未知   阅读:

  停了近一个月的技术博客,随着正式脱离996的魔窟,管l家婆今期玄机图www.08977d.com,接下来也正式恢复了。本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要内容是关于创建Long Run Program的创建与守护。

  关于Host,我们最容易想到的就是程序的启动与停止,而其中隐藏着非常关键的功能,就是Host的初始化,我们所需要的所有资源都必须而且应该在程序启动过程中初始化完成,当然本文的主要内容并不是Host初始化。当然,为了更好的守护与管理已经启动的Host,.NET Core 3.0将程序的生命周期事件的订阅开放给开发者,当然也包括自定义的Host Service对象。

  该接口含有一个只读属性:IServiceProvider Services { get; },通过该属性,我们可以拿到所有Host初始化时所注入的对象信息。

  IHostBuilder接口所承担的核心功能就是程序的初始化,通过:IHost Build来完成,当然只需要运行一次即可。其初始化内容一般包括以下几个功能:

  另外需要说明的是,以上功能的初始化,是通过IHostBuilder提供的接口获取用户输入的信息后,通过调用Build方法来完成初始化。以下为IHostBuilder的部分源代码:

  根据源码我们可以知道,该接口只有两个方法,即代码程序开始与停止的方法。具体的实现可以参考如下:

  IHostService是我们自定义Host管理对象的入口,所有需要压入到Host托管的对象都必须要实现此接口。

  该接口提供了一种我们可以在程序运行期间进行管理的功能,如程序的启动与停止事件的订阅,关于Host生命周期的管理,主要由IHostApplicationLifetime和IHostLifetime这两个接口来完成。

  至此,我们知道了创建Long Run Program所需要关注的几个点,分别是继承IHostService、订阅程序的生命周期时间以及Host的初始化过程。相对来说这段内容还是比较简单的,但是开发过程中,依然会遇到很多的问题,比如任务的定时机制、MQ的接入、以及程序的性能优化等等,这些都需要我们在实践中进一步总结完善。返回搜狐,查看更多