Ответы пользователя по тегу Проектирование программного обеспечения
  • Как реализовать SQL движок в своём приложении?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. GraphQL - специальный язык запросов. Можно изменять/обновлять/добавлять/читать. Есть полноценный пакет, который парсит запрос и выполняет его. Можно к In memory коллекциям подкрутить. Но это не SQL

    2. OData - тоже язык запросов. Можно изменять/добавлять/читать/удалять. Он достаточно старый и разобраться сложнее. Тоже есть фреймворк, который автоматизирует работу по парсингу/выполнению. Это также не SQL

    3. In Memory sqlite - можно запустить SQLite в памяти и проксировать запросы уже ему.
    Ответ написан
    Комментировать
  • На что опереться при проектировании API (паттерны, концепции)?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Ну я вроде и рассказал, что это противоречит тому же SOLID

    Проектировать API надо по требованиям предметной области.

    SOLID, REST и т.д. - это конечно же хорошо, но когда из-за них архитектура становится трудной к пониманию - тупое следование им только усугубит ситуацию.

    а почему я не могу в API сделать метод DELETE и в него передавать и тип объекта, и его id


    Почему нет? Если объекты создаются динамически, а не предопределены, то передавать их тип - хорошая идея.
    Все зависит от проблемы.

    Есть где кратко изложенная теория по этому поводу?


    Вряд-ли. Все зависит от проблемы/предметной области.
    Могу посоветовать алгоритм:
    1. Выявить функциональные требования к системе
    2. Представить их в виде условных функций
    3. Переписать их в виде вызовов API (за основу можно взять готовые паттерны проектирования: REST, SOAP и т.д.)

    Посмотрите на API VK или Telegram. Это не REST, но тоже удобно
    Ответ написан
    3 комментария
  • О чём архитектура ПО?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Я запутался, что в итоге такое архитектура? Это про код, про инфраструктуру или про технологии?

    Архитектура это про то, как компоненты связаны между собой.

    Заметь, что такое "компоненты" не сказано. Это может быть и код, и инфраструктура, и сервис.
    Например, архитектуру кода можно представить через диаграмму классов UML. Архитектуру инфраструктуры, можно через C4.

    Как понять о каком типе архитектуры речь, когда о ней заходит разговор?


    По контексту.
    Разговор о функции или классе - об архитектуре кода.
    Разговор о базе данных или сервисе - об архитектуре инфраструктуры.
    Ответ написан
    Комментировать
  • В чем разница между понятиями Anti-Corruption Layer и паттерном Adapter?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Anti-Corruption Layer - это понятие из DDD. Оно обозначает слой (это может быть отдельный сервис или функция валидации), который проверяет запрос на корректность.

    Адаптер - это больше паттерн проектирования, который, грубо говоря, трансформирует запрос из одного формата в другой. Например, из XML в JSON, или если стоит прокси, то превращает `X-Redirected-From` в `Redirected-From` в HTTP заголовках.

    Адаптер может выполнять роль Anti-Corruption Layer и наоборот
    Ответ написан
    Комментировать