Фреймворки естественным образом влияют на дизайн определенных модулей и подсистем (таких как интерфейс GUI). Как уже упоминалось в другом ответе, вам будет трудно, если вы столкнетесь с выбранными вами рамками.
В более широком смысле, однако, вы должны избегать того, чтобы какая-либо отдельная структура или технология диктовала или управляла «общей картиной» вашей общей архитектуры системы. Большинство каркасов приложений общего назначения этого не поощряют, поэтому, если вы обнаружите, что пишете всю свою систему вокруг одной платформы, вы, вероятно, делаете то, что авторы этой платформы не собирались делать.
Скорее всего, вы будете использовать много разных фреймворков для решения разных проблем; по мере того как ваша система становится все более сложной, вы должны быть осторожны, чтобы не создавать «Большой шарик грязи» . Где возможно, держите вашу систему модульной и слабо связанной. Некоторые фреймворки лучше оставить за абстракциями, написав оболочки и адаптеры, которые «скрывают» специфичные для фреймворка рабочие процессы от других компонентов. Инструментарий GUI, как правило, обслуживает только интерфейсные функциональные возможности GUI, поэтому эти модули GUI следует хранить отдельно от остальной системы.
Каркасы общего назначения (такие как каркасы пользовательского интерфейса, каркасы уровня данных и т. Д.) Не существуют, чтобы предписывать полную архитектуру вашей системы - в большинстве случаев они могут предписывать разработку компонента или модуля; например, некоторые технологии GUI ориентированы на определенные шаблоны MV *.
Общая архитектура вашей системы должна в первую очередь зависеть от требований вашего бизнеса . Может оказаться, что вы сильно полагаетесь на конкретный инструмент (например, инструмент межплатформенного обмена сообщениями или среду ORM), чтобы связать все воедино, но если вы инкапсулировали среду в абстракцию, такую как класс «сервис», вы менее вероятно, что вы столкнетесь с этой системой, когда столкнетесь с ее ограничениями.
Постарайтесь учесть следующее: