Wie kann ich entscheiden, ob ATL zu verwenden, MFC, Win32 oder CLR für ein neues C ++ Projekt?

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

  •  03-07-2019
  •  | 
  •  

Frage

Ich fange gerade mein erstes C ++ Projekt. Ich verwende Visual Studio 2008 . Es ist eine Single-Form-Windows-Anwendung, die ein paar Datenbanken zugreift und initiiert eine WebSphere MQ-Transaktion. Ich verstehe im Grunde die Unterschiede zwischen ATL, MFC, Win32 (Ich bin ein wenig verschwommen auf, dass man tatsächlich) und CLR, aber ich bin ratlos, wie ich wählen soll.

Ist ein oder mehr von diesen gab es nur aus Gründen der Abwärtskompatibilität?

Ist CLR eine schlechte Idee ?

Irgendwelche Vorschläge geschätzt.

Edit: Ich habe C ++ für Gründe für dieses Projekt gewählt ich nicht in der Post ging, die nicht vollständig technisch ist. Also, angenommen C ++ ist die einzige / beste Option, die soll ich wählen?

War es hilfreich?

Lösung

Es hängt von Ihren Bedürfnissen.

die CLR können Sie Zeit mit der ausdrucksvollsten Satz von Bibliotheken (die gesamte .NET-Framework), auf Kosten bieten die ausführbare Datei zu erfordern, das .NET Framework Einschränkung zur Laufzeit installiert ist, sowie werden, wie Sie auf die Begrenzung Windows-Plattform (jedoch alle 4 genannten Technologien sind nur Windows, so dass die Plattform Einschränkung ist wahrscheinlich die am wenigsten störend).

Allerdings CLR erfordert, dass Sie die C ++ / CLI Erweiterungen der Sprache C ++ zu verwenden, so dass Sie, in essense, müssen einige zusätzliche Sprachfunktionen lernen, um diese zu nutzen. Dadurch gibt, so dass Sie viele "Extras", wie der Zugang zu den .net-Bibliotheken, vollständige Garbage Collection, etc.

ATL & MFC sind etwas schwieriger zu entscheiden, zwischen. Ich würde verweisen Sie auf MSDN Seite für die Wahl um zwischen ihnen zu entscheiden. Die nette Sache über ATL / MFC ist, dass Sie das .NET Framework nicht brauchen, nur das VC / MFC Runtimes für die Bereitstellung installiert werden.

Mit Win32 liefert direkt die kleinsten ausführbare Dateien, mit den wenigstenen Abhängigkeiten, aber mehr Arbeit zu schreiben ist. Sie haben die geringste Menge an Hilfsbibliotheken, so dass Sie mehr von dem Code zu schreiben.

Andere Tipps

Win32 ist die rohe, Bare-Metal-Art und Weise, es zu tun. Es ist mühsam, schwierig zu bedienen, und viele kleine Details hat man sich merken müssen, sonst werden die Dinge in relativ mysteriöse Weise versagen.

MFC baut auf Win32 Ihnen eine objektorientierte Art und Weise zu schaffen, Ihre Anwendung zu bauen. Es ist kein Ersatz für Win32, sondern eine Erweiterung -. Es für Sie eine Menge harter Arbeit tut

System.Windows.Forms (was ich nehme an, Sie von CLR gemeint) völlig anders ist, aber große Ähnlichkeiten mit MFC aus seiner Grundstruktur aufweist. Es ist bei weitem am einfachsten zu verwenden, sondern erfordert den .NET-Framework, das nicht kann ein Hindernis in Ihrem Fall sein oder auch nicht.

Meine Empfehlung: Wenn Sie .NET vermeiden müssen, dann MFC verwenden, sonst .NET verwenden (in der Tat, in diesem Fall würde ich C # verwenden, da es viel einfacher ist, mit zu arbeiten).

Soweit C ++ geht, würde ich WTL verwenden. Es ist lightweght und Sie haben nur wenige (wenn überhaupt) Abhängigkeiten, so dass es leicht zu transportieren und zu installieren. Ich finde es sehr befriedigend, wenn meine Anwendung einer einzigen EXE besteht, die auf den meisten Versionen von Windows ausgeführt werden, aber das kann kein Problem für Sie sein.

Wenn Sie stattdessen .NET gehen, dann C # an Sicherheit grenzender Wahrscheinlichkeit ist der Weg zu gehen.

Mehr in WTL hier:

http://www.codeproject.com/KB/wtl/wtl4mfc1.aspx

würde ich sehr gespannt sein, warum Sie dies in C ++ überhaupt tun würden. Basierend auf Ihrer kurze Beschreibung, klingt C # wie eine viel bessere Wahl.

Nur ein bisschen zu erarbeiten, Blick auf den Link sind Sie auf die C ++ CLR beschreibt. Die am besten bewerteten Antwort Noten (genau, meiner Meinung nach), dass C ++ ist geeignet für „kernel, Spiele, High-Performance und Server-Anwendungen.“ - von denen keiner scheint zu beschreiben, was Sie tun

MFC, ATL, etc. werden im Sinne unterstützt werden, dass, ja Sie in der Lage sein, Ihre Anwendung auf zukünftige Versionen von Visual Studio zu kompilieren und sie auf zukünftige Versionen von Windows ausgeführt werden. Aber sie sind nicht im Sinne unterstützt, dass es nicht viele neue Entwicklung geht in die API oder die Sprache auf die gleiche Weise es in der CLR und C # ist.

Es ist nichts falsch mit CLR. Wie andere hier würde ich vorschlagen, C #, aber wie Sie haben Gründe für die mit C ++ kleben dann den .NET-Framework ist mehrere tausend Mal leichter als mit ATL Messing / MFC, wenn Sie nicht mit ihnen bereits vertraut sind (IMO).

Es kann erwähnenswert sein, dass wenn Sie mit C ++ / CLR dann sind Sie nicht wirklich C ++ überhaupt verwendet wird. C ++ / CLR kompiliert CIL wie C #. Ich habe es selbst nie benutzt, aber ich glaube, um ihren Zweck zu ermöglichen, ist Du Legacy-Code zu kompilieren und machst es zu neuem .NET-Code leicht zugänglich und nicht zu erlauben, neue Code Arbeit mit alten C ++ ausführbaren Dateien. Es gibt andere Methoden des Aufrufs nativen Code von .NET, die, vielleicht sollten Sie erforschen.

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