Контейнер IOC - Служба WCF - Должен ли я создавать экземпляры всех зависимостей через конструктор?

У меня есть служба WCF, у которой несколько разных обязанностей, но она предоставляет одну точку входа для всех, кто взаимодействует с моим кодом. Для простоты предположим, что существует 2 метода

    private IMethodAHelper _methodA;
    private IMethodBHelper _methodB;

    public MyService(IMethodAHelper methodA, IMethodBHelper methodB)
    {
      _methodA = methodA;
      _methodB = methodB;
    }

    public void MethodA() {
       _methodA.CallThis();
    }

    public void MethodB() {
       _methodB.CallThis();
    }

Поскольку потребители будут вызывать службу только по одной причине, MethodA или MethodB, является ли проблема, что контейнер IOC будет без нужды раскручивать все зависимости? Я хочу предоставить единую точку входа, поэтому я не хочу разделять службу, но кажется немного расточительным наращивать все зависимости, когда каждому потребителю сервиса понадобится только подмножество.

Другой способ, которым я думал сделать это, был бы что-то вроде

    public void MethodA() {
       var methodA = ObjectFactory.GetInstance<IMethodAHelper>();
       methodA.CallThis();
    }

Это позволяет каждому «пути» вызывать нужные ему зависимости, однако это значительно усложняет написание модульных тестов. У кого-нибудь есть предложения? Насколько серьезной проблемой является наращивание всех зависимостей? После этой первой точки входа в службу будет иметь смысл внедрить зависимости через конструктор, но каков рекомендуемый подход в этой первой точке входа?

5
задан Kevin 4 May 2011 в 12:56
поделиться