user-interface vs - Welche Plattform sollte ich verwenden:natives C++oder C#?




java anders (13)

Ich möchte eine Windows-Anwendung entwickeln. Wenn ich natives C ++ und MFC für Benutzerschnittstelle verwende, wird die Anwendung sehr schnell und klein sein. Aber die Verwendung von MFC ist sehr kompliziert. Auch wenn ich C # verwende, dann wird die Anwendung langsamer als der native Code sein und es erfordert .NET Framework zu laufen. Aber die Entwicklung von GUI ist sehr einfach mit WinForm. Welche bevorzugst du?


Answers

Beachten Sie auch, dass auf den meisten Windows-Computern bereits .NET installiert ist, so dass dies eigentlich keine Rolle spielt.

Abgesehen von der .NET-Installation sind .NET-Anwendungen auch eher klein.

Und für die meisten Anwendungen mit einer Benutzeroberfläche ist die Geschwindigkeit des Benutzers der wirklich begrenzende Zeitfaktor.


Das Geschwindigkeitsargument zwischen nativem und verwaltetem Code ist an dieser Stelle größtenteils kein Problem. Mit jeder Version von .NET Framework werden Leistungsverbesserungen gegenüber den vorherigen erzielt, und die Anwendungsleistung hat für die .NET-Entwicklungsteams stets eine sehr hohe Priorität.

Ab Windows Vista und Windows Server 2008 wird das .NET Framework als Teil des Betriebssystems installiert. Es ist auch Teil von Windows Update, so dass fast jedes Windows XP-System es auch installiert hat. Wenn die Anforderung, dass das Framework auf der Zielmaschine installiert wird, wirklich ein Problem ist, gibt es auch Compiler, die im Wesentlichen die benötigten Laufzeitabschnitte in Ihre Anwendung einbetten, um eine einzelne EXE zu generieren, aber sie sind teuer (und meiner Meinung nach nicht wirklich die Kosten wert).


Achten Sie darauf, nicht zu früh zu optimieren. Sie erwähnen die Geschwindigkeit des Codes, aber für die meisten Windows-Benutzeroberflächenoperationen ist der Unterschied nicht bemerkbar, da sich die Hauptengpässe bei Zeichnung und Festplattenzugriff für beide Ansätze nicht unterscheiden.

Meine Empfehlung ist, dass Sie C # und WPF oder WinForms für Ihre Benutzeroberfläche verwenden. Wenn Sie Verzögerungen feststellen, verwenden Sie einen Profiler, um festzustellen, wo und dann in Erwägung ziehen, einige Geschäftslogik durch systemeigenen Code zu ersetzen, aber nur, wenn es einen Vorteil gibt.


Mit welcher Technologie sind Sie vertrauter?

Die Informationen, die Sie angegeben haben, enthalten nichts, was bei der Entscheidung helfen würde. Ja, MFC-Apps neigen dazu, kleiner zu sein (wenn Sie die Laufzeitgröße einschließen, die auf lange Sicht keine geeignete Maßnahme darstellt), reaktionsfähiger und kostspieliger zu entwickeln. Na und?


Es gibt sehr viele mögliche Windows-Anwendungen, und jede hat ihre eigenen Anforderungen.

Wenn Ihre Anwendung schnell sein muss (und an was ich arbeite), dann ist natives C ++ ein guter Weg.

Wenn Ihre Anwendung klein sein muss (vielleicht für eine wirklich schnelle Übertragung über langsame Leitungen), dann verwenden Sie alles, was klein ist.

Wenn Ihre Anwendung wahrscheinlich sehr oft heruntergeladen wird, möchten Sie wahrscheinlich von späteren Versionen von .NET, die Ihre Benutzer möglicherweise noch nicht haben, misstrauisch sein.

Wenn es, wie die meisten, sowieso schnell und klein genug ist, auf den Systemen, auf denen es wahrscheinlich verwendet wird, nutzen Sie, was es Ihnen ermöglicht, sich am schnellsten und am besten zu entwickeln.

In fast allen Fällen ist das Optimieren der Entwickler der richtige Weg. Verwenden Sie alles, was eine qualitativ hochwertige Arbeit am schnellsten und besten erledigt.


Die Wahl einer Sprache oder eines Werkzeugs sollte von den funktionalen und leistungsbezogenen Anforderungen Ihres Projekts und Ihrer Fachkenntnisse bestimmt werden. Wenn Leistung eine echte Überlegung für Sie ist und Sie eine Analyse durchgeführt haben, um C ++ gegenüber C # zu bevorzugen, dann haben Sie bereits eine Entscheidung. Beachten Sie jedoch, dass MFC-basierte Anwendung auch nicht sehr effizient ist. Auf der anderen Seite sind Overheads in .NET-Anwendungen überbewertet.

Die Leistung hängt davon ab, wie gut Sie Ihren Code schreiben und welche Skalierbarkeitsanforderungen bestehen. Wenn Sie nur mit einem Client mit maximal 1K Datensätzen arbeiten müssten, dann sollten wir nicht über Leistung sprechen.

Wenn die Einfachheit der Entwicklung und Wartbarkeit wichtiger ist, wäre sicherlich C # die erste Wahl.

Ich bin mir also nicht sicher, ob dies eine Frage ist, die mit den von Ihnen zur Verfügung gestellten Daten als Auswahl A oder B beantwortet werden kann. Sie müssen die funktionalen und nicht-funktionalen Anforderungen analysieren und entscheiden.


Blockquote

