Челаев Петр Лаб. 1 Группа 6512#14
Conversation
ProgramProject.AppHost/AppHost.cs
Outdated
| @@ -0,0 +1,15 @@ | |||
| var builder = DistributedApplication.CreateBuilder(args); | |||
|
|
|||
| var cache = builder.AddRedis("cache"); | |||
There was a problem hiding this comment.
К редису добавить контейнер с вебмордой
ProgramProject.AppHost/AppHost.cs
Outdated
| .WithReference(cache) | ||
| .WaitFor(cache); | ||
|
|
||
| // ������� ������� |
ProgramProject.AppHost/AppHost.cs
Outdated
| // ������� ������� | ||
| var client = builder.AddProject<Projects.Client_Wasm>("client-wasm") | ||
| .WithExternalHttpEndpoints() | ||
| .WithReference(generationService); |
There was a problem hiding this comment.
Точно надо .WithReference(generationService)?
Я бы добавил .WaitFor(generationService)
| <PackageReference Include="Aspire.Hosting.AppHost" Version="13.1.1" /> | ||
| <PackageReference Include="Aspire.Hosting.Redis" Version="13.1.1" /> |
There was a problem hiding this comment.
Извините, вот этого замечания не понял? Какие пакеты версии разные? Наоборот они вроде одни и те же
There was a problem hiding this comment.
Выше в этом файле
<Sdk Name="Aspire.AppHost.Sdk" Version="9.3.1" />
Давай остановимся на версии 9.5.2
| <ItemGroup> | ||
| <ProjectReference Include="..\Client.Wasm\Client.Wasm.csproj" /> | ||
| <ProjectReference Include="..\ProgramProject.GenerationService\ProgramProject.GenerationService.csproj" /> | ||
| <ProjectReference Include="..\ProgramProject.ServiceDefaults\ProgramProject.ServiceDefaults.csproj" /> |
| var uri = new Uri(origin); | ||
| return uri.Host == "localhost"; |
| var uri = new Uri(origin); | ||
| return uri.Host == "localhost"; | ||
| }) | ||
| .AllowAnyMethod() |
| f.PickRandom(new[] | ||
| { | ||
| f.Commerce.ProductName() + " " + f.Hacker.Abbreviation(), | ||
| "Project " + f.Hacker.Noun(), | ||
| f.Finance.AccountName() + " System", | ||
| f.Lorem.Word() + "-" + f.Lorem.Word() | ||
| })) |
There was a problem hiding this comment.
f.PickRandom(
f.Commerce.ProductName() + " " + f.Hacker.Abbreviation(),
"Project " + f.Hacker.Noun(),
f.Finance.AccountName() + " System",
f.Lorem.Word() + "-" + f.Lorem.Word()
))
| /// <summary> | ||
| /// Название проекта: комбинация из Commerce, Hacker, Finance, Lorem | ||
| /// </summary> | ||
| .RuleFor(p => p.Name, f => |
There was a problem hiding this comment.
Тут и в других местах используй по необходимости однострочные комментарии (//) для пояснения логики кода
XML-комментарии используй для документирования классов и методов, а не внутренней реализации
| .FinishWith((f, p) => | ||
| { | ||
| if (p.ActualEndDate.HasValue) | ||
| { | ||
| p.CompletionPercentage = 100; | ||
| } | ||
| }); |
Gwymlas
left a comment
There was a problem hiding this comment.
Общее замечание: пробежаться по коду и добавить summary к классам и методам, где необходимо
ProgramProject.AppHost/AppHost.cs
Outdated
| .WithReference(cache) | ||
| .WaitFor(cache); | ||
|
|
||
|
|
| // Бюджет: от 10k до 1M | ||
| .RuleFor(p => p.Budget, f => f.Finance.Amount(10000, 1000000, 2)) | ||
|
|
||
|
|
| _faker = faker; | ||
| _logger = logger; | ||
|
|
||
| var cacheMinutes = configuration.GetValue<int>("Cache:ExpirationMinutes", 5); |
There was a problem hiding this comment.
<int> не нужен, тип определяется по дефолтному значению
| [HttpGet("{id}")] | ||
| public async Task<ActionResult<ProgramProjectModel>> GetProject(int id) |
There was a problem hiding this comment.
Добавить атрибуты с возвращаемыми типами
| [ApiController] | ||
| public class ProjectsController(IProjectService projectService, ILogger<ProjectsController> logger) : ControllerBase | ||
| { | ||
| [HttpGet("{id}")] |
There was a problem hiding this comment.
Добавить ограничение типа параметра
[HttpGet("{id:int}")]
There was a problem hiding this comment.
Оставить только 1 метод, который используется фронтом
| public ProgramProjectModel Generate() | ||
| { | ||
| return _faker.Generate(); | ||
| } |
There was a problem hiding this comment.
Можно так
public ProgramProjectModel Generate() =>
_faker.Generate();
| var cachedProject = JsonSerializer.Deserialize<ProgramProjectModel>(cachedBytes); | ||
| _logger.LogInformation("Проект с ID {ProjectId} найден в кэше", id); | ||
| return cachedProject!; |
There was a problem hiding this comment.
Возможна ситуация, при которой в кэше будет null. Лучше проверить значение, если null, сгенерировать новый объект
| }); | ||
| }); | ||
|
|
||
| builder.Services.AddSingleton<ProgramProjectFaker>(); |
There was a problem hiding this comment.
Выделить интерфейс и регистрировать в di через него
| </PropertyGroup> | ||
|
|
||
| <ItemGroup> | ||
| <PackageReference Include="Aspire.StackExchange.Redis.DistributedCaching" Version="13.1.1" /> |
ФИО: Челаев Петр
Номер группы: 6512
Номер лабораторной: 1
Номер варианта: 35
Краткое описание предметной области: Программный проект
Краткое описание добавленных фич: Добавлен сервис генерации и кэширование