richtig einen Dienst in WCF-Dienst und anderen Diensten zu injizieren Wenn zwei wie folgt definiert WCF-Dienste sind:Wie durch die Verwendung SimpleInjector
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class WcfService1: IWcfService1
{
private IService1 _service1;
public WcfService(IService1 service1){
_service1 = service1;
}
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class WcfService2: IWcfService2
{
private IService2 _service2;
public WcfService(IService2 service2){
_service2 = service2;
}
}
und wenn die Service2 in Service1 injiziert wird, welches der beste Weg ist, um Service2 mit SimpleInjector registrieren?
ähnliche
container.RegisterPerWcfOperation<IService1, Service1>();
container.RegisterPerWcfOperation<IService2, Service2>();
oder ähnliche
container.RegisterPerWcfOperation<IService1, Service1>();
container.Register<IService2, Service2>(Lifestyle.Scoped);
Der Behälter wie folgt konfiguriert ist:
container.Options.DefaultScopedLifestyle = new WcfOperationLifestyle();
Die Antwort hängt vollständig davon ab, was Sie brauchen. Benötigen Sie für die Dauer einer einzelnen Anfrage genau eine Instanz von Service2? – Steven
Wenn ich einen WcfService1-Endpunkt anfordere, benötige ich eine Instanz von Service2, die nach dem Aufruf zerstört werden sollte. Wenn ich einen WcfService2-Endpunkt anfordere, benötige ich auch eine Instanz von Service2, die nach diesem Aufruf ebenfalls zerstört werden sollte. – kord
Sie können sie sogar als Transient (der Standard-Lebensstil) registrieren. – Steven