Héberger un web service WCF sur un worker role

by Emmanuel.PITEAU 2. October 2011 15:00

Il se peut que l’on soit amené pour diverse raisons à héberger un service web sur un Worker Role.

Pour ce faire, il faut créer une interface (nommée « IService » pour l’exemple) qui va définir l’ensemble des méthodes que le service WCF doit exposer.

Créer ensuite une classe (nommée « ServiceImplementation » pour l’exemple) qui implémente cette interface.

Pour exposer les méthode en http, il ne reste plus qu’à configurer un EndPoint dans la méthode OnStart() du worker Role comme suit :

public override bool OnStart()
{
    ...
    // Récupération du Endpoint configuré dans le « ServiceDefinition.csdef »
    RoleInstanceEndpoint externalEndPoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WCFEndpoint"];
    // Formatage de l’URL du service WCF
    string endpoint = String.Format("http://{0}/service.asmx", externalEndPoint.IPEndpoint);

    // Configuration du EndPoint            
    serviceHost = new ServiceHost(typeof(ServiceImplementation), new Uri[] { new Uri(endpoint) });
    serviceHost.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });
    serviceHost.AddServiceEndpoint(typeof(IService), new BasicHttpBinding(BasicHttpSecurityMode.None), "");


    // Ajout de la publication des meta-donnée
    var useHeaderForMeta = new UseRequestHeadersForMetadataAddressBehavior();
    useHeaderForMeta.DefaultPortsByScheme.Add("http", externalEndPoint.IPEndpoint.Port);
    serviceHost.Description.Behaviors.Add(useHeaderForMeta);
    serviceHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");


    // Ouverture du service
    serviceHost.Open();
    ...
}

Tags: , ,

Azure

A propos de DCube

DCube est une société de services spécialisée dans les plateformes Microsoft.

Microsoft Gold Certified Partner depuis 2007, nous comptons une trentaine de collaborateurs certifiés ayant à cœur de mettre leur passion pour la technologie au service de leurs clients.

Visitez notre site : www.d-cube.fr