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