1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liuhll2-silky

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

docker-compose.zookeeper.yml up -d

  1. Установите и разверните службу кэширования Redis, скопируйте файл docker-compose.redis.yml из репозитория GitHub по ссылке и сохраните его локально. Затем выполните следующую команду для установки службы Redis:
docker-compose -f docker-compose.redis.yml up -d

Создание шлюза

  1. Создайте новый проект WebApplication с именем Gateway. Установите пакет Silky.Agent.Host и добавьте код для создания хоста управляемого шлюза в классе Program.cs:
using Gateway;

var hostBuilder = Host.CreateDefaultBuilder()
    .ConfigureSilkyGatewayDefaults(webHostBuilder => webHostBuilder.UseStartup<Startup>());
await hostBuilder.Build().RunAsync();
  1. Добавьте класс Startup.cs и добавьте следующий код:
namespace Gateway;

public class Startup
{
    public void ConfigureService(IServiceCollection services)
    {
        services.AddSilkyHttpServices()
            .AddRouting()
            .AddSwaggerDocuments()
            .AddMiniProfiler();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseSwaggerDocuments();
            app.UseMiniProfiler();
        }

        app.UseRouting();
        app.UseEndpoints(endpoints => { endpoints.MapSilkyRpcServices(); });
    }
}
  1. Удалите файл .json с конфигурацией и создайте новый файл appsettings.yaml с конфигурацией:
rpc:
  token: ypjdYOzNd4FwENJiEARMLWwK0v7QUHPW
 
registrycenter:
  type: Zookeeper
  connectionStrings: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183;127.0.0.1:2184,127.0.0.1:2185,127.0.0.1:2186
distributedCache:
  redis:
    isEnabled: true
    configuration: 127.0.0.1:6379,defaultDatabase=0
  1. Запустите проект шлюза и проверьте адрес, на котором работает HTTP-сервис (например, порт HTTPS равен 7160). Затем откройте Swagger онлайн-документацию через браузер по адресу https://127.0.0.1:7160/index.html. Если сервис не добавил никаких приложений, то в документации Swagger не будет никаких интерфейсов.

Бизнес-микросервисы

  1. Создайте проект с именем DemoHost в качестве консольного приложения. Установите пакет Silky.Agent.Host и добавьте код для создания хоста приложения в классе Program.cs:
using Microsoft.Extensions.Hosting;

var hostBuilder = Host.CreateDefaultBuilder().ConfigureSilkyGeneralHostDefaults();
await hostBuilder.Build().RunAsync();                      
  1. Создайте файл appsettings.yaml и добавьте конфигурацию:
rpc:
  token: ypjdYOzNd4FwENJiEARMLWwK0v7QUHPW
  port: 2200
 
registrycenter:
  type: Zookeeper
  connectionStrings: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183;127.0.0.1:2184,127.0.0.1:2185,127.0.0.1:2186

distributedCache:
  redis:
    isEnabled: true
    configuration: 127.0.0.1:6379,defaultDatabase=0
  1. Создайте папку Hello и добавьте интерфейс IHelloAppService:
[ServiceRoute]
public interface IHelloAppService
{
    Task<string> SayHi([FromQuery]string name);
}
  1. Создайте класс HelloAppService и реализуйте интерфейс IHelloAppService:
public class HelloAppService : IHelloAppService
{
    public Task<string> SayHi(string name)
    {
        return Task.FromResult($"Hello {name ?? "World"}");
    }
}
  1. Запустите проект DemoHost и обновите Swagger онлайн-документацию в браузере. Вы увидите следующий интерфейс, который можно использовать для онлайн-отладки веб-API через документацию Swagger:

Способы вызова сервисов между сервисами

  1. Вы можете вызывать интерфейсы других микросервисов, ссылаясь на их библиотеки. Другие микросервисы могут быть упакованы в пакеты NuGet, которые затем устанавливаются через NuGet. Через внедрение конструктора вы можете напрямую использовать методы, определённые в интерфейсе, для реализации RPC-коммуникации с поставщиком услуг через динамический прокси интерфейса:

Например, в проекте Silky.Hero в PermissionManager.cs:

public class PermissionManager : IPermissionManager, IScopedDependency
{
    private readonly IUserAppService _userAppService;
    private readonly IRoleAppService _roleAppService;

    public PermissionManager(IUserAppService userAppService,
        IRoleAppService roleAppService)
    {
        _userAppService = userAppService;
        _roleAppService = roleAppService;
    }

    public async Task<ICollection<string>> GetUserRoleNamesAsync(long userId)
    {
        var userRoleOutput = await _userAppService.GetRolesAsync(userId);
        return userRoleOutput.RoleNames;
    }

    public async Task<ICollection<long>> GetUserRoleIdsAsync(long userId)
    {
        var userRoleIds = await
``` ```
-in, --infrastr                only include basic service orchestration files
  类型: bool
  默认: false

-e, --env <env>                Set dotnet env
  类型: string
  默认: Development

-m, --module                   Is it a module project
  类型: bool
  默认: false

-p:i, --includeinfr            Whether to include the basic orchestration service.
  类型: bool```

**Пример:**

```pwsh
# 创建网关
> dotnet new silky.app -t gateway -n Silky.Gateway

# 创建业务微服务
> dotnet new silky.app -t generalhost -n Silky.Demo

Вклад

Вклад можно сделать разными способами. Один из самых простых — обсуждение вопросов (issues). Также можно внести свой вклад через отправку кода с изменениями в виде Pull Request.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C# и 6 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/liuhll2-silky.git
git@api.gitlife.ru:oschina-mirror/liuhll2-silky.git
oschina-mirror
liuhll2-silky
liuhll2-silky
main