Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, çoğu Orleans uygulamada ortak olan temel hareketli parçaları oluşturmak için adım adım yönergeleri izleyin. Kendi kendine yetebilen ve minimalist olacak şekilde tasarlanmıştır.
Bu öğreticide uygun hata işleme ve üretim ortamı için yararlı olan diğer temel kodlar eksiktir. Ancak, ortak Orleans uygulama yapısı hakkında uygulamalı bir anlayış kazanmanıza yardımcı olmalı ve devam eden öğrenmenizi size en uygun bölümlere odaklamanıza olanak sağlamalıdır.
Tip
Üretime hazır Orleans uygulamaları için kaynak yönetimini, hizmet bulmayı, gözlemlenebilirliği ve dağıtımı basitleştirmek için .NET Aspire kullanmayı göz önünde bulundurun. Aspire kümeleme, tahıl depolama, anımsatıcılar ve akış için yapılandırmayı otomatik olarak işler. Daha fazla bilgi için bkz. .NET AspireOrleans integration.
Önkoşullar
- Visual Studio 2022 veya üzeri
- hedef Orleans sürümünüzle uyumlu .NET SDK
Proje kurulumu
Bu öğretici için aynı çözümün parçası olarak dört proje oluşturun:
- Hububat arabirimlerini içerecek kitaplık.
- Tahıl sınıflarını içeren kütüphane.
- Silo'yu barındırmak için konsol uygulaması.
- İstemciyi barındırmak için konsol uygulaması.
Visual Studio'da yapıyı oluştur.
Varsayılan kodu her proje için sağlanan kodla değiştirin.
- Yeni bir çözümde Konsol Uygulaması projesi oluşturarak başlayın. Projeyi
Siloçağırın ve çözümüOrleansHelloWorldolarak adlandırın. Konsol uygulaması oluşturma hakkında daha fazla bilgi için bkz. Tutorial: .NET konsol uygulaması oluşturma. - Başka bir Konsol Uygulaması projesi ekleyin ve
Clientolarak adlandırlayın. - Sınıf Kitaplığı ekleyin ve
GrainInterfacesolarak adlandırlayın. Sınıf kitaplığı oluşturma hakkında bilgi için bkz. Tutorial: .NET sınıf kitaplığı oluşturma. - Başka bir Sınıf Kitaplığı ekleyin ve
Grainsolarak adlandırlayın.
Varsayılan kaynak dosyaları silme
- Class1.cs dosyasını Grainsiçinden silin.
- GrainInterfacesiçindeki Class1.cs sil.
Referans ekle
- Tahıllar başvuruları TahılArayüzleri.
- Silo referanslar Grains.
- İstemci, GrainInterfaces'a atıfta bulunur.
Orleans NuGet paketlerini ekle
| Proje | NuGet paketi |
|---|---|
| Silo | Microsoft.Orleans.ServerMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Müşteri | Microsoft.Orleans.ClientMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Tahıl Arabirimleri | Microsoft.Orleans.Sdk |
| Tahıl | Microsoft.Orleans.SdkMicrosoft.Extensions.Logging.Abstractions |
Microsoft.Orleans.Server, Microsoft.Orleans.Clientve Microsoft.Orleans.Sdk büyük olasılıkla Silo ve istemcide ihtiyaç duyacağınız bağımlılıkları getiren meta paketlerdir. Paket başvuruları ekleme hakkında daha fazla bilgi için bkz. dotnet package add veya NuGet Paket Yöneticisi'ni kullanarak Visual Studio'da paketleri yükleme ve yönetme.
Bir tahıl arabirimi tanımla
GrainInterfaces projesinde bir IHello.cs kod dosyası ekleyin ve aşağıdaki IHello arabirimi tanımlayın:
namespace GrainInterfaces;
public interface IHello : IGrainWithIntegerKey
{
ValueTask<string> SayHello(string greeting);
}
Bir tahıl sınıfı tanımla
Grains projesinde bir HelloGrain.cs kod dosyası ekleyin ve aşağıdaki sınıfı tanımlayın:
using GrainInterfaces;
using Microsoft.Extensions.Logging;
namespace Grains;
public class HelloGrain : Grain, IHello
{
private readonly ILogger _logger;
public HelloGrain(ILogger<HelloGrain> logger) => _logger = logger;
ValueTask<string> IHello.SayHello(string greeting)
{
_logger.LogInformation("""
SayHello message received: greeting = "{Greeting}"
""",
greeting);
return ValueTask.FromResult($"""
Client said: "{greeting}", so HelloGrain says: Hello!
""");
}
}
Siloyu oluşturma
Silo projesini oluşturmak için, taneleri (grains) barındıran ve çalıştıran bir sunucuyu başlatacak kodu ekleyin. Dış depolama sistemlerine bağlı olmadan her şeyin yerel olarak çalıştırılmasına olanak tanıyan localhost kümeleme sağlayıcısını kullanın. Daha fazla bilgi için bkz. Yerel Geliştirme Yapılandırması. Bu örnekte, tek bir silo ile bir küme çalıştırın.
Aşağıdaki kodu Program.cs dosyasına, Silo projesine ekleyin.
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
IHostBuilder builder = Host.CreateDefaultBuilder(args)
.UseOrleans(silo =>
{
silo.UseLocalhostClustering()
.ConfigureLogging(logging => logging.AddConsole());
})
.UseConsoleLifetime();
using IHost host = builder.Build();
await host.RunAsync();
Önceki kod:
- IHost, Orleans kullanacak şekilde UseOrleans yöntemiyle yapılandırılır.
- yöntemiyle localhost kümeleme sağlayıcısının UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) kullanılmasını belirtir.
- ve komutunu
hostçalıştırır ve Ctrl+C veyaSIGTERMdinleyerek işlemin sona ermesini bekler.
İstemciyi oluşturma
Son olarak, bir istemciyi taneciklerle iletişim kuracak, kümeye (tek bir silo ile) bağlayacak ve tahılı çağıracak şekilde yapılandırın. Kümeleme yapılandırması silo için kullanılan yapılandırmayla eşleşmelidir. Daha fazla bilgi için bkz. Kümeler ve İstemciler.
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using GrainInterfaces;
IHostBuilder builder = Host.CreateDefaultBuilder(args)
.UseOrleansClient(client =>
{
client.UseLocalhostClustering();
})
.ConfigureLogging(logging => logging.AddConsole())
.UseConsoleLifetime();
using IHost host = builder.Build();
await host.StartAsync();
IClusterClient client = host.Services.GetRequiredService<IClusterClient>();
IHello friend = client.GetGrain<IHello>(0);
string response = await friend.SayHello("Hi friend!");
Console.WriteLine($"""
{response}
Press any key to exit...
""");
Console.ReadKey();
await host.StopAsync();
Uygulamayı çalıştırma
Çözümü derleyin ve Siloçalıştırın. Silo'nın çalıştığını belirten onay iletisini aldıktan sonra İstemci'yi çalıştırın.
Silo'yu komut satırından başlatmak için Silo'nun proje dosyasını içeren dizinden aşağıdaki komutu çalıştırın:
dotnet run
Silo başlatma işleminin bir parçası olarak çok sayıda çıkış göreceksiniz. Aşağıdaki iletiyi gördükten sonra istemciyi çalıştırmaya hazırsınız demektir:
Application started. Press Ctrl+C to shut down.
İstemci proje dizininden, istemciyi başlatmak için ayrı bir terminal penceresinde aynı .NET CLI komutunu çalıştırın:
dotnet run
.NET uygulamaları çalıştırma hakkında daha fazla bilgi için bkz. dotnet run. Visual Studio kullanıyorsanız birden çok başlangıç projesi yapılandırabilirsiniz.