2010-03-24 4 views
3

Je suis auto-hébergement plusieurs services où je fais cela pour enregistrer le service:MFA intégration et de services hébergés en libre-

host = new ServiceHost(typeof(MyService)); 
host.Open(); 

Dans les coulisses, WCF instancie mon service via le constructeur par défaut.

Est-il possible d'utiliser l'installation d'intégration WCF de Castle Windsor pour que la WCF fasse appel à Windsor pour créer le service lorsque je m'occupe de moi-même?

L'exemple semble spectacles IIS services hébergés où la 1ère ligne du fichier MyService.svc ressemble:

<%@ServiceHost language=c# Debug="true" 
    Service="Microsoft.ServiceModel.Samples.CalculatorService" 
    Factory=WindsorServiceHostFactory%> 

où vraisemblablement une usine est utilisé par WCF pour instancier l'instance de service.

+0

fait , l'usine est utilisée pour instancier l'instance du 'ServiceHost'. Cet hôte créera alors les instances de classe de service nécessaires pour gérer les demandes entrantes –

Répondre

0

Avec Château 3.0, la façon de le faire est la suivante:

// setup IoC, including registering the WcfFacility from Castle.WcfIntegrationFacility 
container.AddFacility<WcfFacility>(); 
// and all other registrations you need 

Et puis, en supposant que vous avez les détails nécessaires dans votre app.config ou sont très bien avec les paramètres par défaut:

// T is an interface with a backing service implementation registered in your IoC 
public static ServiceHostBase StartHostService<T>(string serviceUrl) 
{ 
    var assemblyQualifiedName = typeof(T).AssemblyQualifiedName; 
    var serviceHost = new DefaultServiceHostFactory() 
     .CreateServiceHost(assemblyQualifiedName, new[] { new Uri(serviceUrl) }); 
    serviceHost.Open(); 

    return serviceHost; 
} 
Questions connexes