В контексте Autofa c: в чем разница между Сервисом и Компонентом? - PullRequest
1 голос
/ 29 марта 2020

Какая разница между Service и Component? И как метод расширения RegisterComponent() относится к этим определениям?

Глоссарий Autofa c определяет его следующим образом:

Компонент

Текст кода, который объявляет Услуги, которые он предоставляет и зависимостей, которые он потребляет

Сервис

Четко определенный поведенческий контракт, разделенный между поставщиком и потребляющим Компонентом

Это смущает меня .. Правильно ли будет сказать, что компонент использует несколько сервисов? Что-то вроде приведенного ниже примера?

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();
    }
}

Или компонент всегда является реализацией службы / интерфейса? Я просто не понимаю

Я был бы благодарен, если бы кто-нибудь мог прояснить на уловимом примере.

1 Ответ

1 голос
/ 29 марта 2020

A Component - это то, что будет конкретным фрагментом кода после процесса разрешения.

A Component описывается одной или несколькими службами. ie: Component is ServiceA

A Service используется для описания Component и будет использоваться для определения отношения между компонентом. ie: ComponentA нужно serviceB и serviceC.

В следующем коде

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

XXX будет Component, описанным типизированной службой и именованной службой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...