Я участвую в проекте, где команда разработчиков строит очень долгосрочный инфраструктурный проект, чтобы заменить существующую 10-летнюю систему. Под «очень долгим сроком» я подразумеваю, что он должен работать, поддерживаться и поддерживаться в течение как минимум 10 лет в будущем с момента выпуска. Принимая во внимание ~ 2 года разработки, это означает, что на данном этапе мы должны выбрать технологию / язык / структуру, которые будут работать как минимум 12 лет. У нас есть полный контроль над компьютерами, на которых выполняется проект, их операционными системами и т. Д. Я был разработчиком 10-летней системы, подлежащей замене, и помогаю команде правильно построить новую.
Приложение имеет очень сложный пользовательский интерфейс. Пользовательский интерфейс создается динамически из файлов конфигурации при запуске, каждый компонент пользовательского интерфейса зависит от логики и других компонентов пользовательского интерфейса, которые он должен получать во время выполнения. Сами элементы пользовательского интерфейса очень сложны, представьте себе пользовательские датчики, графики, ручки и т. Д.
В проекте уже было сделано два варианта, которые я не осуждаю и не пытаюсь изменить:
- Это будет настольное приложение
- Будет разработан в C #
Теперь мы находимся в стадии выбора правильной среды, чтобы сделать нашу очень гибкую систему пользовательского интерфейса «простой в разработке», то есть уменьшить количество ошибок разработчиков, полагаясь на отлаженную, уже созданную среду.
Команда исследовала Microsoft CAB (Composite UI), которая очень хорошо соответствовала его целям, однако тот факт, что Microsoft прекратила ее в 2007 году, представляет собой огромную проблему, принимая во внимание долгосрочные аспекты проекта (вспомним, что ошибка структуры обнаружен через 6 лет - кто будет оказывать поддержку? - и я знаю, что мы могли бы исправить код в самой CAB, но этого мы бы хотели избежать).
Одна вещь, которая явно приходит на ум, - это полагаться на Microsoft WPF. Кажется, это «будущее» разработки пользовательского интерфейса, однако меня пугает, когда я думаю об этом в долгосрочной перспективе. Моя главная проблема заключается в том, что рынок не примет это, что через 3 года Microsoft прекратит это, и что через 6 лет я не смогу получить надлежащую поддержку для него.
Однако я не вижу альтернативы, кроме написания нашей собственной платформы. Я не хочу неуважительно относиться к сторонним разработчикам фреймворков, но для такого долгосрочного проекта я могу использовать продукты / фреймворки / и т. Д. Только от очень известного поставщика.
Буду признателен за мысли о том, является ли выбор WPF правильным вызовом с учетом вышеуказанного контекста (а если нет - какова правильная «сложная структура пользовательского интерфейса» для такого долгосрочного проекта настольного приложения с использованием C #?).
Спасибо (и простите за длинный вопрос)