Hello everyone,
I’m working on a content management application (wiki-style) developed in .NET Core 9, designed to be microservices-ready and modular достаточно, чтобы развиваться без тяжелого рефакторинга. Приложение будет работать на azure без контейнеров.
🏗 текущая архитектура (упрощенная представление)
blazor (режим для определения: Auto, wasm или сервер) → Debilts → Shareed
содержит все абстракции и интерфейсные контракты .
→ цель: уважение dry и solid и избегание дупликации в доменах. /> Каждый домен организован в несколько проектов: < /p>
- для services и Репозитории
Код: Выделить всё
.csproj
- для моделей
Код: Выделить всё
.csproj
- для Посев данных (исполняемый через pmc и yaml Pipeline )
Код: Выделить всё
.csproj
В настоящее время у меня есть домен Content/Contentmanagement . Я планирую добавить домен пользователей . Blazor Project с идентичностью, включенным с самого начала). < /li>
[*] безопасность API через jwt < /strong>. Выдержки < /h2>
Код: Выделить всё
EncyclOniria.Shared/Contracts/IRepository.cs
Код: Выделить всё
namespace EncyclOniria.Shared.Contracts
{
public interface IRepository where TEntity : class
{
Task GetByIdAsync(Guid id);
Task GetAllAsync();
Task AddAsync(TEntity entity);
void Update(TEntity entity);
void Remove(TEntity entity);
Task SaveChangesAsync();
}
}
< /code>
EncyclOniria.Shared/Data/BaseDbContext.cs
Код: Выделить всё
using Microsoft.EntityFrameworkCore;
namespace EncyclOniria.Shared.Data
{
public abstract class BaseDbContext : DbContext
{
public BaseDbContext(DbContextOptions options) : base(options) { }
}
}
< /code>
EncyclOniria.Content.Data/DesignTimeContentDbContextFactory.cs
Код: Выделить всё
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace EncyclOniria.Content.Data
{
public class DesignTimeContentDbContextFactory : IDesignTimeDbContextFactory
{
public ContentDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseSqlServer("Data Source=:memory:"); // placeholder
return new ContentDbContext(optionsBuilder.Options);
}
}
}
< /code>
EncyclOniria.Content.Seeders/ISeeder.cs
Код: Выделить всё
namespace EncyclOniria.Content.Seeders
{
public interface ISeeder
{
Task SeedAsync(CancellationToken cancellationToken = default);
string Name { get; }
}
}
< /code>
EncyclOniria.SeederRunner/Program.cs
using EncyclOniria.Content.Seeders;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddTransient();
services.AddTransient();
})
.Build();
using var scope = host.Services.CreateScope();
var seeders = scope.ServiceProvider.GetServices();
foreach (var seeder in seeders)
await seeder.SeedAsync();
< /code>
проверка архитектуры и микросервисы < /strong>
это звук архитектуры < /p>
- at ap at arty> at arty ap at yt arty> at arty> at arty>
. к лучшим практикам микросервисов? />
Я думал о создании выделенного домена счетов < /strong> и API для управления бэкэнд. Могу ли я по -прежнему:
Сохраняйте каркасы идентификации в Blazor и - Защитные API с JWT?
server < /strong>, wasm < /strong> или Auto < /strong>? /> Это суть этого - любое руководство, лучшие практики или опыт, которым вы могли бы поделиться, будет очень оценен. < /p>
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-secure-a