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

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

Целый день сегодня мучился над планированием архитектуры бизнес логики приложения наподобие твиттера. Проект делаю для себя — для опыта. Написал список необходимых модулей/возможностей сайта и приблизительную реляционную модель, а дальше дело остановилось. Почему-то не получается абстрагироваться и придумать как будет выглядеть взаимодействие бизнес сущностей. Все упирается на конкретизации того, как будет получаться список пользователей и прочих тривиальных задачах. Хоть бизнес логика в такого проекта по идее и не сложная... Возможно проблема в том, что я стараюсь придумать сложность на пустом месте, и все можно реализовать практически простыми запросами к репозиториям.

Вечером пришла мысль, что в десктопных приложениях, в которых при каждом взаимодействии пользователя все данные не перезагружаются, все как-то проще придумывать. Решил для примера спроектировать аудиоплеер. Все оказалось намного проще. Сразу же сформировалась простенькая архитектурка необходимая в конкретных требованиях. UML диаграмма: i.piccy.info/...​956633/Bezymian212nyi.png Извините за возможные ошибки в диаграмме, делал быстро и в полусонном состоянии, к тому же не очень фамильярен с UML, недавно начал изучать. Конечно же это простенькое приложение не в пример проще, чем в реальной жизни случается, но я уверен, что если бы пришлось расширять такую систему я бы справился.

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

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Серебряной фишки здесь нет, просто нужен опыт. Новички любят все усложнять и «проектировать архитектуру». Со временем это пройдет. :)

Неплохой вариант может быть изучить как спроектированы несколько open source приложений, десктоп и веб. Только небольших. Flask, например.

В общем что думаете? Это только мне одному проще придумывать настольную архитектуру
Это не та архитектура, на основе которой вы можете делать подобные выводы ;)
Applying UML and Patterns (3е издание, PDF-ка гуглится без проблем) — как придумывать дэсктопную архитектуру

но ответом на ваш вопрос, будет скорее-всего что-то типа такого: всё зависит от опыта конечного индивида, специфики и особенностей разрабатываемой системы.

Ну то что аудиоплеер получился проще, то не удивительно. Его визуальная часть хорошо может быть смоделирована объектами, что и наблюдаем. Бизнес процессы же объектами моделируются плохо, плохо и пишутся чистыми объектами (отсюда интерес в FT, DDD).

Попробуйте другой подход с твиттероубийцей. Отбросьте реляционную модель, оставьте только «необходимые возможности». Их постарайтесь разложить на мелкие кусочки, приоритезировать и программировать по одному. Желательно сначала тесты (хоть даже и ручные, лучше было бы автоматом конечно), затем быстрое и грязное решение, потом — полировка до приятности себе. Последний шаг самый важный, особенно в обучении. Если получится дойти таким путем, то можно научиться многим полезным вещам: TDD (если тесты не проскипал), refactoring, emergent architecture. Каждая из них на порядок полезнее абстрактного моделирования в сферическом вакууме.

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

разница между вебом и десктопом в том что в декстопе есть state (состояние) все хранится в памяти (переменных). в вебе нужно где-то между перезагрузками данных надо state как-то передать. в принципе если сделать синглтон класс который сам себя автоматом создает один раз и сохраняет инстанс в сессию (или еще куда-то) можно работать примерно также.

синглтон класс который сам себя автоматом создает один раз и сохраняет инстанс в сессию
Это я так понимаю вебформс подход?

upd: Хотя нет, это по другому устроено. А это нормальное решение или оно может быть чревато багами?

MVC оно и в африке мвц. а там либо орм либо ручные модели
в свое время когда с десктопа в веб переходил имелась некоторая «тонкость» с восприятием stateless подхода, но потом утряслось

А можно поподробнее? Как это утряслось?

Підписатись на коментарі