У меня есть служба 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();
}
Это позволяет каждому «пути» вызывать нужные ему зависимости, однако это значительно усложняет написание модульных тестов. У кого-нибудь есть предложения? Насколько серьезной проблемой является наращивание всех зависимостей? После этой первой точки входа в службу будет иметь смысл внедрить зависимости через конструктор, но каков рекомендуемый подход в этой первой точке входа?