Vedo la differenza come una scelta progettuale, piuttosto che una preferenza personale del linguaggio. La preferenza sarebbe più correlata a VB vs C#. E generalmente sono le stesse differenze che si ottengono in qualsiasi applicazione in cui si sceglie C++ o .NET.
C++ ti darà tempi di avvio più rapidi. IIRC, .NET 4.5 ha capacità di NGENing automatiche (non sono sicuro in che modo si riferiva alle app della metropolitana), quindi questo potrebbe aiutare a mitigare i tempi di avvio lenti tipici delle applicazioni .NET.
C++ consente di ridurre l'utilizzo della memoria generale in quanto non utilizza un garbage collector. Questo diventa sempre più importante su dispositivi con risorse limitate come i tablet. IIRC, .NET 4.5 ha più attenuazioni nelle pause GC (che possono causare l'interfaccia utente allo studder), sono ancora una realtà con il codice gestito.
Poiché .NET e C++ utilizzano lo stesso framework WinRT, probabilmente non ci saranno troppe differenze nell'interazione con la piattaforma XAML/WinRT (l'interazione tecnicamente più rapida con oggetti WinRT tramite C++ ma l'hit è veramente piccolo), ma ovviamente il tuo codice utente sarà generalmente più veloce con C++ che .NET.
C++ è generalmente più difficile da decodificare, anche se confrontato con codice .NET offuscato. Anche se i furbi ladri possono rubare il tuo IP a prescindere.
Poiché .NET è stato creato innanzitutto per la produttività dello sviluppatore e dello sviluppatore, avrete più opzioni di convenienza nell'architettura delle vostre applicazioni (ad esempio, strumenti basati sulla riflessione come DI/IoC).
Iterare il codice dell'applicazione può essere più semplice tramite .NET poiché .NET è più veloce di C++, ma i progetti C++ correttamente creati possono essere mitigati in modo sostanziale.
I progetti .NET puri possono supportare "Qualsiasi CPU", il che significa che l'applicazione può essere eseguita su tutte le piattaforme WinRT supportate. I progetti C++ dovranno semplicemente essere ricompilati per supportare ARM, x86/64. Se l'applicazione .NET dipende da un componente C++ personalizzato, sarà necessario compilare per ogni architettura.
Poiché WinRT è stato creato da zero per supportare molte lingue, il mio suggerimento per gli sviluppatori che non sono a proprio agio con C++ è quello di continuare con .NET ma esplorare aree che traggono vantaggio dal C++. Microsoft ha fatto un ottimo lavoro con le proiezioni/CX e molti sviluppatori di C# dovrebbero essere in grado di orientarsi. Il mio suggerimento per gli sviluppatori C++ è quello di rimanere con C++ e ottenere tutti i vantaggi del C++.
Se la velocità è importante, usa C++/XAML, se non usi C#/XAML sarà più facile per te come hai detto – Kobe
Ma sarà davvero più veloce in C++? Il vecchio argomento C# vs C++ per la velocità. Puoi mitigare molti difetti di C# con una migliore codifica. Quello che devo sapere è che i set di funzionalità per C# rispetto a C++ sono diversi. Per esempio. posso creare un componente completo in C#/Xaml per scegliere come target sia la modalità metropolitana che quella desktop? Grazie! –
In C++ è sempre più veloce, ma non è possibile creare un progetto eseguito sia in metropolitana che in desktop. Deve essere l'uno o l'altro – Kobe