Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam tutorial ini, ikuti instruksi langkah demi langkah untuk membuat komponen bergerak dasar yang lazim ditemukan pada Orleans aplikasi. Ini dirancang untuk bersifat mandiri dan minimalis.
Tutorial ini tidak memiliki penanganan kesalahan yang sesuai dan kode penting lainnya yang berguna untuk lingkungan produksi. Namun, ini akan membantu Anda mendapatkan pemahaman langsung tentang struktur aplikasi umum Orleans dan memungkinkan Anda untuk memfokuskan pembelajaran berkelanjutan Anda pada bagian-bagian yang paling relevan bagi Anda.
Petunjuk / Saran
Untuk aplikasi Orleans siap produksi, pertimbangkan untuk menggunakan aplikasi .NET Aspire untuk menyederhanakan manajemen sumber daya, penemuan layanan, pengamatan, dan penyebaran. Aspire menangani konfigurasi untuk clustering, penyimpanan grain, pengingat, dan streaming secara otomatis. Lihat integrasi .NET AspireOrleans untuk mempelajari lebih lanjut.
Prasyarat
Penyiapan proyek
Untuk tutorial ini, buat empat proyek sebagai bagian dari solusi yang sama:
- Pustaka untuk menyertakan antarmuka grain.
- Pustaka untuk menampung kelas-kelas biji-bijian.
- Aplikasi konsol untuk menghosting Silo.
- Aplikasi konsol untuk menghosting Klien.
Membuat struktur di Visual Studio
Ganti kode default dengan kode yang disediakan untuk setiap proyek.
- Mulailah dengan membuat proyek Aplikasi Konsol dalam solusi baru. Panggil proyek
Silodan beri nama solusiOrleansHelloWorld. Untuk informasi selengkapnya tentang membuat aplikasi konsol, lihat Tutorial: Membuat aplikasi konsol .NET. - Tambahkan proyek Aplikasi Konsol lain dan beri nama
Client. - Tambahkan Pustaka Kelas dan beri nama
GrainInterfaces. Untuk informasi tentang membuat pustaka kelas, lihat Tutorial: Membuat pustaka kelas .NET. - Tambahkan Pustaka Kelas lain dan beri nama
Grains.
Menghapus file sumber default
- Hapus Class1.cs dari Grains.
- Hapus Class1.cs dari GrainInterfaces.
Menambahkan referensi
- Biji-bijian referensi AntarmukaBiji.
- Silo referensi Butir.
- Client mereferensikan GrainInterfaces.
Menambahkan paket NuGet Orleans
| Proyek | Paket NuGet |
|---|---|
| Silo | Microsoft.Orleans.ServerMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Klien | Microsoft.Orleans.ClientMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Antarmuka Butiran | Microsoft.Orleans.Sdk |
| Biji-bijian | Microsoft.Orleans.SdkMicrosoft.Extensions.Logging.Abstractions |
Microsoft.Orleans.Server, Microsoft.Orleans.Client, dan Microsoft.Orleans.Sdk adalah metapackage yang memuat dependensi yang kemungkinan besar Anda perlukan pada Silo dan klien. Untuk informasi selengkapnya tentang menambahkan referensi paket, lihat menambahkan paket dotnet atau Install dan mengelola paket di Visual Studio menggunakan NuGet Package Manager.
Menentukan antarmuka grain
Dalam proyek GrainInterfaces , tambahkan file kode IHello.cs dan tentukan antarmuka berikut IHello :
namespace GrainInterfaces;
public interface IHello : IGrainWithIntegerKey
{
ValueTask<string> SayHello(string greeting);
}
Menentukan kelas biji-bijian
Dalam proyek Grains , tambahkan file kode HelloGrain.cs dan tentukan kelas berikut:
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!
""");
}
}
Membuat silo
Untuk membuat proyek Silo, tambahkan kode untuk menginisialisasi server yang menghosting dan menjalankan biji-bijian—silo. Gunakan penyedia pengklusteran localhost, yang memungkinkan menjalankan semuanya secara lokal tanpa bergantung pada sistem penyimpanan eksternal. Untuk informasi selengkapnya, lihat Konfigurasi Pengembangan Lokal. Dalam contoh ini, jalankan kluster dengan satu silo.
Tambahkan kode berikut ke Program.cs dari proyek Silo.
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();
Kode sebelumnya:
- Mengonfigurasi IHost untuk menggunakan Orleans dengan metode UseOrleans.
- Menentukan penggunaan penyedia pengklusteran localhost dengan UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) metode .
- Menjalankan
hostdan menunggu proses berakhir dengan mendengarkan Ctrl+C atauSIGTERM.
Membuat klien
Terakhir, konfigurasikan klien untuk berkomunikasi dengan biji-bijian, sambungkan ke kluster (dengan satu silo), dan panggil biji-bijian. Konfigurasi pengklusteran harus cocok dengan yang digunakan untuk silo. Untuk informasi selengkapnya, lihat Kluster dan Klien.
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();
Jalankan aplikasi
Bangun solusi dan jalankan Silo. Setelah menerima pesan konfirmasi bahwa Silo sedang berjalan, jalankan Klien.
Untuk memulai Silo dari baris perintah, jalankan perintah berikut dari direktori yang berisi file proyek Silo:
dotnet run
Anda akan melihat banyak hasil sebagai bagian dari proses startup Silo. Setelah melihat pesan berikut, Anda siap untuk menjalankan klien:
Application started. Press Ctrl+C to shut down.
Dari direktori proyek klien, jalankan perintah CLI .NET yang sama di jendela terminal terpisah untuk memulai klien:
dotnet run
Untuk informasi selengkapnya tentang menjalankan aplikasi .NET, lihat dotnet berjalan. Jika Anda menggunakan Visual Studio, Anda dapat mengonfigurasi beberapa proyek startup.