Exporter (0) Imprimer
Développer tout

Création Configurer Service Bus Service par programme

Mis à jour: juin 2014

Une fois que vous avez défini et implémenté votre l'interface du service Service Bus dans votre code, vous pouvez commencer à configurer votre application. Notez que la configuration d'une application Service Bus est très semblable à la configuration d'une application Windows Communication Foundation (WCF), comme décrit dans Configuring Services dans la documentation WCF. Par conséquent, cette rubrique contient une procédure simplifiée permettant de configurer une application Service Bus ainsi qu'une analyse de la configuration propre à Service Bus.

Outre les questions abordées dans Configuration d'un service WCF pour s'inscrire auprès de Service Bus, un service Service Bus doit déterminer le type requis de l'authentification et de la sécurité du transport, le cas échéant. La sécurité d'authentification est le type de sécurité nécessaire pour que le service se connecte à Service Bus. Un service doit toujours présenter les informations d'identification de l'authentification à Service Bus, généralement sous la forme d'un jeton de secret partagé (c'est-à-dire le nom de l'émetteur et le secret). Cependant, le service détermine également le type d'informations d'identification de l'authentification que les applications clientes doivent utiliser afin de se connecter au service. Par défaut, l'authentification du client est définie sur RelayClientAuthenticationType.RelayAccessToken, ce qui implique que le client doit présenter une certaine forme d'authentification à Service Bus. Dans la version actuelle de Service Bus, il s'agit toujours d'un autre jeton de secret partagé. En revanche, la sécurité du transport détermine s'il doit se connecter avec une certaine forme de ligne sécurisée. Cela s'appelle la sécurité « de bout en bout », car elle couvre l'ensemble de la connexion entre le service, Service Bus et le client. À l'inverse, l'authentification du client couvre uniquement la relation requise pour se connecter du service à Service Bus. Par défaut, la sécurité du transport est définie sur EndToEndSecurityMode.Transport. Cela signifie que la sécurité est fournie à l'aide d'une certaine forme de transport sécurisé, tel que HTTPS. Il est conseillé de garder le mode de sécurité de bout en bout défini sur Transport sauf si vous avez une bonne raison de le modifier, car ce changement peut réduire le niveau de sécurité de votre application. Pour plus d'informations sur les paramètres de sécurité, consultez Sécurisation et authentification d'une connexion Service Bus.

La procédure suivante explique comment configurer un service Service Bus par programme.

  1. Créer l'URI du point de terminaison qui inclut le nom de votre espace de noms de service et le type de schéma.

    string serviceNamespace = "myServiceNamespace";
    Uri uri = ServiceBusEnvironemnt.CreateServiceUri("sb", serviceNamespace, "sample/log/";
    
    

    Le préfixe « sb » indique que cet URI utilise le schéma Service Bus. Les autres schémas incluent HTTP ou HTTPS.

  2. Instanciez l'hôte avec le contrat et l'URI.

    host = new ServiceHost(typeof(EchoService), uri);
    
  3. Déclarez et implémentez le type d'informations d'identification d'authentification à utiliser.

    string issuerName = "MY ISSUER NAME"
    string issuerSecret = "MY SECRET";
    TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();
    sharedSecretServiceBusCredential.CredentialType = TransportClientCredentialType.SharedSecret;
    sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerName = issuerName;
    sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerSecret = issuerSecret;
    

    Tous les services doivent utiliser des informations d'identification d'authentification pour se connecter à Service Bus. Notez que le codage en dur du nom de l'émetteur et du secret dans votre code n'est pas une pratique sécurisée. Par exemple, un grand nombre des Exemples de Service Bus demandent ces informations à l'utilisateur.

  4. Déclarez le type et l'instance du contrat.

    ContractDescription contractDescription = ContractDescription.GetContract(typeof(IEchoContract), typeof(EchoService));
    
  5. Ajoutez la description du contrat au point de terminaison du service.

    ServiceEndpoint serviceEndPoint = new ServiceEndpoint(contractDescription);
    
  6. Ajoutez l'URI au point de terminaison du service.

    serviceEndPoint.Address = new EndpointAddress(uri);
    
  7. Déclarez le type de liaison à utiliser pour le point de terminaison.

    serviceEndPoint.Binding = new NetTcpRelayBinding();
    

    À ce stade, vous avez déclaré le mode Authentication et EndToEndSecurity. Cet exemple particulier utilise le constructeur par défaut, qui définit le EndToEndSecurityMode sur Transport et le RelayClientAuthenticationType sur RelayAccessToken. Par conséquent, l'extrait suivant est identique au constructeur par défaut, sauf qu'il définit ces deux paramètres explicitement :

    serviceEndPoint.Binding = new NetTcpRelayBinding(EndToEndSecurityMode.Transport, RelayClientAuthenticationType.RelayAccessToken);
    
  8. Ajoutez les informations d'identification au point de terminaison.

    serviceEndpoint.Behaviors.Add(sharedSecretServiceBusCredential);
    

    Ces informations d'identification de sécurité sont requises pour que l'ensemble des services s'authentifie auprès de Service Bus. Comme nous définissons le RelayClientAuthenticationType sur RelayAccessToken (par défaut ou explicitement), les applications clientes doivent également utiliser le même type d'informations d'identification d'authentification.

  9. Ajoutez le point de terminaison à l'hôte.

    host.Description.Endpoints.Add(serviceEndPoint);
    

    Vous avez maintenant créé la configuration minimale nécessaire à une application de service Service Bus. À ce stade, vous pouvez ajouter d'autres configurations au niveau du service ou du point de terminaison, comme vous le feriez avec toute autre application WCF. Pour plus d'informations sur la configuration d'une application WCF, consultez Configuring Services dans la documentation WCF. Après avoir terminé la configuration de votre application, vous pouvez héberger et exécuter votre application. Pour plus d'informations, consultez Génération d'un service pour Service Bus.

Exemple

L'exemple suivant montre comment définir des informations de configuration par programme. La principale différence est que toutes les informations sont définies par programme ; dans le didacticiel, certaines informations qui ne sont pas spécifiques à Service Bus sont stockées dans un fichier App.config.


namespace AzureSample_WorkerRole
{
    public class WorkerRole : RoleEntryPoint
    {
        private ServiceHost host;

        public override void Start()
        {
            string serviceNamespace = "myDomainName";
            string issuerName = "MY ISSUER NAME"
            string issuerSecret = "MY SECRET";

            Uri uri = ServiceBusEnvironemnt.CreateServiceUri("sb", serviceNamespace, "sample/log/";
            
            host = new ServiceHost(typeof(EchoService), uri);

            TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();
            sharedSecretServiceBusCredential.CredentialType = TransportClientCredentialType.SharedSecret;
            sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerName = issuerName;
            sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerSecret = issuerSecret;

            ContractDescription contractDescription = ContractDescription.GetContract(typeof(IEchoContract), typeof(EchoService));

            ServiceEndpoint serviceEndPoint = new ServiceEndpoint(contractDescription);
            serviceEndPoint.Address = new EndpointAddress(uri);
            
            serviceEndPoint.Binding = new NetTcpRelayBinding();
            
           serviceEndpoint.Behaviors.Add(sharedSecretServiceBusCredential);
            host.Description.Endpoints.Add(serviceEndPoint);

            host.Open();

            while (true)
            {
                //Loop
            }
        }

        public override void Stop()
        {
            host.Close();
            base.Stop();
        }

        public override RoleStatus GetHealthStatus()
        {
            // This is a sample worker implementation. Replace with your logic.
            return RoleStatus.Healthy;
        }
    }
}

Afficher:
© 2014 Microsoft