Je vois la différence comme un choix de conception, plutôt qu'une préférence personnelle de langage. La préférence serait plus liée à VB vs C#. Et généralement, ce sont les mêmes différences que vous obtenez dans n'importe quelle application où vous choisissez C++ ou .NET.
C++ vous donnera des temps de démarrage plus rapides. IIRC, .NET 4.5 a des capacités d'auto-NGENing (je ne sais pas comment cela se rapporte aux applications Metro), donc cela peut aider à atténuer les temps de démarrage lent typique des applications .NET. C++ vous donnera moins d'utilisation de la mémoire générale car il n'utilise pas un garbage collector. Cela devient de plus en plus important sur les dispositifs à ressources limitées tels que les tablettes. IIRC, .NET 4.5 a plus d'atténuations dans les pauses GC (ce qui peut provoquer l'interface utilisateur à studder), ils sont toujours une réalité avec le code managé. Comme .NET et C++ utilisent le même framework WinRT, il n'y aura probablement pas trop de différence dans l'interaction avec la plateforme XAML/WinRT (interaction technique plus rapide avec les objets WinRT via C++ mais le hit est vraiment faible), mais bien sûr, votre code utilisateur sera généralement plus rapide avec C++ qu'avec .NET.
C++ est généralement plus difficile à désosser, même par rapport au code .NET obfusqué. Bien que les voleurs sournois peuvent voler votre IP indépendamment. Comme .NET a été créé en premier pour la commodité de la productivité des développeurs et des développeurs, vous aurez plus d'options pratiques pour l'architecture de vos applications (par exemple, des outils basés sur la réflexion tels que DI/IoC).
L'écriture de code d'application peut être plus facile via .NET car .NET compile plus rapidement que C++, mais les projets C++ correctement créés peuvent être considérablement réduits.
Les projets .NET purs peuvent prendre en charge «Any CPU», ce qui signifie que votre application peut s'exécuter sur toutes les plates-formes WinRT prises en charge. Projets C++ que vous devrez simplement recompiler pour prendre en charge ARM, x86/64. Si votre application .NET dépend d'un composant C++ personnalisé, vous devrez compiler pour chaque architecture. Étant donné que WinRT a été créé à partir de zéro pour prendre en charge de nombreux langages, ma suggestion aux développeurs qui ne sont pas à l'aise avec C++ est de s'en tenir à .NET mais d'explorer les zones qui bénéficient de C++. Microsoft a fait un excellent travail avec les projections/CX et la plupart des développeurs C# devraient être en mesure de trouver leur chemin. Ma suggestion aux devs C++ est de coller avec C++ et obtenir tous les avantages de C++.
Si la vitesse est importante, utilisez C++/XAML, sinon utilisez C#/XAML ce sera plus facile pour vous comme vous l'avez dit – Kobe
Mais sera-t-il vraiment plus rapide en C++? L'ancien argument C# vs C++ pour la vitesse. Vous pouvez atténuer beaucoup de failles de C# en améliorant le codage. Ce que je dois savoir, c'est que les fonctionnalités pour C# et C++ sont différentes. Par exemple. puis-je créer un composant complet dans C#/Xaml pour cibler les modes de métro et de bureau? Merci! –
En C++ est toujours plus rapide, mais vous ne pouvez pas créer un projet qui s'exécute aussi bien sur Metro que sur le bureau. Ce doit être l'un ou l'autre – Kobe