Bagikan melalui


Tutorial: Membuat aplikasi Orleans minimal

Dalam tutorial ini, Anda mengikuti instruksi langkah demi langkah untuk membuat komponen bergerak dasar yang umum digunakan dalam sebagian besar aplikasi Orleans. Ini dirancang untuk bersifat mandiri dan minimalis.

Tutorial ini tidak memiliki penanganan kesalahan yang sesuai dan kode penting lainnya yang akan berguna untuk lingkungan produksi. Namun, ini akan membantu Anda mendapatkan pemahaman langsung tentang struktur aplikasi umum untuk Orleans dan memungkinkan Anda untuk memfokuskan pembelajaran berkelanjutan Anda pada bagian-bagian yang paling relevan bagi Anda.

Prasyarat

Penyiapan proyek

Untuk tutorial ini, Anda akan membuat 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 diberikan untuk setiap proyek.

  1. Mulailah dengan membuat proyek Aplikasi Konsol dalam solusi baru. Sebut bagian proyek 'silo' dan beri nama solusinya OrleansHelloWorld. Untuk informasi selengkapnya tentang membuat aplikasi konsol, lihat Tutorial : Membuat aplikasi konsol .NET menggunakan Visual Studio.
  2. Tambahkan proyek Aplikasi Konsol lain dan beri nama Client.
  3. Tambahkan Pustaka Kelas dan beri nama GrainInterfaces. Untuk informasi tentang membuat pustaka kelas, lihat Tutorial : Membuat pustaka kelas .NET menggunakan Visual Studio.
  4. Tambahkan Pustaka Kelas lain dan beri nama Grains.

Menghapus file sumber default

  1. Hapus Class1.cs dari Grains.
  2. Hapus Class1.cs dari GrainInterfaces.

Menambahkan referensi

  1. Biji-bijian referensi AntarmukaBiji.
  2. Silo referensi Butir.
  3. Client mereferensikan GrainInterfaces.

Menambahkan paket NuGet Orleans

Proyek Paket NuGet
Silo Microsoft.Orleans.Server
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Klien Microsoft.Orleans.Client
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Antarmuka Butiran Microsoft.Orleans.Sdk
Biji-bijian Microsoft.Orleans.Sdk
Microsoft.Extensions.Logging.Abstractions

Microsoft.Orleans.Server, Microsoft.Orleans.Client, dan Microsoft.Orleans.Sdk adalah metapaket yang membawa dependensi yang kemungkinan Anda butuhkan pada Silo dan klien. Untuk informasi selengkapnya tentang menambahkan referensi paket, lihat dotnet menambahkan paket atau Menginstal dan mengelola paket di Visual Studio menggunakan Manajer Paket NuGet.

Menentukan antarmuka grain

Dalam proyek GrainInterfaces, tambahkan file kode IHello.cs dan tentukan antarmuka IHello berikut di dalamnya:

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 di dalamnya:

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. Anda menggunakan penyedia pengklusteran localhost, yang memungkinkan Anda menjalankan semuanya secara lokal, tanpa dependensi pada sistem penyimpanan eksternal. Untuk informasi selengkapnya, lihat Konfigurasi Pengembangan Lokal. Dalam contoh ini, Anda menjalankan kluster dengan satu silo di dalamnya.

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:

Membuat klien

Terakhir, Anda perlu mengonfigurasi klien untuk berkomunikasi dengan biji-bijian, menghubungkannya ke kluster (dengan satu silo di dalamnya), dan memanggil biji-bijian. Konfigurasi pengklusteran harus cocok dengan yang Anda gunakan 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 Anda mendapatkan pesan konfirmasi bahwa Silo sedang berjalan, jalankan Client.

Untuk memulai Silo dari baris perintah, jalankan perintah berikut dari direktori yang berisi file proyek Silo:

dotnet run

Anda akan melihat banyak output sebagai bagian dari 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 .NET CLI yang sama di jendela terminal terpisah untuk memulai klien:

dotnet run

Untuk informasi selengkapnya tentang menjalankan aplikasi .NET, lihat dotnet run. Jika Menggunakan Visual Studio, Anda dapat mengonfigurasi beberapa proyek startup.

Lihat juga