Training
Module
Inleiding tot Orleans - Training
Ontdek wat het Orleans-framework is, welke voordelen het kan bieden en hoe u het kunt integreren met uw toepassingen.
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Orleans v.1.0.0 heeft ondersteuning toegevoegd voor streaming-extensies voor het programmeermodel. Streaming-extensies bieden een set abstracties en API's die het denken over en werken met streams eenvoudiger en robuuster maken. Met streaming-extensies kunnen ontwikkelaars reactieve toepassingen schrijven die op een gestructureerde manier op een reeks gebeurtenissen werken. Het uitbreidbaarheidsmodel van streamproviders maakt het programmeermodel compatibel met en draagbaar voor een breed scala aan bestaande wachtrijtechnologieën, zoals Event Hubs, ServiceBus, Azure Queues en Apache Kafka. U hoeft geen speciale code te schrijven of speciale processen uit te voeren om met dergelijke wachtrijen te communiceren.
Als u al alles weet over Stream Processing en bekend bent met technologieën zoals Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Apache Spark Streaming en Reactive Extensions (Rx) in .NET, vraagt u misschien waarom het u moet schelen. Waarom hebben we nog een Stream Processing System nodig en hoe Actors zijn gerelateerd aan Streams?"Waarom Orleans Streams?" is bedoeld om die vraag te beantwoorden.
Er zijn verschillende principes achter Orleans Streams Programming Model:
Toepassingen communiceren met streams met behulp van Orleans.Streams.IAsyncStream<T>, waarmee de Orleans.Streams.IAsyncObserver<T> en Orleans.Streams.IAsyncObservable<T> interfaces worden geïmplementeerd. Deze API's zijn vergelijkbaar met de bekende reactieve extensies (Rx) in .NET.
In een typisch voorbeeld hieronder genereert een apparaat enkele gegevens, die worden verzonden als een HTTP-aanvraag naar de service die wordt uitgevoerd in de cloud. De Orleans-client die wordt uitgevoerd op de front-endserver ontvangt deze HTTP-aanroep en publiceert de gegevens in een overeenkomende apparaatstroom:
public async Task OnHttpCall(DeviceEvent deviceEvent)
{
// Post data directly into the device's stream.
IStreamProvider streamProvider =
GrainClient.GetStreamProvider("MyStreamProvider");
IAsyncStream<DeviceEventData> deviceStream =
streamProvider.GetStream<DeviceEventData>(
deviceEvent.DeviceId, "MyNamespace");
await deviceStream.OnNextAsync(deviceEvent.Data);
}
In een ander voorbeeld hieronder neemt een chatgebruiker (geïmplementeerd als Orleans Grain) deel aan een chatruimte, krijgt een ingang tot een stroom chatberichten die door alle andere gebruikers in deze ruimte worden gegenereerd en zich hierop abonneert. U ziet dat de chatgebruiker niet hoeft te weten over het graan van de chatruimte zelf (er is mogelijk niet zo'n korrel in ons systeem) of over andere gebruikers in die groep die berichten produceren. Om te publiceren naar de chatstream hoeven gebruikers niet te weten wie er momenteel is geabonneerd op de stream. Dit laat zien hoe chatgebruikers volledig kunnen worden losgekoppeld in tijd en ruimte.
public class ChatUser: Grain
{
public async Task JoinChat(Guid chatGroupId)
{
IStreamProvider streamProvider =
base.GetStreamProvider("MyStreamProvider");
IAsyncStream<string> chatStream =
streamProvider.GetStream<string>(chatGroupId, "MyNamespace");
await chatStream.SubscribeAsync(
async (message, token) => Console.WriteLine(message))
}
}
Het quick Startmenu sample is een goed overzicht van de algemene werkstroom voor het gebruik van streams in de toepassing. Nadat u deze hebt gelezen, moet u de Streams Programmeer-API's lezen om meer inzicht te krijgen in de concepten.
Een Streams Programmeer-API's biedt een gedetailleerde beschrijving van de programmeer-API's.
Streams kunnen komen via fysieke kanalen van verschillende vormen en vormen en kunnen verschillende semantiek hebben. Orleans Streaming is ontworpen om deze diversiteit te ondersteunen via het concept van Stream Providers, dat een uitbreidbaarheidspunt in het systeem is. Orleans heeft momenteel implementaties van twee streamproviders: TCP-gebaseerde Simple Message Stream Provider en Azure Queue Stream Provider. Meer informatie over Stream-providers vindt u op Stream-providers.
Semantiek van abonnement streamen:
Orleans Streams sequentiële consistentie garanderen voor Stream-abonnementsbewerkingen. Wanneer een consument zich abonneert op een stream, ziet de consument, zodra de Task
weergave van de abonnementsbewerking is opgelost, alle gebeurtenissen die zijn gegenereerd nadat deze zich heeft geabonneerd. Bovendien kunt u met behulp van StreamSequenceTokenrewindable streams zich abonneren vanaf een willekeurig tijdstip in het verleden. Zie Orleans Stream Providers voor meer informatie.
Leveringsgaranties voor afzonderlijke Stream-gebeurtenissen:
Garanties voor de levering van afzonderlijke gebeurtenissen zijn afhankelijk van afzonderlijke streamproviders. Sommige bieden slechts best-effort voor maximaal één levering (zoals Simple Message Streams (Sms)), terwijl andere ten minste één keer leveren (zoals Azure Queue Streams). Het is zelfs mogelijk om een streamingprovider te bouwen die precies één levering garandeert (we hebben nog geen dergelijke provider, maar het is mogelijk om er een te bouwen).
Leveringsorder voor gebeurtenissen:
Gebeurtenisvolgorde is ook afhankelijk van een bepaalde streamprovider. In Sms streams bepaalt de producent expliciet de volgorde van gebeurtenissen die door de consument worden gezien door de manier waarop deze worden gepubliceerd. Azure Queue-streams garanderen geen FIFO-volgorde, omdat de onderliggende Azure-wachtrijen de volgorde niet garanderen in mislukte gevallen. Toepassingen kunnen ook de volgorde van de levering van stromen beheren met behulp van StreamSequenceToken
.
De Orleans Streams Implementatie biedt een algemeen overzicht van de interne implementatie.
Meer voorbeelden van het gebruik van streaming-API's binnen een graan vindt u hier. We zijn van plan om in de toekomst meer voorbeelden te maken.
Training
Module
Inleiding tot Orleans - Training
Ontdek wat het Orleans-framework is, welke voordelen het kan bieden en hoe u het kunt integreren met uw toepassingen.