Для веб приложения эту проблему решает api, есть фронтендеры и бэкендеры. А как разделить ui и логику, если приложению не нужен доступ в интернет? На примере dart, нагуглил dart FFI. Если сравнивать в вебом, то вызов FFI - это запрос к api. Насколько это рациональное решение и есть ли другие варианты (необязательно для dart)?
Для начала: вы определились с общей, физической, так сказать, архитектурой приложения? Где у вас будет выполняться реализующий логику код - на клиенте или на сервере? Для веб вариантов обычно нет - логика должна быть на сервер - а вот для приложений на ПК есть варианты. Например, кроме варианта, свойственного веб (трехзвнная архитектура с сервером приложений) логика тоже может выполняться на ПК, а на сервере находится только БД приложения (клиент-серверная архитектура). Клиент-сервераня архитектура обычно проще.
Вот только после того, как будет определенность с этим физическим разделением, стоит думать над логическим разделением и средствами для него.
В .NET (особенно, в .NET Framework) есть кое-что для такого разделения, но все это имеет ярлык устаревшего (legacy) потому что само решение - для ПК в изолированной сети - имеет такой ярлык.
Использовать стандартные паттерны типа MVC и MVVM. Для большинства приложений этого достаточно. Если приложение более сложное, то оно делится на компоненты в виде, опять же, стандартных библиотек и приложения/приложений.
смотрите в будущее:
- просто десктопная утилита? реализуйте по пути наименьшего сопротивления
- есть задумки на дальнейший рост? тогда изучайте паттерны. приложение под большую нагрузку, все больше становится похожим на веб-приложение