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

    @kttotto
    пофиг на чем писать
    Мы делали крупные проекты с vue, но это не было полноценным spa и не микросервисная архитектура. У нас просто было несколько entry, которые мы использовали для разных разделов.

    Мое мнение, если никто из вас раньше не имел дело с микросервисами, то с ходу не беритесь. Угрохаете кучу времени просто на один каркас и не факт, что все будет работать хорошо с точки зрения надежности и безопасности.

    Я бы начал с монолита, но с расчетом на то, чтобы потом его с минимальными затратами можно было разбить на части. Во первых быстрее получите первую версию, во вторых со временем виднее будут видны границы модулей, легче будет понять, что именно можно или нужно выделить в микросервис, вы воочию увидите что и с чем общается. Чтобы при первом проектировании правильно эти границы определить, нужно иметь какой то опыт с микросервисами. Я так понял, что у вас его нет или он минимальный.

    На мой взгляд, самый главный плюс микросервисов в том, что уменьшается стоимость ошибки решения по архитектуре (микросервиса), ибо его легче переписать, чем править и рефакторить. Ну и еще хорошо, что обновлять можно частями, не пересобирать сразу все при каждой выкладке. В монолите, чем дальше, тем сложнее то-то глобально изменить и очень важно на начальном этапе не ошибиться.

    Безболезненно переписать модуль на vue проблем нет при любых раскладах. Только если не решите на ангуляр перейти, тут я сомневаюсь, что его можно точечно использовать в проекте. У нас как то был большой легаси проект, монолит, который был на jq, мы сначала решили добавить knockout, нам не понравилось, дальше продолжали на vue.
    Ответ написан
    1 комментарий
  • Как называть свои свойства и методы при наследовании от других классов?

    @kttotto
    пофиг на чем писать
    Использовать пространства имен.
    Ответ написан
    Комментировать
  • Какие блоки должны быть при создании теста?

    @kttotto
    пофиг на чем писать
    Вы вообще не выполнили задание. Вы не спроектировали систему, а скорее разработали методологию.
    У Вас в тз указаны основные хотелки заказчика, о них в Вашем решении даже слова нет. Нужно было выделить основные компоненты проекта и его взаимосвязи. В простейшем варианте есть три режима: отображение, редактирование, прохождение; Вам нужно было создать карту, как пользователь входит приложение, какие режимы ему доступны, при каких условиях. При входе в режим редактирования, какие действия ему доступны: добавить тест - добавить имя тесту, добавить вопрос и т.д. Далее режим прохождения теста, какие условия при этом должны соблюдаться. Ну общий смысл надеюсь Вы поняли.
    Ответ написан
    Комментировать
  • Как в RabbitMQ, или без него, настроить классическую очередь?

    @kttotto
    пофиг на чем писать
    Не совсем понятно, зачем очередь на каждом компьютере? По сути очередь нужна только на компьютере №2. Все клиенты отправляют на него отчет, отчеты кладутся в очередь, компьютер №1 забирает их из этой очереди. И очередь для того и нужна, чтобы не зависеть, в сети ли компьютер №1. Все сообщения будут лежать в очереди, пока первый их не заберет. Если в течении какого то времени сообщение не забрали, клиенту дается ответ, что первый не доступен и клиент через таймаут шлет очередное сообщение.

    Каждый клиент имеет свой идентификатор, каждый отчет свой идентификатор и если в очереди оказалось несколько сообщений от одного клиента и с одним идентификатором отчета, то учитывается последний по дате. Ну в принципе и все.
    Ответ написан
  • Как реализовать фабричный метод без switch?

    @kttotto
    пофиг на чем писать
    Вы же сами ответили на свой вопрос - фабричный метод. Описание и реализация этого паттерна есть для всех языков вики
    По поводу "отдельных фабрик" не совсем понятно. Сам по себе паттерн абстрагирует логику принятия решения о создании объекта. Эта логика основана на каком то условии: switch / нескольких if / отдельных фабрик. Во что Вы обернете это условие - Ваш выбор.
    Ответ написан
    2 комментария
  • Существуют ли паттерны программирования, чтобы упростить большое кол-во условий?

    @kttotto
    пофиг на чем писать
    Если условия не линейные, то это "конечный автомат".
    Ответ написан
    Комментировать
  • Какую архитектуру выбрать для SPA?

    @kttotto
    пофиг на чем писать
    Если не имели дело с react/vue, то быстрее будет на js+jq, ангуляр для этого случаю можно отбросить. Я так понимаю сервис сам по себе не большой, поэтому кода много не будет. В виджет отдали селектор, внутри он сгенерировал разметку и обработчики, все запросы аяксом.
    Ну а если есть время и желание, то react/vue будет самое оно, это их дело компоненты стругать, на выходе у Вас будет js с нужным апи.
    Ответ написан
    Комментировать
  • Как правильно построить n-layer архитектуру приложения ASP.NET MVC?

    @kttotto
    пофиг на чем писать
    В отдельный слой следует выделять только то, что подвержено изменениям при поддержке, либо будет использоваться как компонент еще где-то. Стандартно это ui/web, dal, business-logic. Иногда в отдельный слой выносят модели, т.к. они могут использоваться как промежуток между разными слоями, особенно если это dto модели.
    Ответ написан
    Комментировать
  • Как правильно обрабатывать ошибки в C#?

    @kttotto
    пофиг на чем писать
    Есть еще такая штука как Contract. Многие предпочитают им пользоваться вместо try/catch.
    Ответ написан
    Комментировать