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.
Önkoşullar
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ı oluşturma
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. Öğretici: Visual Studiokullanarak .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. Öğretici: Visual Studiokullanarak .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 dotnet package add veya Visual Studio'da NuGet Paket Yöneticisini kullanarak paketleri yükleme ve yönetme başlıklarına bakın.
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ını ç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.