Welche Vorteile gibt es eine Win32-Anwendung in C ++ über eine .NET-Anwendung in C # zu entwickeln?

StackOverflow https://stackoverflow.com/questions/562620

Frage

habe ich gelernt, die Windows-Programmierung mit Visual C ++ und dem Win32-API. Heutzutage scheint es die meisten Anwendungen in .NET mit C # entwickelt. Ich verstehe, dass die meiste Zeit gibt es nicht viel Unterschied in der Leistung zwischen nativen Code und verwalteten Code ist. Also ich frage mich, wenn ich heute eine neue Desktop-Anwendung zu schreiben beginnen, gibt es keinen Grund (außer der Tatsache, dass ich besser vertraut mit C ++), dass ich will, kann er in nicht verwalteten C ++ schreiben, statt von .NET? Gibt es noch einige Vorteile bei der Verwendung C ++ und nativen Code? Oder hat das Verfahren wurde mehr oder weniger mit .NET auf der Windows-Plattform ersetzt?

Natürlich weiß ich, dass Menschen, die Low-Level-Gerätetreiber und ähnliche Programme schreiben, wäre es in .NET nicht. Ich bin mit Bezug auf die typischen kundenorientierten Anwendungen gefragt, die keine direkte Hardware-Anrufe tätigen.

War es hilfreich?

Lösung

  • Performance (bestimmte Situationen, wie Grafiken)
  • Speicherplatzbedarf (wie Mancuso sagte)
  • Nutzung vorhandener Bibliotheken
  • Keine Notwendigkeit für eine Laufzeit
  • Finer Kontrolle

einige aufzuzählen.

Sie können jedoch auch bei der Frage, von dem entgegengesetzten Blickwinkel zu betrachten wollen recht zu beurteilen, welche Sprache zu verwenden.

Darüber hinaus können Sie C ++ / CLI verwenden sowohl native als auch .NET-Code zu integrieren.

Andere Tipps

IMO die wichtigsten für kleine herunterladbare Anwendungen ist, dass native Code nicht die .NET-Laufzeit benötigt. Während Breitband immer häufiger wird nicht fast jeder hat es noch nicht.

Einige Leute enttäuscht sein kann, um zu sehen, dass Ihre 2 MB Anwendung erfordert tatsächlich eine andere 20MB framework herunterladen und ein lästiges Installationsprozess zu starten. Wenn sie nicht sicher sind, ob oder ob nicht wirklich löschen sie benötigen, um Ihre Anwendung in erster Linie, sie könnten es nur noch bevor es zu versuchen und schalten zu einem Konkurrenzprodukt.

Wenn Ihre Anwendung muss in der Lage sein, ohne Installation ausgeführt werden soll (dh, wenn Sie nicht können oder sollten etwas nicht tun, wie das .NET Framework installieren), können Sie nicht rechnen .NET auf einem Windows-Rechner zu sein ( Pre-Vista). Viele Utility-Anwendungen können in diese Kategorie fallen.

Ich würde empfiehlt jede Desktop-Anwendung in schreiben verwaltetem Code . .NET / C # ist eine großartige Plattform, dies zu tun.

Meine Gründe:

  1. Leistungseinbuße ist vernachlässigbar . Google für Benchmarks, wenn Sie nicht mein Wort. Was zählt mehr ist der Code selbst. Sie können O (n ^ m) Algorithmen in C ++ oder .NET / C # schreiben. JIT-Motoren sind in diesen Tagen sehr reif.
  2. Unmanaged C ++ große Nachteile hat, wenn es um Unit-Tests kommt, spöttisch und Refactoring . Es ist sehr umständlich und unflexibel. Reflexion ermöglicht verwalteten Code, um solche Dinge sehr bequem zu machen.
  3. Deployment ist ein kleines Problem. Um jedoch eine Einrichtung zu schaffen, die für die erforderlichen .NET Voraussetzungen überprüft und installiert sie automatisch ist ein Kinderspiel.
  4. Compilation ist schneller, kein Linker ! Es kommt sogar im Hintergrund, wenn Sie den Code bearbeiten.
  5. .NET Bibliothek Unterstützung ist viel besser und sauberer als STL, MFC und steigern.
  6. Keine Header-Dateien und Makros . Sie sind nur fehleranfällig.
  7. Sicherheit ! Adieu Pufferüberlauf, schlechte Zeiger, nicht initialisierte Variablen ...
  8. Ausnahmen . Klare Ausnahme Hierarchie in .NET. C ++ Ausnahmen sind vermasselt.

Speicherplatzbedarf. Aber wenn Sie sich für einen schwerbehinderte Maschine zu entwickeln Speicher-weise, es sollte wirklich kein Problem für die meisten Anwendungen sein.

Wenn Sie die Abhängigkeit von dem Stapel leisten, gehen Sie für .NET Modern, elegant, kraftvoll und als Ergebnis viel schneller zu entwickeln.

Aber erkennen, dass Sie Ihre App, um es Kette -. Der Sprache und Rahmen, wenn Sie eine Zukunft voraussehen, wo Sie diese entkommen möchten, dann zweimal besser denken

Win32 ist alt und klobig, aber es funktioniert auf nahezu jeder Windows-Version ohne zusätzliche Abhängigkeiten und der Code kann in einfachen, tragbaren, C / C ++ sein.

1 für keine .NET-Paket / install auf dem Zielcomputer (n), die erforderlich ist. Dies ist immer noch ein großes Problem.

Wenn alle Maschinen mono oder NET haben es nicht so eine große Sache sein.

Zwei Dinge, die ich mir vorstellen kann.

  1. Schutz des geistigen Eigentums. Es ist unendlich schwieriger für jemanden umgekehrt für einen nicht verwaltete C ++ App Ingenieur. Managed .Net oder Java-Anwendungen lassen sich einfach de-kompiliert ist dies nicht der Fall mit Unmanaged C ++.

  2. Geschwindigkeit. C ++ ist näher an Hardware und hat einen kleineren Speicherbedarf als die anderen Kommentar erwähnt. Dies ist, warum die meisten Videospiele weiterhin in C geschrieben werden ++ und Inline-Montage.

NET-Programme haben auch eine Unterstützung Lebensdauer, wo einheimische nicht wirklich. Einheimische werden in verschiedenen Betriebssystemen seit vielen Jahren laufen, ohne Updates erforderlich ist.

.Net-Programme können durch schlechte .Net Konfiguration abgespritzt werden, nativer halten nur auf Laufen und kaum von OS-Updates durchgeführt wird.

.Net Programme langsamen Start und fühlen sich träge, nativer beginnt schnell und läuft schnell.

NET hat für kleinste gemeinsame Nenner (die meisten verteilten Framework-Version) kodiert werden, kompiliert india den gesamten Code in die Anwendung - so verwenden, was Sie wollen

.

Mit Delphi für Native, nicht C ++. .Net ist teilweise auf Basis von Delphi RAD und Java-Backend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top