Кроссплатформенная разработка для Windows / OS X с большой существующей кодовой базой - PullRequest
7 голосов
/ 22 апреля 2011

Существует большая база существующего кода для сложного приложения, написанного на C ++ с использованием MFC и WinAPI, которое необходимо перенести на Mac OS X. Идеальное решение - иметь как можно больше общего кода между различными платформами, особенно кодом такие как бизнес-логика. GUI может отличаться в зависимости от того, насколько хороши инструменты для кроссплатформенного GUI. Есть несколько низкоуровневых вызовов ОС, которые будут разными на разных платформах. Основная цель - не получить две отдельные версии программного обеспечения, которые необходимо разрабатывать и поддерживать отдельно.

Я смотрел на Qt, но мне было бы интересно узнать, какие есть другие альтернативы и как люди решали эту проблему в прошлом.

  • Если бы вы перенесли существующее приложение, написанное на MFC, что бы вы использовали / как бы вы это сделали?
  • Если бы вы могли начать проект с нуля на обеих платформах, что бы вы использовали / как бы вы это сделали?

Ответы [ 3 ]

6 голосов
/ 23 апреля 2011

Мы должны были принять подобное решение пару лет назад и решили пойти с Qt.Приложение представляло собой комбинацию Windows Forms / Managed C ++ (у нас не было требования кроссплатформенности), мы выполнили оценку некоторых комплектов пользовательского интерфейса, мы также рассмотрели Java.

Если вы знакомы с MFC, вам может показаться, что WxWidgets более «удобен», как я предполагаю, поскольку его структура объектов ближе к этому.Это то, что заставило нас не использовать это.Дизайн Qt очень хорошо продуман и лучше соответствует тому, что мы делали.Java была выброшена как опция, так как у нас на самом деле не было больших знаний.

Начиная с нуля, я бы снова выбрал Qt (даже с некоторыми вещами, происходящими с Nokia). Мне все еще нравится этот инструментарий.Варианты, которые я мог бы рассмотреть, которые мы не рассматривали, когда впервые оценивали (из-за доступности и ограничений проекта) Mono, Adobe Air или чисто веб-приложение.

3 голосов
/ 23 апреля 2011

• Если бы вы перенесли существующее приложение, написанное на MFC, что бы вы использовали / как бы вы это сделали?

Я бы использовал wxWidgets . Он имеет отличную документацию, поддерживает несколько платформ и уже давно. Что касается части how вашего вопроса ... Я бы заменил все специфические вызовы MFC / Win32 вызовами wxWidget. Это упрощает вещи, но по сути это то, что должно произойти, чтобы получить истинную многоплатформенность.

• Если бы вы могли начать проект с нуля на обеих платформах, что бы вы использовали / как бы вы это сделали?

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

Я понимаю, что существуют и другие фреймворки, но Qt & wxWidgets, похоже, являются лидерами кроссплатформенных фреймворков. Я не думаю, что вы можете ошибиться с любым выбором.

РЕДАКТИРОВАТЬ: На этот ответ повлиял мой личный опыт переноса большого приложения MFC, написанного на Visual C ++ 6, для использования wxWidgets для работы в Linux.

2 голосов
/ 23 апреля 2011

Я бы придерживался "родного" графического интерфейса для любой платформы.Это требует разделения вашего уровня представления на два подуровня: (1) фактическая реализация, которая использует конкретные типы виджетов / элементов управления и (2) уровень абстракции представления.Таким образом, вы получаете естественный вид на каждой платформе, используя ту же логику представления.

Кстати, вы можете сделать это единообразно даже в управляемом коде, предполагая, что MonoMac действительно работает, как и было обещано (не пробовал, нет воли и нужно следовать Mac-Mania).Таким образом, вы можете получить совершенно чистый код с поддержкой CLR для своей абстрактной презентации с привязками к WPF в Windows и к соответствующим оболочкам CLR-AppKit на Mac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...