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

    vabka
    @vabka
    Токсичный шарпист
    С точки зрения архитектуры это нормально.
    Но чтобы ответить, правильно ли это вообще - нужно больше данных.
    Ответ написан
    Комментировать
  • Как авторизовывать запросы между микросервисами?

    vabka
    @vabka
    Токсичный шарпист
    Пусть будет какой-то один сервис авторизации, который выдаёт jwt токены
    Ответ написан
    2 комментария
  • Какая операционная система была взята за основу при разработке OpenOS из мода OpenComputers?

    vabka
    @vabka
    Токсичный шарпист
    Никакая. "ОС" в opencomputers - это просто скрипт на lua, который имитирует своим поведением работу операционной системы.
    Ответ написан
    2 комментария
  • Какую архитектуру использовать в ASP.NET Web API?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    В реальных проектах используют разные варианты исходя из личного опыта и настроения каждого члена команды на момент старта проекта.

    Может быть и супер сложный clean architecture + DDD + CQRS.
    Может быть Vertical Slice.
    А может быть и предельно простая архитектура даже без разделения на проекты (крайне недооценённый вариант на самом деле)

    У всего есть свои плюсы и минусы.
    Ответ написан
    Комментировать
  • NET application with plugin. Как реализовать?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Чтобы UI был, нужно чтобы плагины либо сами html генерировали, либо чтобы они генерировали какое-то абстрактное представление, которое уже ты как-то переведёшь в html.

    В принципе тут даже не обязательно razor использовать.

    Как подгружать плагины, я думаю, вы уже знаете.
    Ответ написан
    Комментировать
  • Может ли быть MVC Без views?

    vabka
    @vabka
    Токсичный шарпист
    View - это не всегда то, что видит пользователь.
    Под View также вполне подпадает json-объект, который возвращает контроллер в случае апишки.


    Или для чистого API есть более подходящие архитектуры?

    MVC - это не то чтобы архитектура, строго говоря. Скорее паттерн, который может быть реализован по разному.
    У тебя есть какие-то объекты-представления, которые отдаются клиенту, какая-то модель предметной области, в которой описаны все ограничения и возможные операции, и контроллер, который гоняет из одного в другое.

    PS: Не нужно придумывать красивое название для архитектуры, чтобы писать нормально.

    А так вообще для вдохновения посмотри на:
    - Hexagonal architecture
    - Onion architecture
    - Clean architecture
    - Ports and adapters
    - N-tier architecture
    - Vertical slice architecture
    Ответ написан
    1 комментарий
  • Где взглянуть на C# проект с "эталонной" архитектурой?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    В общем, условно, такой код, глядя на который, даже самые суровые критики не могли бы найти к чему придраться.

    Всегда можно к чему-то придраться.
    Качество архитектуры можно понять только в динамике - легко ли вносить изменения в продукт, или сложно.
    А так есть eShopOnWeb и eShopOnContainers
    Ответ написан
    Комментировать
  • Что посоветуете для создания сетевого приложения?

    vabka
    @vabka
    Токсичный шарпист
    1. Давать доступ к базе напрямую - это небезопасно. Лучше ещё апишку, например, на aspnet core написать, которая будет отвечать за аутентификацию/авторизацию пользователя, и будет предоставлять доступ к нужным данным.
    2. Лучше развернуть базу и апишку на VPS-ке, чтобы не было проблем с подключением и работало оно круглосуточно.
    Ответ написан
  • Допустим мне нужно по-быстрому слепить MVP для небольшой CRM - есть ли средства более быстрые, чем PHP-фреймворки?

    vabka
    @vabka
    Токсичный шарпист
    есть ли средства более быстрые, чем PHP-фреймворки?

    Да, готовая CRM или какое-нибудь lowcode-решение, где половина крупных модулей уже написана.
    Ответ написан
    2 комментария
  • Контроллер одного действия в MVC?

    vabka
    @vabka
    Токсичный шарпист
    Если тебе так удобнее будет поддерживать - почему нет?
    Такой подход много где применяется и он точно лучше, чем божественные контроллеры
    Ответ написан
    3 комментария
  • Как сделать VPN сервер для iOS клиентов на 10000 пользователей?

    vabka
    @vabka
    Токсичный шарпист

    откуда лучше брать сервера?

    Поднять свои.


    Получается должен быть какой-то Бекенд, на чём его писать?

    На том, на чём умеешь.

    Какие нагрузки он может выдерживать, тут ещё получается надо бы, чтобы эта система сама себя масштабировала, сигнализировала, если сервера перегружены, чтобы надо было ещё подключить.

    Ну тебе с твоего бэкенда надо будет собирать метрики по задержкам, нагрузке на CPU, и RAM.
    Решений этой задачи много. Гугли "сбор метрик с бэкенда".

    Автоматическое масштабирование - тема отдельная и достаточно сложная.

    Может быть есть уже какой-то готовый сервис который предлагает готовое решение

    Да, есть. Многие vpn-провайдеры имеют так называемую услугу "white label" - они сами делают клиент с твоим логотипом, названием, и может даже дизайном, но за инфраструктуру отвечать будут уже они.

    Быстро и по сути ноль головной боли, если у тебя задача просто сделать свой vpn-сервис
    Ответ написан
    Комментировать
  • Стоит ли делать для своей игры лаунчер?

    vabka
    @vabka
    Токсичный шарпист
    Лично я вижу только одну причину иметь самостоятельный лаунчер - ты хочешь распространятся независимо от сервисов онлайн-дистрибуции типа стима, но при этом ты хочешь, чтобы игрок мог легко получать все обновления.
    Ответ написан
    Комментировать
  • Что выбрать grpc или graphql?

    vabka
    @vabka
    Токсичный шарпист
    Выбирай от того, как предполагается использовать.
    Если ты разрабатываешь и клиент и сервер, и при этом клиент нормально умеет в grpc (не браузер) - бери grpc.
    Если ты разрабатываешь только сервер, а клиенты разные с разными потребностями - тогда graphql.
    Ну и никто не запрещает комбинировать - можешь сделать сервер с grpc, а клиентский api предоставлять с graphql
    Ответ написан
    Комментировать
  • Критерии оценки веб приложений?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    Критерии оценки зависят от того, кто и зачем оценивает.
    Хорошесть опять же зависит от того кто оценивает.

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

    Так что определяй сам для себа важные моменты и формируй от них критерии оценки.
    Ответ написан
    Комментировать
  • Что представляю из себя use cases из clean architecture в MVC?

    vabka
    @vabka
    Токсичный шарпист
    Однако возник вопрос относительно красного слоя - use cases

    Use-cases это то, как пользователь взаимодействует с вашим приложением. (написано Application Business Rules)

    Entities - данные и правила работы с ними (написано Entreprise Business Rules)

    Я правильно понимаю что в классическом MVC красный и зеленый слои не разделяются, т.к. логика пишется в контроллерах (или моделях, неважно). Или же зеленый слой представляет из себя только роуты, а красный - контроллеры, модели?

    В контроллерах пишется только логика, которая склеивает модель и вьюшку. В идеальном случае контроллеры должны быть однострочными

    Также не особо понял почему Робер выделяет в самый верхний слой Базу данных.

    В самом ядре находятся сущности, которые не обязаны 1-в-1 преобразовываться в модели БД.
    Сам слой с базой данных - это External Interfaces, как и фреймворк.
    т.к. нижележащие слои полюбому будут с ней взаимодействовать, нарушая правило зависимостей. Разве не так?

    В том и смысл Clean Architecture, что никто от БД не зависит.
    Должна быть какая-нибудь абстракция, которая позволяет получать данные, а в отдельном модуле уже будет реализация поверх БД.
    Об этом в той самой книжке тоже говорится с соответствующими картинками.
    Ответ написан
    Комментировать
  • Есть ли способ serverless функции выполнять дольше часа?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    В AWS есть Fargate - все долгие операции можно скидывать в него.
    Ответ написан
    Комментировать
  • Может ли реализация класса зависеть от внешних модулей?

    vabka
    @vabka
    Токсичный шарпист
    Всё верно. Лучше зависимости передавать через конструктор
    Ответ написан
    Комментировать
  • Как назвать такую конструкцию?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Назвать кэшем может быть?
    А вообще не вижу никаких проблем в том, чтобы сделать это экземпляром - надо будет просто прокидывать его в конструкторы всех классов, которые от него зависят.
    Ответ написан
  • Как правильно организовать код на Java?

    vabka
    @vabka
    Токсичный шарпист
    Напишу псевдокодом:
    пусть значение = получить_значение_из_поля();
    пусть результат = запросить(значение);

    Вообще, порождать новые потоки на каждый запрос - это не очень. Лучше использовать асинхронщину. Хз что там в жаве для этого есть, если честно.
    Для парсинга ответа есть GSON.
    Если бы вы использовали kotlin, то я бы посоветовал использовать ktor или http4k
    Ответ написан
    Комментировать
  • Как реализовать бред заказчика?

    vabka
    @vabka
    Токсичный шарпист
    Кажется, я понял, что вам нужно.

    1. Выделяете некоторые ядро сервиса, без которого он в принципе не может работать.
    2. Остальной код режете на независимые куски, которые можно будет динамически подключить при запуске - плагины. (То, что заказчик назвал классами)
    3. Пишете инструкцию по развёртыванию и автоматические скрипты / dockerfile / whatever

    И делаете какую-нибудь веб-морду, через которую клиент может выбрать, какие ему нужны плагины и он получит архив/инсталлятор/образ со всем, что ему нужно и инструкцию.

    Оплата, если нужна, то надо будет что-то пидумывать.
    Ответ написан
    Комментировать