Del via


Skrive et lyttefunktionsprogram til en Microsoft Azure-løsning

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Dette emne beskriver, hvordan du skriver et lyttefunktionsprogram til en Microsoft Azure-løsning, der kan læse og behandle Microsoft Dynamics 365-meddelelser, der er sendt til Microsoft Azure-servicebus. Som en forudsætning,skal du orientere dig om, hvordan man skriver en Microsoft Azure-servicebus-lyttefunktion, før du prøver at lære detaljerne i en Microsoft Dynamics 365-lyttefunktion. Du kan få flere oplysninger under dokumentationen til Azure Service Bus.

Dette emne indeholder

Skrive en kølyttefunktion

Skrive en envejs-, tovejs- eller REST-lyttefunktion

Filtermeddelelser

Læs datakonteksten i flere dataformater

Skrive en kølyttefunktion

En meddelelseskø er et lager af meddelelser, der modtages på et servicebus-slutpunkt. En kølyttefunktion er et program, der læser og behandler meddelelserne i køen. Da servicebusmeddelelser gemmes i en kø, behøver en lyttefunktion ikke aktivt at lytte, for at meddelelser kan modtages i køen. En kølyttefunktion kan startes, når meddelelser er modtaget i køen, og stadig behandle disse meddelelser. Andre typer lyttefunktioner, der er beskrevet i næste afsnit, skal aktivt lytte, for ellers har de ikke mulighed for at læse en meddelelse. Disse meddelelser kan stamme fra Microsoft Dynamics 365 eller fra en anden kilde. .

Vigtigt

Når du skriver en kølyttefunktion, skal du kontrollere hver meddelelseshovedhandling for at finde ud af, om meddelelsen stammer fra Microsoft Dynamics 365. Du kan se oplysninger om, hvordan du gør dette under, Filtermeddelelser

Du kan foretage en destruktiv meddelelseslæsning ved hjælp af Receive i ReceiveAndDelete-tilstand, hvor meddelelsen læses og fjernes fra køen, eller en ikke-destruktiv læsning ved hjælp af PeekLock-tilstand, hvor meddelelsen læses, men stadig er tilgængelig i køen. Vedvarende kølyttefunktions eksempelkode, der er leveret i dette SDK, indeholder en destruktiv læsning. Yderligere oplysninger om at læse meddelelser fra en kø finder du i Sådan modtager du meddelelser fra en kø.

Et emne svarer til en kø, men implementerer en model for udgivelse/abonnement. En eller flere lyttefunktioner kan abonnere på emnet og modtage meddelelser fra dens kø.Flere oplysninger:Køer, emner og abonnementer

Vigtigt

Hvis du vil bruge disse kø- eller emnekontrakter, skal du skrive dine lytteprogrammer ved hjælp af Azure SDK version 1.7 eller senere.

Brug af køer og emner i dit multisystemsoftwaredesign kan medføre afkobling af systemer. Hvis lytteprogrammet nogensinde bliver utilgængeligt, vil leveringen af meddelelsen fra Microsoft Dynamics 365 stadig lykkes, og lytteprogrammet kan fortsætte afviklingen af kømeddelelsen, når det er online igen.Flere oplysninger:Køer, emner og abonnementer

Skrive en envejs-, tovejs- eller REST-lyttefunktion

Udover kølyttefunktionen, der er beskrevet tidligere, kan du skrive en lyttefunktion til tre andre servicebuskontrakter, der understøttes af Microsoft Dynamics 365: envejs, tovejs og REST. En envejslyttefunktion kan læse og behandle en meddelelse, der er sendt til servicebussen. En tovejslyttefunktion kan gøre det samme, men kan også returnere en streng med nogle oplysninger tilbage til Dynamics 365. En REST-lyttefunktion er den samme som tovejslyttefunktionen, bortset fra at den fungerer sammen med et REST-slutpunkt. Bemærk, at disse lyttefunktioner skal lytte aktivt på et serviceslutpunkt for at læse en meddelelse, der sendes via servicebussen. Hvis lyttefunktionen ikke lytter, når Microsoft Dynamics 365 forsøger at sende en meddelelse til servicebussen, vil meddelelsen ikke blive sendt.

Skrivning af en lyttefunktion er struktureret omkring en adresse, binding og kontrakt. Følgende oplysninger angiver adresse, binding og kontrakt i en envejslyttefunktion.

