Skip to content

Latest commit

 

History

History
86 lines (67 loc) · 3.11 KB

File metadata and controls

86 lines (67 loc) · 3.11 KB

Создание проекта

Для начала разработки собственных модулей расширения linux создадим структуру проекта. В будущем его можно использовать для обогащения операций необходимой логикой работы.

Создание шаблона проекта

Создайте проект из шаблона dotnet

Используя visual studio создадим проект из шаблона dotnet grpc api.

Подробнее:

Добавляем в папку Protos необходимые прото файлы, для примера возьмем:

//Тип используемого синтаксиса
syntax = "proto3";
//Пространство имен, которое будет использоваться с этим сервисом
option csharp_namespace = "SnmpExample";
//Название пакета
package example;
//Имя сервиса
service MyProtoService
{
//Название функции
  rpc SendPing (PingRequest) returns (PingReply);
}
//Класс передаваемый сервису
message PingRequest
{
  string requestString = 1;
}
//Класс получаемый в ответ
message PingReply
{
  string respondString = 1;
}

Добавим ссылку на прото-файлы в проект:

 <ItemGroup>
  <Protobuf ProtoRoot="../" Include="Protos/*.proto" AdditionalImportDirs="Protos/" OutputDir="$(IntermediateOutputPath)/%(RecursiveDir)" />
 </ItemGroup>

Реализуем простейший grpc сервис для подключенного протофайла:

using Grpc.Core;

namespace SnmpExample.Services
{
    // Наша реализация grpc сервиса
    public class MyService : MyProtoService.MyProtoServiceBase
    {
        // Наша реализация rpc SendPing
        public override Task<PingReply> SendPing(PingRequest request, ServerCallContext context)
        {
            return Task.FromResult(new PingReply { RespondString = "Respond string"});
        }
    }
}

Скофигурируем приложение и grpc-сервер в Program.cs:

var builder = WebApplication.CreateBuilder(args);
//Добавление grpc функционала в конструтор
builder.Services.AddGrpc();

var app = builder.Build();
//Добавление сервиса в приложение
app.MapGrpcService<MyService>();
app.Run();

На данном этапе пустой шаблон модуля расширения готов для локального запуска.

Для подключения модуля к системе необходимо настроить Dockerfile и docker-compose.yaml, подробную информацию об этом можно найти в директории deploy.

Пример готового шаблона модуля расширения находится в директории project.