通用主机
使用通用主机构建辅助服务,意味着您无需从零开始编写服务框架,可以直接获得一个企业级应用程序所需的所有功能:包括开箱即用的依赖注入、统一的配置管理、强大的日志记录系统,以及标准的服务生命周期管理。这使开发者能够专注于实现业务逻辑,而无需重复构建底层基础设施,显著提升了后台任务和微服务的开发效率与可维护性。
快速启动
cangjie
import spire_extensions_hosting.*
main(args: Array<String>) {
let builder = Host.createBuilder(args)
let host = builder.build()
host.run()
return 0
}运行结果
bash
info: spire.hosting.lifetime
Hosting environment: Development
info: spire.hosting.lifetime
Content root path: /app
info: spire.hosting.lifetime
Application started. Press Ctrl+C to shut down.上面的代码会帮我们构建一个默认主机并且运行主机。主机合了依赖注入,配置,日志,选项,环境等等。
- 配置:命令行参数,appsettings.{environmentName}.json,appsettings.json,环境变量(前缀spire_)(按优先级从高到低排序)。
- 日志:控制台日志,并且整合了配置,可以通过appsettings.json文件来过滤日志。
- 选项:主机启动时,会解析
IStartupValidator并执行验证。 - 环境:主机通过读取名为
environment的配置来设置环境名。
后台服务
通用主机在启动时可以运行后台服务,用于执行后台任务。
cangjie
import spire_extensions_hosting.*
import spire_extensions_injection.*
main(args: Array<String>) {
let builder = Host.createBuilder(args)
builder.services.addHostedService<HelloHostedService>()
let host = builder.build()
host.run()
return 0
}
public class HelloHostedService <: BackgroundService {
public func run(): Unit {
while (true) {
sleep(Duration.second)
println("hello")
}
}
}内置服务
通用主机为我们内置了一些服务并注入到容器,具体如下:
| 接口 | 用途 |
|---|---|
ILoggerFactory | 用于创建和配置 ILogger 实例,管理日志记录器的生命周期和日志提供程序(如 Console、File 等)。 |
IConfiguration | 提供对应用程序配置(如 appsettings.json、环境变量、命令行参数等)的键值对访问和读取功能。 |
IHostEnvironment | 提供当前宿主环境的信息(如 ApplicationName、EnvironmentName、ContentRootPath 等)。 |
IHostEnvironment | 提供当前宿主环境的信息(如 ApplicationName、EnvironmentName、ContentRootPath 等)。 |
IHostLifetime | 用户可以替换默认实现,通过订阅宿主环境信号来停止应用。 |
IHostApplicationLifetime | 提供当前主机生命周期事件注册)。 |