Eğitim
Modül
Orleans çerçevesinin ne olduğunu, sağlayabileceğiniz avantajları ve uygulamalarınızla nasıl tümleştireceğinizi öğrenin.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Orleans v.1.0.0, programlama modeline akış uzantıları desteği ekledi. Akış uzantıları, akışların daha basit ve daha sağlam bir şekilde düşünmesini ve bu akışlarla çalışmasını sağlayan bir dizi soyutlama ve API sağlar. Akış uzantıları, geliştiricilerin bir dizi olay üzerinde yapılandırılmış bir şekilde çalışan reaktif uygulamalar yazmasına olanak tanır. Akış sağlayıcılarının genişletilebilirlik modeli, programlama modelini Event Hubs, ServiceBus, Azure Kuyrukları ve Apache Kafka gibi çok çeşitli mevcut kuyruğa alma teknolojileriyle uyumlu ve taşınabilir hale getirir. Bu tür kuyruklarla etkileşime geçmek için özel kod yazmanız veya ayrılmış işlemler çalıştırmanız gerekmez.
Akış İşleme hakkında her şeyi zaten biliyorsanız ve .NET'te Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Apache Spark Akış ve Reaktif Uzantılar (Rx) gibi teknolojileri biliyorsanız, neden ilgilenmeniz gerektiğini soruyor olabilirsiniz. Neden başka bir Akış İşleme Sistemine ihtiyacımız var ve Aktörlerin Akışlar ile nasıl ilişkili olduğu?"Orleans neden Akışlar?" sorusunun yanıtı.
Orleans Akışlar Programlama Modelinin ardında birkaç ilke vardır:
Uygulamalar ve Orleans.Streams.IAsyncObservable<T> arabirimlerini uygulayan Orleans.Streams.IAsyncStream<T>kullanarak akışlarla Orleans.Streams.IAsyncObserver<T> etkileşim kurar. Bu API'ler .NET'teki iyi bilinen Reaktif Uzantılara (Rx) benzer.
Aşağıdaki tipik bir örnekte, bir cihaz bulutta çalışan hizmete HTTP isteği olarak gönderilen bazı veriler oluşturur. Ön uç sunucusunda çalışan Orleans istemcisi bu HTTP çağrısını alır ve verileri eşleşen bir cihaz akışında yayımlar:
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);
}
Aşağıdaki başka bir örnekte, bir sohbet kullanıcısı (Orleans Grain olarak uygulanır) bir sohbet odasına katılır, bu odadaki diğer tüm kullanıcılar tarafından oluşturulan sohbet iletilerinin akışını ele alır ve buna abone olur. Sohbet kullanıcısının sohbet odası dilimini (sistemimizde böyle bir dilim olmayabilir) veya bu gruptaki iletileri oluşturan diğer kullanıcılar hakkında bilgi sahibi olması gerekmediğine dikkat edin. Sohbet akışında yayımlamak için kullanıcıların şu anda akışa kimlerin abone olduğunu bilmesi gerekmez. Bu, sohbet kullanıcılarının zaman ve alan açısından nasıl tamamen ayrıştırılabileceğini gösterir.
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))
}
}
Hızlı Başlangıç Örneği, uygulamadaki akışları kullanmanın genel iş akışına hızlı bir genel bakıştır. Okuduktan sonra kavramları daha iyi anlamak için Akışlar Programlama API'lerini okumanız gerekir.
Akışlar Programlama API'leri, programlama API'lerinin ayrıntılı bir açıklamasını sağlar.
Akışlar çeşitli şekil ve formların fiziksel kanalları aracılığıyla gelebilir ve farklı semantiklere sahip olabilir. Orleans Streaming, sistemde bir genişletilebilirlik noktası olan Stream Providers kavramı aracılığıyla bu çeşitliliği destekleyecek şekilde tasarlanmıştır. Orleans şu anda iki akış sağlayıcısının uygulamalarına sahiptir: TCP tabanlı Basit İleti Akışı Sağlayıcısı ve Azure Kuyruk Tabanlı Azure Kuyruk Akışı Sağlayıcısı. Stream Sağlayıcıları hakkında daha fazla ayrıntıya Stream Providers sayfasından ulaşabilirsiniz.
Akış Aboneliği Semantiği:
Orleans Akışlar Stream Aboneliği işlemleri için Sıralı Tutarlılık garantisi vermektedir. Özellikle, bir tüketici bir akışa abone olduğunda, abonelik işlemini temsil eden işlem başarıyla çözümlendikten sonra Task
tüketici abone olduktan sonra oluşturulan tüm olayları görür. Ayrıca, Geri Sarılabilir akışlar kullanarak StreamSequenceTokengeçmişte rastgele bir noktadan abone olmanıza olanak sağlar. Daha fazla bilgi için bkz . Orleans akış sağlayıcıları.
Bireysel Akış Olayları Teslim Garantileri:
Tek tek olay teslim garantileri, tek tek akış sağlayıcılarına bağlıdır. Bazıları yalnızca en iyi çabayı bir kerede teslim (Basit İleti Akışlar (SMS) gibi) sağlarken, diğerleri en az bir kez teslim (Azure Kuyruk Akışlar gibi) sağlar. Tam olarak bir kez teslimi garanti edecek bir akış sağlayıcısı oluşturmak bile mümkündür (henüz böyle bir sağlayıcımız yok, ancak bir sağlayıcı oluşturmak mümkündür).
Olay Teslim Siparişi:
Olay sırası belirli bir akış sağlayıcısına da bağlıdır. SMS akışlarında üretici, tüketici tarafından görülen olayların sırasını, yayımlama biçimini denetleyerek açıkça denetler. Temel alınan Azure Kuyrukları hata durumlarında sırayı garanti etmediğinden Azure Kuyruk akışları FIFO sırasını garanti etmemektedir. Uygulamalar ayrıca kullanarak StreamSequenceToken
akış teslim siparişlerini de denetleyebiliyor.
Orleans Akışlar Uygulaması, iç uygulamaya üst düzey bir genel bakış sağlar.
Akış API'lerinin bir dilim içinde nasıl kullanılacağına ilişkin diğer örnekler burada bulunabilir. Gelecekte daha fazla örnek oluşturmayı planlıyoruz.
Eğitim
Modül
Orleans çerçevesinin ne olduğunu, sağlayabileceğiniz avantajları ve uygulamalarınızla nasıl tümleştireceğinizi öğrenin.