J'ai utilisé à la fois MFC et Windows Forms de manière intensive pendant très longtemps. Je viens de l'industrie du jeu vidéo, j'ai donc dû écrire de nombreuses applications de bureau au fil des ans, et avant .net, MFC était extrêmement utile. Avant même cela, j'écrivais des outils en pur Win32.
MFC avait certainement ses bizarreries, mais dans l'ensemble, cela rendait la vie beaucoup plus facile. Il était très facile d'intégrer OpenGL et Direct3D dans des vues personnalisées, et une fois que vous aviez compris comment faire, écrire des contrôles personnalisés était un jeu d'enfant. Le meilleur de tout, c'est que je pouvais simplement coder en C++, qui était simplement mon langage de prédilection. De plus, j'ai trouvé MFC très efficace et réactif.
Peu à peu, MFC a commencé à bénéficier du support de bibliothèques externes de contrôle, en particulier des bibliothèques de docking/toolbar, de sorte que mes outils comme les visualiseurs de modèles 3D et les éditeurs de niveaux avaient tous l'air plutôt sympa.
La plupart des applications que j'ai écrites créaient l'interface utilisateur de manière programmative, donc l'outil de disposition de dialogue/fenêtre était plus que suffisant pour mes besoins.
MFC 9 est aussi assez cool, surtout avec la bibliothèque de contrôle/docking Ribbon que Microsoft a publiée dans le cadre du Feature Pack. Ainsi, le vieux chien a encore de beaux jours devant lui, c'est sûr! :)
Lorsque .net 1.0 est sorti, j'ai trouvé la transition assez facile, car il prenait en charge le C++ managé. Ce n'était pas beau, mais cela offrait une rampe d'accès relativement directe au framework .net. Mais le point de basculement pour moi est survenu lorsque j'ai commencé à écrire des outils qui nécessitaient davantage le concepteur de Windows Forms, autour de .net 2.0. J'ai décidé de recommencer et d'apprendre le C#, que j'ai adoré - même si je ne m'habituerai jamais au fait de ne pas avoir de delete() sans new() ;). J'ai ensuite commencé à écrire des contrôles utilisateur, trouvant toute l'expérience très agréable et simple. Le framework .net était énorme, bien supporté, et en général j'ai trouvé plus facile de tout faire en C#/.net. De plus, la compilation était super rapide, et la capacité de refactoriser dans Visual Studio était géniale.
La beauté de C#/.net est qu'il ne vous limite pas à écrire uniquement en code managé. Vous pouvez toujours utiliser du code non managé, si les performances sont un problème par exemple, ou si vous devez partager du code entre des plates-formes. Par exemple, mes bibliothèques mathématiques sont écrites en C/C++, que je mets dans des bibliothèques permettant à C# d'envelopper/utiliser le même code, même si ce n'est que temporaire. Je vais aussi porter ces bibliothèques en C# à un moment donné pour que tout soit en pur .net.
La dernière expérience que je souhaite mentionner est que j'ai passé les derniers mois loin de la programmation de jeux sur console, et j'ai passé du temps à programmer l'InterWeb. J'utilise la pile Microsoft, je programme en ASP.net/C#, et je dois dire que c'est très agréable, avec toute la connaissance du C# directement applicable. La seule courbe d'apprentissage était ASP.net, pas le langage et les bibliothèques de support. Avec l'arrivée de .net 3.5 (LINQ est fantastique) la vie dans le framework .net avec C# est belle.
Quoi qu'il en soit, je ne veux pas transformer ceci en l'histoire de ma vie, mais je voulais simplement partager une expérience brève de quelqu'un qui est passé par toutes les technologies dont vous avez parlé. J'aimerais également mentionner qu'il est bon pour vous d'essayer différents langages/frameworks. J'ai codé pour l'iPhone pendant un an maintenant, et j'ai vraiment apprécié l'Objective-C. C'est de la programmation, et c'est très bien.
En ce qui concerne MFC/.net, les deux ont leurs avantages et leurs inconvénients, et je n'ai vraiment rien contre MFC, mais en termes de progression, je resterais probablement fidèle à C#/.net, mais s'il vous plaît, s'il vous plaît, s'il vous plaît comprenez comment cela fonctionne. La seule chose sur laquelle je vais prêcher est de comprendre comment fonctionne la mémoire en .net, même si "tout est pris en charge pour vous" ;)
Votre connaissance du C/C++ doit être complètement indépendante du fait que vous utilisiez MFC ou non, c'est toujours un langage critique (particulièrement dans la programmation de jeux vidéos basés sur console), mais pour la programmation d'applications de bureau sur Windows, il est de plus en plus difficile de contester le .net. C'est rapide, facile, a un excellent support d'outils, d'excellentes bibliothèques tierces, une énorme communauté croissante, est maintenant cross-platform (Mono) et vous permettra de passer entre toutes les technologies Microsoft actuelles/émergentes (ASP.net, WPF, Silverlight, WCF etc).
Pour autant, je configure toujours Visual Studio en tant qu'environnement C++. Certains habitudes ne meurent jamais ;)
9 votes
Je suis d'accord vieux, moisi et dépassé.... Désolé MFC fanboys. Je ne veux jamais regarder en arrière vers MFC sans grands coups de pied et de grands cris.
2 votes
Quelles sont leurs raisons de dire que vous devriez passer à MFC? Il vous sera difficile de prendre des décisions éclairées si vous ne dites pas pourquoi vous préférez cette technologie. .NET est un framework beaucoup plus agréable à travailler qu MFC. Mais il existe encore des cas où MFC est mieux adapté. Peut-être parce que vous devez travailler avec des bases de code hérité natif, peut-être que vous avez besoin de fonctionnalités qui ne sont pas exposées en .NET, ou...
1 votes
Si vous n'utilisez pas le cadre Document/Vue, je ne vois pas de réelle raison d'utiliser MFC.
3 votes
Il y a des centaines de (petites) raisons d'utiliser MFC et de ne pas utiliser le framework Document/View qui est vraiment obsolète et nul.