Écrire une application d'écouteur pour une solution Microsoft Azure

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Cette rubrique décrit comment écrire une solution d'application d'écouteur Microsoft Azure qui peut lire et traiter des messages Microsoft Dynamics 365 qui sont publiés sur Microsoft Azure Service Bus. Pour commencer, vous devez vous familiariser avec la manière d’écrire un écouteur Microsoft Azure Service Bus avant d’essayer de découvrir les spécificités d’un écouteur Microsoft Dynamics 365. Pour plus d’informations, voir Documentation Azure Service Bus.

Contenu de la rubrique

Écrire un écouteur de file d’attente

Écrire un écouteur unidirectionnel, bidirectionnel ou REST

Filtrer les messages

Lisez le contexte de données dans plusieurs formats de données

Écrire un écouteur de file d’attente

Une file d’attente messages est un référentiel de messages reçu au point de terminaison de service bus. Un écouteur de file d’attente est une application qui lit et traite les messages mis en file d’attente. Comme les messages de bus des services sont stockés dans une file d’attente, un écouteur n’a pas besoin d’effectuer une écoute active pour que les messages soient reçus dans la file d’attente. Un écouteur de file d’attente peut être démarré une fois que les messages sont arrivés dans la file d’attente en vue de les traiter. D’autres types d’écouteurs décrits dans la section suivante doivent écouter activement ou ils manqueront l’opportunité de lire un message. Ces messages peuvent provenir de Microsoft Dynamics 365 ou d’une autre source. .

Important

Pour écrire un écouteur de file d’attente, vérifiez chaque action d’en-tête de message pour déterminer si le message a été généré sur la base de Microsoft Dynamics 365. Pour obtenir des informations sur la procédure à suivre, voir Filtrer les messages.

Vous pouvez créer une lecture de message destructive en utilisant le mode ReceiveReceiveAndDelete, où le message est lu et supprimé de la file d’attente, ou une lecture non-destructive en utilisant le mode PeekLock, pour lequel le message est lu mais toujours disponible dans la file d’attente. L’exemple de code d’écouteur de file d’attente persistante fourni dans ce Kit de développement logiciel peut effectuer une lecture destructive. Pour plus d’informations sur les messages de lecture d’une file d’attente, voir How to Receive Messages from a Queue.

Une rubrique est similaire à une file d’attente mais implémente un modèle de publication/d’abonnement. Un ou plusieurs écouteurs peuvent s’abonner à la rubrique et recevoir des messages de sa file d’attente.Pour plus d'informations :Files d'attente, rubriques et abonnements

Important

Pour utiliser ces contrats de file d'attente ou de rubrique, vous devez créer vos applications d’écouteur avec la version 1.7 ou supérieure du Kit de développement logiciel (SDK) Azure.

L’utilisation des files d’attente et des rubriques dans votre conception du logiciel système peut entraîner le découplage des systèmes. Si l’application d’écoute n’est jamais indisponible, la remise des messages issus de Microsoft Dynamics 365 aboutira toujours et l’application d’écoute pourra continuer à traiter le message de file d’attente lorsqu’elle est en ligne.Pour plus d'informations :Files d’attente, rubriques et abonnements Service Bus

Écrire un écouteur unidirectionnel, bidirectionnel ou REST

Outre l’écouteur de file d’attente décrit précédemment, vous pouvez écrire un écouteur pour trois autres contrats de bus des services pris en charge par Microsoft Dynamics 365: unidirectionnel, bidirectionnel et REST. Un écouteur unidirectionnel peut lire et traiter un message publié sur le bus des services. Un écouteur bidirectionnel peut effectuer la même chose mais peut également renvoyer une chaîne de quelques informations dans Dynamics 365. Un écouteur REST fait la même chose que l’écouteur bidirectionnel sauf qu’il fonctionne avec un point de terminaison REST. Notez que ces auditeurs doivent effectuer une écoute active au niveau du point de terminaison de service pour lire un message envoyé via le bus des services. Si l’écouteur n’écoute pas lorsque Microsoft Dynamics 365 tente de publier un message sur le bus des services, le message ne sera pas envoyé.

L’écriture d’un écouteur est structurée autour de ce qui est appelé ABC : Address (adresse), Binding (liaison) et Contract (contrat). Les informations suivantes identifient l’ABC d’un écouteur unidirectionnel.

