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.
Adresse: service-URI
Binding: WS2007HttpRelayBinding
Kontrakt: IServiceEndpointPlugin
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:
Adresse: service-URI
Binding: WS2007HttpRelayBinding
Kontrakt: ITwoWayServiceEndpointPlugin
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:
Adresse: service-URI
Binding: WebHttpRelayBinding
Kontrakt: IWebHttpServiceEndpointPlugin
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