Domanda

Ho imparato a programmare in Windows utilizzando Visual C++ e l'API Win32.Al giorno d'oggi, sembra che la maggior parte delle app venga sviluppata in .NET utilizzando C#.Capisco che la maggior parte delle volte non c'è molta differenza di prestazioni tra il codice nativo e il codice gestito.Quindi mi chiedo, se dovessi iniziare a scrivere una nuova app desktop oggi, c'è qualche motivo (a parte il fatto che ho più familiarità con C++), per cui potrei volerla scrivere in C++ non gestito di .NET?Ci sono ancora alcuni vantaggi nell'usare C++ e codice nativo?Oppure quel metodo è stato più o meno sostituito con .NET sulla piattaforma Windows?

Ovviamente so che le persone che scrivono driver di dispositivo di basso livello e programmi simili non lo farebbero in .NET.Lo chiedo con riferimento alle tipiche app rivolte al client che non effettuano chiamate hardware dirette.

È stato utile?

Soluzione

  • Performance (determinate situazioni, come ad esempio la grafica)
  • occupazione di memoria (come ha detto Mancuso)
  • L'utilizzo di librerie esistenti
  • Non c'è bisogno di un tempo di esecuzione
  • un controllo più preciso

Per elencare alcuni.

Tuttavia, si consiglia inoltre di esaminare la questione dal punto di vista opposto a valutare abbastanza la lingua da utilizzare.

Inoltre, è possibile utilizzare C ++ / CLI per incorporare sia codice nativo e .net.

Altri suggerimenti

IMO la più importante per le piccole applicazioni scaricabili è che il codice nativo non ha bisogno del runtime .NET. Mentre la banda larga diventa sempre più comune non quasi tutti hanno ancora.

Alcune persone possono essere deluso nel vedere che l'applicazione richiede 2 MB in realtà un altro 20 MB di quadro di download e un processo di installazione fastidio per l'esecuzione. Se essi non sono sicuri se o non hanno veramente bisogno l'applicazione in primo luogo, potrebbero semplicemente eliminarlo prima ancora di dare una prova e si rivolgono a un prodotto concorrente.

Se l'applicazione ha bisogno di essere in grado di funzionare senza l'installazione (cioè se si può o non si debba fare qualcosa di simile installare il framework .NET), non si può contare su .NET di essere su una macchina Windows ( pre-Vista). Un sacco di applicazioni di utilità possono cadere in questa categoria.

Suggerirei per scrivere ogni applicazione desktop in gestita codice . .NET / C # è una grande piattaforma per farlo.

Le mie ragioni:

  1. penalizzazione delle prestazioni è trascurabile . Google per parametri di riferimento se non prendere la mia parola. Ciò che conta di più è il codice stesso. È possibile scrivere O (n ^ m) algoritmi in C ++ o .NET / C #. motori JIT sono molto maturo in questi giorni.
  2. non gestito C ++ presenta notevoli svantaggi quando si tratta di unit test, beffardo e refactoring . E 'molto ingombrante e poco flessibile. Riflessione permette codice gestito per fare queste cose molto conveniente.
  3. La distribuzione è un piccolo problema. Tuttavia, la creazione di una messa a punto che verifica i presupposti necessari NET e li installa automaticamente è un gioco da ragazzi.
  4. La compilazione è più veloce, non linker ! Succede anche in background quando si modifica il codice.
  5. .NET Supporto biblioteca è il modo migliore e più pulito di STL, MFC e spinta.
  6. Non ci sono file di intestazione e macro . Sono solo soggetto a errori.
  7. Sicurezza ! Buone buffer overflow bye, cattivi puntatori, le variabili non inizializzate ...
  8. eccezioni . gerarchia delle eccezioni chiaro in .NET. C ++ eccezioni sono incasinati.

occupazione di memoria. Ma a meno che non si sta sviluppando una macchina gravemente disabile memory-saggio, in realtà non dovrebbe essere un problema per la maggior parte delle applicazioni.

Se lo può permettere la dipendenza sullo stack, andare per .NET Moderno, elegante, potente e di conseguenza molto più veloce da sviluppare per.

Ma rendi conto che si concatenano la vostra applicazione ad esso -. Per la lingua e il quadro, se si Forsee un futuro in cui si può decidere di sfuggire a questa, quindi meglio pensarci due volte

Win32 è vecchio e goffo, ma funziona praticamente su qualsiasi versione di Windows senza ulteriori dipendenze, e il codice può essere in pianura, portatile, C / C ++.

+1 per non dover richiedere un pacchetto NET / installare sulla macchina target (s). Questo è ancora un grosso problema.

Quando tutte le macchine hanno mono o NET non sarà un grosso problema.

Due cose che mi vengono in mente.

  1. La protezione della proprietà intellettuale. E 'infinitamente più difficile per qualcuno per decodificare un app non gestito C ++. Managed applicazioni .NET o Java possono essere facilmente de-compilati questo non è il caso di non gestito C ++.

  2. Velocità. C ++ è più vicino ad hardware e ha una minor richiesta di memoria, come l'altro commento citato. Questo è il motivo per cui la maggior parte dei giochi di video continuano ad essere scritto in C ++ e assembly inline.

I programmi .Net hanno anche una durata di supporto, a differenza dei nativi.Native funzionerà per molti anni su diversi sistemi operativi senza richiedere aggiornamenti.

I programmi .Net possono essere eliminati da una cattiva configurazione .Net, i programmi nativi continuano a funzionare e difficilmente vengono influenzati dagli aggiornamenti del sistema operativo.

I programmi .Net si avviano lentamente e risultano lenti, i programmi nativi si avviano velocemente e funzionano velocemente.

.Net deve essere codificato per il minimo comune denominatore (versione del framework più distribuito), Native compila tutto il codice nell'applicazione, quindi usa ciò che desideri.

Usa Delphi per Native, non C++..Net è parzialmente basato su Delphi RAD e sul backend Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top