Lorsque votre écouteur est inscrit avec un point de terminaison, la méthode Execute de l’écouteur est appelée lorsqu’un message est publié sur le bus des services par Microsoft Dynamics 365. La méthode Execute ne retourne aucune donnée à partir de l’appel de la méthode. Pour plus d’informations, voir l’exemple d’écouteur unidirectionnel, Exemple : écouteur unidirectionnel.

Un écouteur bidirectionnel est codé de la même façon qu’un écouteur unidirectionnel. L’ABC d’un écouteur bidirectionnel est le suivante :

Pour ce contrat bidirectionnel, la méthode Exécuter renvoie une chaîne de l’appel de méthode. Pour plus d’informations, voir l’exemple d’écouteur bidirectionnel, Exemple : écouteur bidirectionnel.

Un écouteur REST est codé de la même façon qu’un écouteur bidirectionnel. L’ABC d’un écouteur REST est le suivant :

Pour le contrat REST, la méthode Execute renvoie une chaîne de l’appel de méthode. Reportez-vous à l’exemple d’écouteur REST, Exemple : Port d’écoute REST, pour plus d’informations. Notez que dans l’exemple d’écouteur REST, un WebServiceHost est instancié et non un ServiceHost comme c’est le cas dans l’exemple bidirectionnel.

Notes

Lors de l’utilisation du plug-in prêt à l’emploi (ServiceBusPlugin) avec un écouteur bidirectionnel ou REST, le plug-in n’utilise aucune donnée de chaîne issue de l’écouteur. Toutefois, un plug-in Azurepersonnalisé peut se servir de ces informations.

Lorsque vous exécutez les exemples d’écouteur, le secret de l’émetteur correspondant est la clé de gestion Microsoft Azure Service Bus. La liaison HTTP WS2007 Federation utilise le mode « jeton » et le protocole WS-Trust 1.3.

Filtrer les messages

Il existe un ensemble de propriétés contenant des informations supplémentaires ajoutées à chaque Propriété de message sponsorisé issus de Microsoft Dynamics 365 et Dynamics 365 (en ligne). L’ensemble de propriétés, disponibles avec les points de terminaison des files d’attente, relais et des rubriques, contient les informations suivantes :

  • Organisation URI

  • ID de l’utilisateur appelant

  • ID de l’utilisateur émetteur

  • Nom logique de l'entité

  • Nom de la demande

Ces informations identifient l’organisation, l’utilisateur, l’entité et la demande de message traitée par Microsoft Dynamics 365 résultant du message de bus des services en cours de publication. La disponibilité de ces propriétés indique que le message a été envoyé depuis Microsoft Dynamics 365. Votre code d'écouteur peut décider comment traiter le message à partir de ces valeurs.

Lisez le contexte de données dans plusieurs formats de données

Le contexte de données de l'opération actuelle Microsoft Dynamics 365 est transmis à votre application d'écouteur de solution Azure dans le corps d'un message service bus. Dans les versions précédentes, seul un format binaire .NET était pris en charge. Pour une interopérabilité entre les plateformes (non .NET) , vous pouvez désormais spécifier un des trois formats de données pour le corps du message : .NET binaire, JSON ou XML. Ce format est spécifié dans l'attribut MessageFormat de l'entité ServiceEndpoint.

Notes

Cette fonctionnalité a été introduite dans la mise à jour 1 de CRM Online 2016 et le Service Pack 1 de CRM 2016 (local).

Lorsque vous recevez des messages, votre application d'écouteur peut lire le contexte de données dans le corps du message selon le type de contenu du message. L'exemple de code pour ce faire est indiqué ci-dessous.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);

if (receivedMessage.ContentType = "application/msbin1")
{
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();
}
else if (receivedMessage.ContentType = "application/json")
{
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));
}
else if (receivedMessage.ContentType = "application/xml")
{
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractSerializer(typeof(RemoteExecutionContext)));
}

Voir aussi

Extensions Azure pour Microsoft Dynamics 365
Écrire un plug-in compatible Azure personnalisé
Exemple : Écouteur de files d’attente persistantes
Exemple : écouteur unidirectionnel
Exemple : écouteur bidirectionnel
Exemple : Port d’écoute REST
Utilisation des données Dynamics 365 dans votre solution Azure
Utilisation des données d'événement Dynamics 365 dans votre solution Azure Event Hub

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright