代码之家  ›  专栏  ›  技术社区  ›  Matthias Güntert

在Autofac的背景下:服务和组件之间有什么区别?

  •  0
  • Matthias Güntert  · 技术社区  · 4 年前

    a和a之间到底有什么区别 Service 以及a Component ?扩展方法是如何实现的 RegisterComponent() 与这些定义相关?

    Autofac的术语表对其定义如下:

    组件

    一个代码体,声明它提供的服务和 它消耗的依赖关系

    售后服务

    供应商和供应商之间共享的明确行为契约 消耗组件

    这让我很困惑。说一个组件是正确的吗 使用 几个服务?像下面的例子?

    public interface IServiceA
    {
        void DoSomething();
    }
    
    public ServiceA : IServiceA
    {
        void DoSomething()
        {
            // Do some magic 
        }
    }
    
    public class ComponentA
    {
        private readonly IServiceA serviceA;
    
        public ComponentA(IServiceA serviceA)
        {
            this.serviceA = serviceA;
        }
    
        public void SomeOperation()
        {
            this.serviceA.DoSomething();
        }
    }
    

    或者,组件总是服务/接口的实现吗?我就是不明白。

    如果有人能举个吸引人的例子来澄清,我将不胜感激。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Cyril Durand    4 年前

    A. Component 在解析过程之后,它将成为一段具体的代码。

    A. 组件 由一个或多个服务描述。即: 组件 ServiceA

    A. Service 用于描述 组件 并将用于定义组件之间的关系。即: ComponentA 需要 serviceB serviceC .

    在以下代码中

    builder.RegisterType<XXX>()
           .As<IA>()
           .Named<IB>("X"); 
    

    XXX 将是 组件 由类型化服务和命名服务描述。