Задать вопрос
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (40)

Лучшие ответы пользователя

Все ответы (69)
  • Как написать Dockerfile для asp.net приложения с такой архитектурой?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    У вас проблема в зависимостях
    Даже по логу вам говорится:
    /app/server_app.Domain/Model/Queries/ProductCategoryCreateQuery.cs(3,17): error CS0234: The type or namespace name 'AspNetCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/app/server_app.Domain/server_app.Domain.csproj]


    А конкретно проблема в этом
    server_app/server_app.Domain/server_app.Domain.csproj
    <ItemGroup>
            <Reference Include="FluentValidation">
                <HintPath>..\..\..\..\.nuget\packages\fluentvalidation\11.11.0\lib\net8.0\FluentValidation.dll</HintPath>
            </Reference>
            <Reference Include="Microsoft.AspNetCore.Http.Abstractions">
                <HintPath>..\..\..\..\.nuget\packages\microsoft.aspnetcore.app.ref\8.0.8\ref\net8.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
            </Reference>
            <Reference Include="Microsoft.AspNetCore.Http.Features">
                <HintPath>..\..\..\..\.nuget\packages\microsoft.aspnetcore.app.ref\8.0.8\ref\net8.0\Microsoft.AspNetCore.Http.Features.dll</HintPath>
            </Reference>
            <Reference Include="Microsoft.AspNetCore.Mvc.Abstractions">
                <HintPath>..\..\..\..\.nuget\packages\microsoft.aspnetcore.app.ref\8.0.8\ref\net8.0\Microsoft.AspNetCore.Mvc.Abstractions.dll</HintPath>
            </Reference>
            <Reference Include="Microsoft.AspNetCore.Mvc.Core">
                <HintPath>..\..\..\..\.nuget\packages\microsoft.aspnetcore.app.ref\8.0.8\ref\net8.0\Microsoft.AspNetCore.Mvc.Core.dll</HintPath>
            </Reference>
            <Reference Include="Microsoft.IdentityModel.Tokens">
                <HintPath>..\..\..\..\.nuget\packages\microsoft.identitymodel.tokens\7.1.2\lib\net8.0\Microsoft.IdentityModel.Tokens.dll</HintPath>
            </Reference>
            <Reference Include="Npgsql.EntityFrameworkCore.PostgreSQL">
              <HintPath>..\..\..\..\.nuget\packages\npgsql.entityframeworkcore.postgresql\9.0.2\lib\net8.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll</HintPath>
            </Reference>
        </ItemGroup>


    Вы буквально указали путь к конкретным dll на вашем компьютере, и из-за этого в докер они не попадают, а dotnet restore их просто игнорирует. Эти зависимости должны быть в общем списке, как в блоке ItemGroup ниже этого, но проблема на самом деле куда глобальнее.

    Как я понимаю, вы только изучаете DDD, и сделали самую фатальную ошибку в дизайне, Domain не должен отвечать за БД, JWT, модели, DTO и тд. Domain должен концентрировать именно бизнес-сущности и бизнес-логику (Entities & Buisness Services). Application слой уже отвечает за сценарии использования приложения (CQRS или Use Cases, которые оперируют сущностями/сервисами из Domain, а для инфраструктурных моментов использует интерфейсы - dependency inversion). Инфраструктурный слой реализует интерфейсы из Application слоя, например, репозитории бд, http-клиенты и тд, соответственно в нём концентрируется вся работа с БД и другими внешними сервисами. Presentation слой отвечает за представления, это может быть ASP.NET Core API. В таком случае, здесь уже используются модели, JWT, вызов Use Cases из слоя Application, в общем всё, что касается предоставления API.

    Это если очень коротко, тема довольно обширная и сложная.
    Советую вам почитать:
    Мартин Роберт - Чистая архитектура. Искусство разработки программного обеспечения
    Эрик Эванс - Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем

    Также именно для C# есть прекрасный пример проекта с использованием подходов CA и DDD, изучите его, необязательно делать всё под копирку, но полезным точно будет.

    Удачи Вам!
    Ответ написан
    1 комментарий
  • Как правильно принять json в laravel?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    На стороне лары можно вот так:
    https://laravel.com/docs/8.x/requests#retrieving-j...
    Но в запросе должен быть заголовок
    Content-Type: application/json
    Ну и валидировать можно спокойно
    https://laravel.com/docs/8.x/validation#validating...
    Ответ написан
    Комментировать
  • TXT или JSON - Что лучше?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Судя по вопросу вы не очень понимаете, какие проблемы решают большинство СУБД помимо самого хранения.
    Так вот это ACID (атомарность, согласованность, изолированность, стойкость).
    Если вы будете реализовывать хранение в txt или json файле, вам придётся самим решать эти проблемы, а решаются они далеко не просто.
    Так что не создавайте себе проблемы и возьмите SQLite, если вам так сильно не хочется устанавливать MySQL или любую другую серьёзную СУБД.
    Ответ написан
    8 комментариев
  • Как идеологически правильно делать Lazy Load и делать ли её вообще?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Есть магический метод __get (с двумя нижними подчёркиваниями)
    class Category
    {
        private $children = null;
    
        public function __get($property)
        {
            if ($property === 'children') {
                if ($this->children !== null) return $this->children;
                else {
                    $this->children = $this->getChildren();
                    return $this->children;
                }
            } else {
                throw 'Undefined property';
            }
        }
    
        private function getChildren()
        {
            // TODO: запрос к базе и получение результата
        }
    }
    
    $category = new Category();
    someAction($category->children); // в первый раз будет запрос
    showSubCategories($category->children); // второй и послудеющий раз возьмёт уже из приватного поля

    А к вопросу нужности - зачастую в ORM это настраивается, какие поля брать сразу, а какие лениво. Так что полностью зависит от задачи.
    Ответ написан
    Комментировать
  • Почему возвращает text/html вместо application/json?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Попробуйте добавить HTTP-заголовок
    Accept: application/json
    Ответ написан
    2 комментария