Når din lyttefunktion er registreret med et slutpunkt, kaldes lyttefunktionens Execute-metode, når der sendes en meddelelse til servicebussen, af Microsoft Dynamics 365.Execute-metoden returnerer ingen data fra metodekaldet. Yderligere oplysninger finder du i eksemplet på envejslyttefunktion, Eksempel: Envejs-lyttefunktion.

En tovejslyttefunktion er kodet på en lignende måde som en envejslyttefunktion. En tovejslyttefunktion har følgende adresse, binding og kontrakt:

For denne tovejskontrakt vil metoden Udfør returnere en streng fra metodekaldet. Yderligere oplysninger finder du i eksemplet på tovejslyttefunktion, Eksempel: Tovejs-lyttefunktion.

En REST-lyttefunktion er kodet på en lignende måde som en tovejslyttefunktion. En REST-lyttefunktion har følgende adresse, binding og kontrakt:

For REST-kontrakten vil Execute-metoden returnere en streng fra metodekaldet. Du kan finde flere oplysninger i eksemplet på REST-lyttefunktion, Eksempel: REST-lyttefunktion. Bemærk, at i eksemplet på REST-lyttefunktionen er en WebServiceHost instantieret, og ikke en ServiceHost, som det var tilfældet i tovejseksemplet.

Bemærk

Når du bruger indbygget (ServiceBusPlugin) plug-in med en tovejs- eller REST-lyttefunktion, bruger plug-in'en ikke nogen strengdata, der returneres fra lyttefunktionen. Men en brugerdefineret Azure-aktiveret plug-in kunne gøre brug af disse oplysninger.

Når du kører eksemplerne på lyttefunktioner, bliver du bedt om at angive udstederens hemmelighed, som er Microsoft Azure-servicebus-administrationsnøglen. WS2007 Federation HTTP-bindingen bruger "token"-tilstand og protokollen WS-Trust 1.3.

Filtermeddelelser

Der er en egenskabsbeholder med ekstra oplysninger i hver formidlet meddelelses Properties-egenskab, der er sendt fra Microsoft Dynamics 365 og Dynamics 365 (online). Egenskabsbeholderen med kø, videresendelse og emnekontraktslutpunkter indeholder følgende oplysninger:

  • Organisation URI

  • Kaldende bruger-id

  • Initierende bruger-id

  • Objektets logiske navn

  • Anmodningsnavn

Disse oplysninger identificerer den organisations-, bruger-, objekt- og meddelelsesanmodning, som er behandlet af Microsoft Dynamics 365, der resulterede i, at servicebusmeddelelsen blev sendt. Tilgængeligheden af disse egenskaber angiver, at meddelelsen blev sendt fra Microsoft Dynamics 365. Din lyttefunktionskode kan beslutte, hvordan meddelelsen skal behandles baseret på disse værdier.

Læs datakonteksten i flere dataformater

Datakontakten fra den aktuelle Microsoft Dynamics 365-handling overføres til lyttefunktionsprogrammet til Azure-løsningen i hoveddelen af servicebusmeddelelsen. I tidligere versioner var det kun det binære .NET-format, der blev understøttet. Når det gælder interoperabilitetpå tværs af platforme (ikke-.NET), kan du nu angive et af tre dataformater for meddelelsens hoveddel: .NET Binary, JSON eller XML. Dette format er angivet i MessageFormat -attributten for ServiceEndpoint-objektet.

Bemærk

Denne funktion blev introduceret i første opdatering til CRM Online 2016 og i CRM 2016 Service Pack 1 (i det lokale miljø).

Ved modtagelse af meddelelser kan lyttefunktionsprogrammet læse datakonteksten i meddelelsens hoveddel, der er baseret på meddelelsens indholdstype. Eksempelkode til at gøre dette er vist nedenfor.

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)));
}

Se også

Azure-udvidelser til Microsoft Dynamics 365
Skriv en brugerdefineret Azure-følsom plug-in
Eksempel: Vedvarende kølyttefunktion
Eksempel: Envejs-lyttefunktion
Eksempel: Tovejs-lyttefunktion
Eksempel: REST-lyttefunktion
Arbejde med Dynamics 365-data i din Azure-løsning
Arbejde med Dynamics 365-hændelsesdata i din Azure-hændelseshubløsning

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret