Domanda

Non sono mai stato un grande fan di MFC, ma non è questo il punto. Ho letto che Microsoft è dovuto al rilascio di una nuova versione di MFC nel 2010 e davvero mi ha colpito come strano - ho pensato che fosse morta MFC (senza cattive intenzioni, mi ha fatto davvero)

.

Is è MFC utilizzato per nuovi sviluppi? Se è così, che cosa è il vantaggio? Non potevo immaginare che avere alcun beneficio per qualcosa come C # (o anche solo C ++ utilizzando le API Win32 per questo).

È stato utile?

Soluzione

C'è una tonnellata di codice là fuori con MFC. Vedo queste domande per tutto il tempo è questo ancora usato è che ancora utilizzato la risposta è sì. Io lavoro in una grande organizzazione che impiega ancora centinaia di persone che scrivono in COBOL. Se non lo sia mai stata utilizzata in azienda continuerà ad essere utilizzato fino a quando non c'è più hardware per sostenerlo, poi qualche società pagherà qualcuno di scrivere un emulatore in modo che il vecchio codice continuerà a funzionare.

La marina utilizza ancora le navi con i computer con nuclei magnetici per la memoria e sono sicuro che hanno le persone a lavorare su di essi. La tecnologia, una volta creato non può mai essere supportato. È un po 'il caso di Deus ex machina in cui le grandi aziende non sono del tutto sicuro di quello che il loro sistema di fare e hanno un tale senso prioritario di paura di salagione delle imprese in ginocchio non hanno alcun desiderio di provare voi nuove tecnologie conio (BTW paghiamo IBM per miglior supporto sforzo da OS2).

Anche MFC è una soluzione perfettamente accettabile per lo sviluppo di Windows dato che è un modello di oggetto che avvolge l'API di sistema, che è più o meno tutto ciò che la maggior parte delle persone uscire di .net.


Come un addendum e dal momento che questa domanda è per una taglia questa è una citazione da MS per quanto riguarda MFC in VS 11

  

In ogni release abbiamo bisogno di bilanciare i nostri investimenti nelle varie aree del prodotto. Tuttavia, continuiamo a credere che MFC è la libreria più completa di funzionalità per la creazione di applicazioni desktop native. Siamo pienamente impegnati a sostenere e mantenere MFC ad un alto livello di qualità. Ecco un breve elenco di alcuni dei problemi che abbiamo fissato in MFC per Visual Studio 11:

Ecco il link se desiderare di leggere il post completo

Altri suggerimenti

Coolness non tiene conto nella scelta della tecnologia per un nuovo sistema. Sì, se sei uno studente o vuole giocare intorno a voi scegliere quello che vuoi.

Ma nel mondo reale ogni tecnologia ha i suoi vantaggi e svantaggi. Un anno fa una delle squadre ha iniziato un nuovo progetto, è stato deciso che sarà fatto in MFC. La ragione è molto semplice:. Devono usare API di Windows molto per operazioni di basso livello con la stampante, Internet Explorer e Dio solo sa cos'altro

C # non era nemmeno nel gioco, è stata presa la decisione tra il MFC e QT, entrambi avevano le funzionalità necessarie, entrambi potrebbero integrare facilmente le funzionalità di basso livello, l'unica differenza è che alcuni membri del team avevano già esperienza MFC, in modo da non c'era bisogno di sprecare tempo e denaro con corsi di formazione.

Supponiamo che scelgono C # e WPF:
-1 Bisogna avvolgere tutto nativo C ++ e il codice ASM in una DLL (ouch questo può essere doloroso, invece di codifica si scrive wrapper).
-1 Probabilmente avete bisogno di due squadre ora, uno per l'interfaccia utente uno per la roba WinAPI. E 'molto improbabile che troverete un sacco di gente in grado di scrivere sia in C # e roba WinAPI. D'accordo che in entrambi i casi avete bisogno di qualcuno per rendere l'interfaccia abbastanza (i programmatori di solito succhiare a questo e costano di più), ma almeno con C ++ solo il codice, non più aspettare c'è tempo tra due squadre, hanno bisogno di una modifica ui, nessun problema che don 't devono attendere il designer dell'interfaccia utente, lo farà abbastanza tardi.
1 È possibile scrivere il codice di interfaccia utente in C # e WPF, diciamo lo sviluppo dell'interfaccia utente è più veloce, ma l'interfaccia utente è soltanto 1/4 del progetto, in modo che il guadagno totale è probabilmente molto piccolo.
-1 degrado delle prestazioni:. Per ogni piccola operazione non si può fare in C # si chiama una DLL esterna (questo è un problema minore in quanto il programma viene eseguito su 8 GB di RAM Quad Core)

Quindi, in conclusione:. MFC è ancora usato per un nuovo sviluppo, perché i requisiti e le spese decidono la tecnologia per un progetto e si dà il caso che MFC è la migliore in alcuni casi

MFC è ancora usato per qualche nuovo sviluppo, e un sacco di sviluppo manutenzione (compreso l'interno di Microsoft).

Mentre può essere minuziosamente più lento rispetto all'utilizzo direttamente l'API Win32, la perdita di prestazioni è davvero molto piccolo - raramente tanto nel suo complesso per cento. Utilizzando .NET, la perdita di prestazioni è molto maggiore (nel mio test, raramente inferiore al 10%, con il 20-30% di essere tipico, e ancora più in alto per il calcolo pesante. Solo per esempio, ho una programma che fa Eigenvector / autovalore calcolo su abbastanza grandi array. la mia versione originale in C ++ e MFC corre caso un test in solo meno di un minuto sulla nostra macchina di prova standard. Alcuni dei miei colleghi ha deciso che sarebbe stato bello re-implementare in C #. la loro versione vogliono quasi tre minuti sulla stessa macchina (quad-core, 16-giga di RAM, quindi no, non "legacy" hardware). Devo ammettere che non ho guardato il loro codice troppo da vicino, in modo da forse potrebbe essere migliorata, ma sono i codificatori decenti quindi un 3:. mi sembra improbabile miglioramento 1

Con MFC, è anche facile da aggirare il quadro e utilizzare l'API Win32 direttamente quando / se si vuole. Con .NET, possono uso P / Invoke per questo, ma è molto doloroso confronto.

MFC è stato aggiornato con ogni versione di Visual Studio. Semplicemente non è la voce caratteristica del titolo.

Per quanto riguarda il nuovo sviluppo, sì. E 'ancora utilizzato e continuerà ad essere così (anche se io, come voi, preferisco non). Molte organizzazioni reso la tecnologia decision anni fa e non hanno alcun motivo di cambiare.

Io credo che si sta parlando negozi su consolidate, però, le persone con più interesse a mantenere / migliorare ciò che è stato scritto, piuttosto che rimanere sul filo di lama.

Il rilascio del MFC Feature Pack (uno o due anni fa, IIRC) era la più grande estensione di MFC in quanto circa 10 anni e ha dato tutto un nuovo impulso allo sviluppo MFC. Credo che un sacco di aziende ha deciso di mantenere le loro applicazioni legacy, spingere in avanti e delevelop nuove applicazioni sulla sua base.

Per me (come qualcuno che deve mantenere una grande applicazione MFC) il problema più grande è lo sviluppo e il sostegno diminuzione dei componenti (Microsoft e di terze parti), piuttosto che MFC stessa. Per esempio è il porting a 64 bit non è facile se un sacco di puro a 32 bit componenti vecchi e non supportati Active-X sono assemblati nella domanda.

Ci sono vantaggi a stare lontano dal codice gestito (forse si sta scrivendo un'interfaccia utente del driver, o fare COM).

Questo, e non c'è tonnellate di codice MFC là fuori. Forse si lavora per società X, ed è necessario utilizzare una delle DLL zillion che ho scritto nel corso degli ultimi dodici anni.

Ho fatto un progetto lo scorso anno sulla base di MFC. Io non sono sicuro perché MFC è stato scelto, ma era sufficiente per fare un sistema con 3D virtuale utente grafica di sicurezza interfaccia una gestione dell'edificio 10 frame al secondo run frequenza di aggiornamento in modo efficiente su PC Win32 risalenti alla metà degli anni 1990 . L'eseguibile (che richiede solo sistema centrale Win32 DLL) è inferiore a 400 K-non un risultato facile con strumenti moderni.

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