Ich arbeite an einem zeichnungsbasierten Produkt, von dem ich Versionen für iPhone, Desktop OS/X, Windows Tablets, Silveright-basierte Browser, Windows Mobile und Windows in dieser Reihenfolge erstellen möchte.
Für die Portabilität der grafischen Benutzeroberfläche besteht die klassische Antwort darin, den Kern in C++ zu halten und dünne Schichten in Cocoa/Objective-C oder WPF/C# zu verwenden.
Silverlight verkompliziert jedoch die Auswahlmöglichkeiten.
Ich hätte kein Problem damit, meinen Code nach C++/CLI zu migrieren und eine doppelte Codebasis beizubehalten (mit einigen Makros, um die kontextbezogenen Schlüsselwörter von C++/CLI zu fälschen, und etwas juristischem Suchen und Ersetzen für ^ und %).
Nach dem, was ich in Erfahrung bringen konnte bis jetzt finden scheint es unwahrscheinlich, dass C++/CLI in Silverlight unterstützt wird. Das lässt mich mit den Optionen:
- Einmalige Migration einer v1.0 C++-Source-Basis nach C# und laufende parallele Wartung
- Live-Portierung mit einem Tool (Empfehlungen bitte!) von C++ nach C# oder umgekehrt, das reibungslos genug ist, um Teil eines Build-Prozesses zu sein.
- Architektonische Trennung der Silverlight-Version, so dass die C++-Logik auf einem Server bleibt. Die Auswirkungen auf die Leistung sind mir ein wenig unangenehm.
Kann jemand Alternativen vorschlagen, gute Nachrichten über C++/CLI in Silverlight liefern oder Portierungswerkzeuge empfehlen? Ich bin mit beiden Sprachen ausreichend vertraut, um C++ oder C# zu meiner Hauptsprache für das Backend zu machen, sofern eine Portierung zuverlässig ist.
Bearbeiten: Wenn man sich die Produktpalette von Konkrete Software-Lösungen Die Hinweise zu den Konvertern machen deutlich, dass die Konvertierung von C# nach C++ einfacher ist als der andere Weg. Das ist, wie ich erwartet hatte - es wirft interessante Gedanken über die Einschränkung meines C++-Stils auf den kleinsten gemeinsamen Nenner auf.