linux — возможность повторного использования кода из проекта Xamarin в проекте Qt C ++

У меня есть простое приложение, которое было разработано в Xamarin для мобильных устройств и рабочего стола Windows. Для его разработки использовались C #, (Galasoft) MVVM-Light и Repository Pattern. Серверная часть не является частью этого проекта. Но для полной картины используются REST EndPoints.

Теперь я спрашиваю себя, какой из предыдущих проектов можно использовать, если я хочу написать то же приложение (для Linux) в Qt & C ++. Пока я знаю, что:

  • Представления должны быть полностью переписаны, потому что Qt использует «qml», а не XAML
  • Также Qt не использует ‘Bindings’, как это возможно в MVVM / C # / XAML. Но есть какой-то альтернативный способ для этого, нашел Вот
  • Модели должны быть относительны и легко использоваться повторно.

Чтобы свести к минимуму «переписать» часть кода, я также нашел оболочку от C # до C ++, но пока только для методов, а не для целых классов. Увидеть себя Вот

У кого-нибудь есть другие Типпс или они могут исправить мои заявления, если они ошибочны в каком-то аспекте?

Спасибо за вашу поддержку

2

Решение

Исходя из опыта, мой лучший совет — не пытаться использовать существующий код, а вместо этого написать новое приложение с нуля. C++/Qt, Может показаться заманчивым, что у вас уже есть приложение, но попытка портировать его, вероятно, будет более болезненным процессом, чем просто переписать его, и вы также упустите возможности извлечь выгоду из сильных сторон Qt. Например, декларативный характер QML не имеет четкого аналога, и вы определенно хотите использовать это в полной мере.

Единственное исключение — если у вас (как вы говорите) есть очень автономная библиотечная часть, которую вы легко сможете обернуть и использовать повторно. Но даже это будет ответственностью во время сборки. Я обнаружил, что хранение всей вашей кодовой базы в C++/Qt5 делает сборку и развертывание очень простым и элегантным. Инструменты, которые идут с Qt такие как QMAKE, ООК а также QtCreator действительно хороши для кроссплатформенности.

Кроме этого, вот некоторые комментарии:

  • Способ создания переплеты в вашей ссылке правильно. Вот как вы делаете это с QML, Но это не единственный способ. Есть много способов сделать это. Вот документация для альтернатив: http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html

  • в C++ сторона, вы будете иметь дело с тем, что называется сигналами и слотами, что очень хорошо задокументировано здесь: http://doc.qt.io/qt-5/signalsandslots.html.

Надеюсь, это было полезно!

3

Другие решения

В принципе и честно это полное переписывание. Причиной этого Qt является C ++, а Xamarin — в основном C #.

0

По вопросам рекламы [email protected]