Mit .NET lässt sich einfacher arbeiten. Wenn Sie keine Benutzer verlieren oder Probleme mit der Code-Migration haben, sollten Sie wahrscheinlich .NET verwenden. Es ist sehr unwahrscheinlich, dass Geschwindigkeit ein Problem dafür sein wird. Die Größe spielt wahrscheinlich auch keine Rolle.


Zuerst .. (obwohl ich ein hartes c ++ Coder bin) muss ich zugeben, c # ist in den meisten Fällen völlig in Ordnung, wo Geschwindigkeit und Größe betroffen sind. In einigen Fällen ist die Anwendung kleiner, weil sich der interpretierte Teil bereits auf dem Zielsystem befindet. (spamm mir das nicht an, eine App mit einer DLL ist kleiner als die App in einem. Windows kommt gerade mit der "DLL", die schon da ist.)

Zur Codierung .. Ich glaube ehrlich gesagt nicht, dass es einen signifikanten Unterschied gibt. Ich verbringe nicht viel Zeit damit, Code zu tippen. Das meiste denkt über ein Problem nach. Der Codeteil ist ziemlich klein. Ein paar Zeilen hier und da einsparen ... Blahh, das ist kein Argument für mich ... Wenn es so wäre, würde ich in APL arbeiten. Das Lernen der STL, MFC und was Sie haben, ist wahrscheinlich genauso intensiv wie das Lernen der c # -Bibliotheken. Am Ende sind sie alle gleich.

C # hat eine Sache für sich. Ein Markt. Es ist die neueste "heiße" Fähigkeit und so gibt es einen Markt dafür. Jobs sind leicht zu finden. Denken Sie daran, Java war eine "heiße" Fähigkeit vor ein paar Jahren und jetzt immer Tom Dick und Harry hat es in ihrem Lebenslauf. Das macht es schwieriger, sich zu nivellieren.

Ok .. alles, was gesagt hat .. Ich liebe C ++ .. Es gibt nichts wie schmutzig werden, wenn ich wirklich brauche. Wenn die MFC-Bibliotheken den Job nicht erledigen, schaue ich mir an, auf was sie sitzen und so weiter und so weiter. Es ist eine persische Sprache und ich glaube, es ist immer noch in der Nähe der meistbenutzten Sprache der Welt. Yah C ++, Yah !.


Da ich keine Informationen über die Anwendung habe, die Sie entwickeln möchten, stimme ich für WPF.


Auch wenn ich C # verwende, dann wird die Anwendung langsamer als der native Code sein und es erfordert .NET Framework zu laufen

Eine MFC-App benötigt MFC-DLLs (und wahrscheinlich auch VC-Runtime!), So dass sie möglicherweise installiert werden müssen, oder wenn sie statisch verknüpft sind, fügen Sie die Größe der exe hinzu.


Meiner Meinung nach sollten die Anforderungen Ihnen helfen, die Plattform zu entscheiden. Was ist wichtiger: Eine Anwendung zu haben, die leicht zu warten ist oder eine, die extrem schnell und klein sein muss?

Eine große Klasse von Anwendungen kann heutzutage mit .NET und verwaltetem Code geschrieben werden und dies ist im Allgemeinen vorteilhaft für die Entwicklung auf lange Sicht. Aus meiner Erfahrung sind .NET-Anwendungen in der Regel schnell genug für die meisten Anwendungsfälle und sie sind einfacher zu erstellen. Natives C ++ hat immer noch seinen Nutzen, aber nur, um "schneller und kleiner" zu sein, wenn "schnell genug und klein genug" ausreicht, klingt nicht genug als Begründung.


"Schnell" und "langsam" sind subjektiv, besonders bei heutigen PCs. Ich sage nicht absichtlich, die Sache langsam zu machen, aber es gibt nicht annähernd so viel Aufwand beim Schreiben einer verwalteten Anwendung, wie Sie vielleicht denken. Der JIT usw. funktioniert sehr gut, um den Code sehr schnell auszuführen. Und Sie können auch für zusätzliche Startgeschwindigkeit NGEN, wenn Sie wirklich brauchen.

Wenn Sie Zeit haben, es zu lernen, sollten Sie vielleicht eher WPF als Winform in Betracht ziehen - das ist ein anderer Skill-Satz, aber Sie können Grafik-Hardware usw. sehr gut nutzen.

Auch - .NET Framework kommt mit neuen Betriebssysteminstallationen und ist immer noch sehr verbreitet auf denen, die es vor dem Datum haben. Für mich wäre es also eine ziemlich klare Entscheidung, mit C # /. NET zu entwickeln. Die Zeit, eine robuste und vollständig getestete C ++ - App (ohne Lecks usw.) zu entwickeln, ist (zumindest für mich) viel größer als bei C #.


Dies basiert auf dem tutorial . Was geschrieben wird, macht es klarer:

>>> The address that locates a variable within memory is
    what we call a reference to that variable. (5th paragraph at page 63)

>>> The variable that stores the reference to another
    variable is what we call a pointer. (3rd paragraph at page 64)

Einfach daran zu erinnern,

>>> reference stands for memory location
>>> pointer is a reference container (Maybe because we will use it for
several times, it is better to remember that reference.)

Da wir uns auf fast jedes Zeiger-Tutorial beziehen können, ist ein Zeiger ein Objekt, das von der Zeigerarithmetik unterstützt wird, wodurch der Zeiger einem Array ähnelt.

Schauen Sie sich die folgende Aussage an:

int Tom(0);
int & alias_Tom = Tom;

alias_Tomkann als alias of a variable(anders mit typedef, was ist alias of a type) verstanden werden Tom. Es ist auch in Ordnung zu vergessen, dass die Terminologie einer solchen Aussage darin besteht, eine Referenz von zu erstellen Tom.





c# c++ user-interface mfc