Ich sehe den Unterschied als eine Designwahl, als eine persönliche Präferenz der Sprache. Präferenz wäre mehr auf VB vs C# bezogen. Und im Allgemeinen sind es die gleichen Unterschiede, die Sie in jeder Anwendung erhalten, in der Sie C++ oder .NET wählen.
C++ wird Ihnen schnellere Startzeiten geben. IIRC, .NET 4.5 verfügt über automatische NGENing-Fähigkeiten (nicht sicher, wie es mit Metro-Apps zusammenhängt), wodurch die typischen langsamen Startzeiten von .NET-Anwendungen gemildert werden können.
C++ wird Ihnen eine niedrigere allgemeine Speichernutzung geben, da es keinen Garbage Collector verwendet. Dies wird bei ressourcenbeschränkten Geräten wie Tablets immer wichtiger. IIRC, .NET 4.5 hat mehr Abschwächungen in GC-Pausen (was die Benutzeroberfläche zum Stolpern bringen kann), sie sind immer noch eine Realität mit verwaltetem Code.
Da .NET und C++ das gleiche WinRT-Framework verwenden, wird es wahrscheinlich nicht zu viele Unterschiede bei der Interaktion mit der XAML/WinRT-Plattform geben (technisch schnellere Interaktion mit WinRT-Objekten über C++, aber der Treffer ist wirklich klein), aber Natürlich ist Ihr Benutzercode in C++ im Allgemeinen schneller als in .NET.
C++ ist im Allgemeinen schwieriger zu reverse engineering, selbst wenn es mit verschleiertem .NET-Code verglichen wird. Obwohl schlaue Diebe Ihre IP trotzdem stehlen können.
Da .NET zuerst für die Bequemlichkeit der Entwickler- und Entwicklerproduktivität erstellt wurde, haben Sie mehr Komfortoptionen bei der Architektur Ihrer Anwendungen (z. B. reflektionsbasierte Tools wie DI/IoC).
Das Iterieren von Anwendungscode kann über .NET einfacher sein, da .NET schneller kompiliert als C++, aber korrekt erstellte C++ - Projekte können erheblich gemildert werden.
Reine .NET-Projekte können "Any CPU" unterstützen, was bedeutet, dass Ihre Anwendung auf allen unterstützten WinRT-Plattformen ausgeführt werden kann. C++ - Projekte müssen Sie einfach neu kompilieren, um ARM x86/64 zu unterstützen. Wenn Ihre .NET-Anwendung von einer benutzerdefinierten C++ - Komponente abhängig ist, müssen Sie für jede Architektur kompilieren.
Da WinRT von Grund auf für die Unterstützung vieler Sprachen entwickelt wurde, ist mein Vorschlag an Entwickler, die nicht mit C++ vertraut sind, bei .NET zu bleiben, aber Bereiche zu erkunden, die von C++ profitieren. Microsoft hat mit den/CX-Projektionen großartige Arbeit geleistet, und die meisten C# -Versionen sollten sich zurechtfinden. Mein Vorschlag an C++ Devs ist, bei C++ zu bleiben und alle Vorteile von C++ zu bekommen.
Wenn Geschwindigkeit wichtig ist, verwenden Sie C++/XAML, wenn nicht C#/XAML verwenden, wird es einfacher für Sie sein, wie Sie sagten – Kobe
Aber wird es wirklich schneller in C++? Das alte Argument C# vs C++ für Geschwindigkeit. Sie können viele Fehler von C# durch bessere Kodierung abmildern. Was ich wissen muss, ist, sind die Feature-Sets für C# gegenüber C++ unterschiedlich. Z.B. kann ich eine voll funktionsfähige Komponente in C#/Xaml erstellen, die sowohl auf Metro- als auch auf Desktop-Modi ausgerichtet ist? Vielen Dank! –
In C++ ist immer schneller, aber Sie können kein Projekt erstellen, das sowohl in Metro als auch auf dem Desktop ausgeführt wird. Es muss das eine oder andere – Kobe