据我所知,它们做几乎相同的事情,以IoC/DI的形式提供服务。但是,IAmbientServices
具有类型 ICompositionContext
的成员。我真的不明白他们两个之间的区别,为什么他们以这种方式聚合?
简洁的答案是:ambient services
包含在构建 IoC/DI/组合容器之前注册的服务,而composition context
是 IoC/DI 的根容器,本身是注册到 ambient services
中的服务。
作为旁注,在ambient services
中注册的所有服务稍后也会在 DI 容器中自动注册,包括 IAmbientServices
,因此它们也可用于组合。
环境服务示例:
- 日志管理器:记录器的提供程序。 类型
- 加载器:从程序集加载类型。 配置
- 存储:提供主要配置设置。
作为一般经验法则,首选使用在 DI 容器中注册的服务,您将很少需要环境服务。