Kephas 中的 AmbientServices 和 CompositionContext 有什么区别?
What is the difference between AmbientServices and CompositionContext in Kephas?
据我观察,他们做的事情几乎相同,以 IoC/DI 的形式提供服务。但是,IAmbientServices
有一个类型为 ICompositionContext
的成员。我真的不明白它们两者之间的区别,为什么它们以这种方式聚合?
简洁的答案是:ambient services
包含在 构建 IoC/DI/composition 容器之前 注册的服务,而 composition context
是根IoC/DI 的容器,它本身是一个注册到 ambient services
.
的服务
附带说明一下,在 ambient services
中注册的所有服务稍后也会在 DI 容器中自动注册,包括 IAmbientServices
,因此它们也可用于组合。
环境服务示例:
- 日志管理器:记录器的提供者。
- type loader: 从程序集中加载类型。
- 配置存储:提供主要配置设置。
根据一般经验,更喜欢使用在 DI 容器中注册的服务,您很少需要环境服务。
据我观察,他们做的事情几乎相同,以 IoC/DI 的形式提供服务。但是,IAmbientServices
有一个类型为 ICompositionContext
的成员。我真的不明白它们两者之间的区别,为什么它们以这种方式聚合?
简洁的答案是:ambient services
包含在 构建 IoC/DI/composition 容器之前 注册的服务,而 composition context
是根IoC/DI 的容器,它本身是一个注册到 ambient services
.
附带说明一下,在 ambient services
中注册的所有服务稍后也会在 DI 容器中自动注册,包括 IAmbientServices
,因此它们也可用于组合。
环境服务示例:
- 日志管理器:记录器的提供者。
- type loader: 从程序集中加载类型。
- 配置存储:提供主要配置设置。
根据一般经验,更喜欢使用在 DI 容器中注册的服务,您很少需要环境服务。