Question

    

Cette question a déjà une réponse ici:

         

Je travaille en tant que programmeur C ++ natif depuis quelques années. Nous commençons maintenant un nouveau projet à partir de zéro. Alors, que pensez-vous du passage à C ++ \ CLI au prix de la perte de code indépendant de la plate-forme. Existe-t-il des avantages particuliers à ce que l’on passe à C ++ \ CLI?

Était-ce utile?

La solution

Je recommande ce qui suit, en fonction de mon expérience avec C ++, C # et .NET:

  • Si vous voulez utiliser la méthode .NET, utilisez C #.
  • Si vous ne voulez pas .NET, utilisez le C ++ traditionnel.
  • Si vous devez relier C ++ traditionnel avec du code .NET, utilisez C ++ / CLI. Fonctionne avec les classes appelant C ++ .NET et les classes appelant C ++ .NET.

Je ne vois pas l'intérêt d'aller simplement en C ++ / CLI si vous n'en avez pas besoin.

Autres conseils

Quelques questions à prendre en compte avant de changer de fournisseur:

[1] Vous en tenez-vous à Windows? Il existe des clones .NET pour d'autres systèmes d'exploitation, mais votre application ne s'exécutera pas de manière transparente. Une complexité dont vous n’auriez peut-être pas besoin.

[2] Envisagez-vous de changer uniquement pour le support de la récupération de place? Si c'est le cas, vous pouvez simplement utiliser certaines bibliothèques C ++ Garbage Collector. Et si vous trouvez comment tirer parti de std :: shared_ptr, vous ne ressentirez peut-être pas le besoin de collecteurs de mémoire. Une surcharge dont vous n’auriez peut-être pas besoin.

[3] Envisagez-vous C ++ / CLI en raison de la récupération de place & amp; toutes les classes .NET utiles que vous pouvez exploiter? Si oui, pourquoi ne pas simplement passer à c #. C ++ / CLI est une technologie de transition et il est préférable de ne pas investir de ressources dans de telles choses. c # devient assez mature et utilisable.

Personnellement, je me contenterais du C ++;).

Y at-il un avantage pour vous? Vous allez probablement perdre la possibilité de passer à un autre système d'exploitation.

ne vous embêtez pas, sauf si vous intégrez des applications .NET. N'utilisez certainement pas STL / CLR car ses performances sont vraiment abominables.

Il est tentant d’inverser ce commutateur pour utiliser les bibliothèques de classes .NET, mais il existe des alternatives. Si vous procédez ainsi, vous ne pourrez pas transférer votre code aussi facilement.

Il semble également que l’essor des logiciels libres augmente, il est donc temps d’envisager l’utilisation de bibliothèques et d’outils multiplates-formes. Vous pouvez déployer une application Linux beaucoup plus facilement que celle fonctionnant sous Windows (en fournissant un système d'exploitation entièrement configuré!) Et vous obtenez un retour sur investissement bien supérieur si vous déployez des clients Linux (car ils sont gratuits).

Si j'étais un homme d'affaires, je chercherais à avoir au moins la capacité de se déployer sur Linux ou Mac plutôt que sur Windows uniquement. Stratégiquement, je ne voudrais pas parier que le monde est resté avec Microsoft dans 5 ans.

Le principal avantage de migrer vers C ++ / CLI est d’avoir accès aux bibliothèques .NET et au framework lui-même (nettoyage de la mémoire, etc.). Toutefois, pour autant que je sache, C ++ / CLI existe principalement pour faciliter le portage du code C ++ existant dans le framework .NET. Les nouveaux projets sont encouragés à utiliser C #.

Si vous devez utiliser du code C ++ existant mélangé avec le framework .NET, il serait logique d'utiliser C ++ / CLI, mais en général, vous devriez simplement commencer par C #.

S'il y a quelque chose dans .NET que le nouveau projet doit utiliser de manière extensive (peut-être une conception d'interface graphique plus simple), utilisez alors C #. sinon, restez en C ++ natif. Je ne pense pas que vous perdriez quoi que ce soit en faisant cela.

Je n'aime pas tellement C ++ / CLI que je vous recommande de vous diriger clairement, car je décris ici . Certains suggèrent d’utiliser C ++ / CLI comme un pont entre le C ++ standard et le C #, mais grâce à la conception de C ++ / CLI, il est très fastidieux de l’utiliser de cette manière (vous devez créer manuellement des wrappers de code C ++ normal pouvant être appelés à partir de. C #). Par conséquent, je recommanderais plutôt SWIG d'interfacer les interfaces C ++ standard avec C # (même s'il est vrai que SWIG a une courbe d'apprentissage importante ).

Jetez un coup d’œil à ces deux articles:

Présentation critique de C ++ / CLI, partie I

Présentation critique de C ++ / CLI, partie II

  

Je crois que vous êtes maintenant   convaincu que je suis que C ++ / CLI est   ni un " ensemble d'extensions à C ++ "   (à bien des égards, c’est en fait une   sous-ensemble de C ++), il n'est pas lié à   C ++ plus que tout autre langage avec   points-virgules et accolades.   De plus, C ++ / CLI est définitivement un   Langage de programmation orienté Windows;   ce n'est certainement pas une langue qui   Serveur Solaris 10 ou un mobile Nokia   téléphone sera heureux de courir. Qu'est-ce que   cela a-t-il quelque chose à voir avec C ++?

L’un des principaux inconvénients de l’utilisation de C ++ / CLR est la possibilité de perdre votre IP (propriété intellectuelle) si le code n’est pas masqué de manière trop superficielle. En général, je suis d’accord avec les déclarations faites par d’autres membres ici. Si vous voulez un code portable indépendant de MS .net vm, alors le C / C ++ natif est la solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top