Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом руководстве выполните пошаговые инструкции по созданию базовых движущихся частей, распространенных для большинства Orleans приложений. Он предназначен быть самодостаточным и минималистичным.
В этом руководстве отсутствует соответствующая обработка ошибок и другой важный код, полезный для рабочей среды. Однако это поможет вам получить практические сведения о общей Orleans структуре приложений и сосредоточиться на продолжении обучения на наиболее важных для вас частях.
Необходимые условия
Настройка проекта
В этом руководстве создайте четыре проекта в рамках одного решения:
- Библиотека, содержащая интерфейсы зерна.
- Библиотека, содержащая классы зерна.
- Консольное приложение для размещения Silo.
- Консольное приложение для хостинга клиента.
Создание структуры в Visual Studio
Замените код по умолчанию кодом, предоставленным для каждого проекта.
- Начните с создания проекта консольного приложения в новом решении. Вызовите проект
Siloи назовите решениеOrleansHelloWorld. Дополнительные сведения о создании консольного приложения см. в руководстве по созданию консольного приложения .NET с помощью Visual Studio. - Добавьте другой проект консольного приложения и назовите его
Client. - Добавьте библиотеку классов и назовите ее
GrainInterfaces. Сведения о создании библиотеки классов см. в руководстве по созданию библиотеки классов .NET с помощью Visual Studio. - Добавьте другую библиотеку классов и назовите ее
Grains.
Удаление исходных файлов по умолчанию
- Удалите Class1.cs из Grains.
- Удалите Class1.cs из GrainInterfaces.
Добавление ссылок
- Зёрна ссылки GrainInterfaces.
- Silo ссылается на зерна.
- Клиент ссылается на GrainInterfaces.
Добавьте пакеты NuGet Orleans
| Проект | Пакет NuGet |
|---|---|
| Силос | Microsoft.Orleans.ServerMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Клиент | Microsoft.Orleans.ClientMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Интерфейсы зернистых материалов | Microsoft.Orleans.Sdk |
| Зерна | Microsoft.Orleans.SdkMicrosoft.Extensions.Logging.Abstractions |
Microsoft.Orleans.Server, Microsoft.Orleans.Client, и Microsoft.Orleans.Sdk являются метапакетами, которые приносят зависимости, которые вам, скорее всего, понадобятся на Silo и клиенте. Дополнительные сведения о добавлении ссылок на пакеты см. в dotnet package add или разделе "Установка и управление пакетами в Visual Studio с помощью диспетчера пакетов NuGet".
Определите интерфейс зерна
В проекте GrainInterfaces добавьте файл кода IHello.cs и определите следующий IHello интерфейс:
namespace GrainInterfaces;
public interface IHello : IGrainWithIntegerKey
{
ValueTask<string> SayHello(string greeting);
}
Определите зерновой класс
В проекте Grains добавьте файл кода HelloGrain.cs и определите следующий класс:
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!
""");
}
}
Создание силоса
Чтобы создать проект Silo, добавьте код для инициализации сервера, на котором размещаются и запущены зерна — silo. Используйте поставщик кластеризации localhost, который позволяет выполнять все локально без зависимости от внешних систем хранения. Для получения дополнительной информации см. Конфигурация локальной разработки. В этом примере запустите кластер с одним узлом.
Добавьте следующий код в Program.cs проекта 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();
Предыдущий код:
- Настраивает IHost для использования Orleans с методом UseOrleans.
- Указывает использование поставщика кластеризации localhost с методом UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) .
- Запускает
hostи ожидает его завершения, прослушивая Ctrl+C илиSIGTERM.
Создание клиента
Наконец, настройте клиент для связи с зернами, подключите его к кластеру (с одним силосом), и вызовите зерно. Конфигурация кластеризации должна соответствовать конфигурации, используемой для silo. Дополнительные сведения см. о кластерах и клиентах .
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();
Запуск приложения
Создайте решение и запустите Silo. Получив сообщение подтверждения о запуске Silo , запустите клиент.
Чтобы запустить Silo из командной строки, выполните следующую команду из каталога, содержащего файл проекта Silo:
dotnet run
Вы увидите многочисленные выходные данные в рамках запуска Silo. После просмотра следующего сообщения вы будете готовы запустить клиент:
Application started. Press Ctrl+C to shut down.
В каталоге клиентского проекта выполните ту же команду .NET CLI в отдельном окне терминала, чтобы запустить клиент:
dotnet run
Дополнительные сведения о запуске приложений .NET см. в разделе dotnet run. Если вы используете Visual Studio, вы можете настроить несколько запускаемых проектов.
См. также
- список пакетов Orleans
- руководство по настройке Orleans
- Orleans рекомендации