Wie zeitgemäß ist Visual C++ MFC noch ?



  • Hallo,

    ich habe eine eher grundsätzliche Frage zu Visual C++ MFC.
    Konkret stehe ich vor der Aufgabe, eine C++/MFC Anwendung welche Steuerungsaufgaben in einer Fertigungsstraße übernimmt zu erweitern. Die Software stammt aus dem Jahr 2012, funktioniert aber noch sehr gut, ist gut lesbar und lässt sich im Visual Studio 2019 kompilieren. Darum konnte ich mich bisher noch nicht zu der Entscheidung durchringen, die Software auf eine aktuelle Plattform zu migrieren. Ich kenne MFC-Anwendungen aus der Vergangenheit, habe aber die Technik in den letzten 15 Jahren nicht mehr verfolgt. Darum fehlt mir im Moment bisschen das Gefühl, was sich denn noch so getan hat. Zum Beispiel in Sachen Datenbankanbindung oder der Möglichkeit Libraries einzubinden usw.

    Mich würde dazu Eure Einschätzung interessieren.

    Danke vorab
    Tieger



  • Wenn portabler Code erzeugt werden soll, würde ich von der MFC abraten. Für die GUI-Programmierung empfehle ich Qt oder wxWidgets.



  • @Helmut-Jakoby
    Steuerungsaufgabe in einer Fertigungsstraße, da würde ich annehmen: Portierbarkeit ist nicht wirklich wichtig. Also wäre schön wenn es auch auf aktuellen Windows Versionen noch läuft und man nicht gerade Windows 98 SE verwenden muss. Aber davon abgesehen... wörscht.

    @Tieger

    Zum Beispiel in Sachen Datenbankanbindung

    Für Datenbankanbindung würde ich eher nicht die MFC-Boardmittel verwenden, sondern ADODB. Man kann die MFC Datenbank-Klassen verwenden, ja. Ich finde die aber ziemlich eigenartig und mühsam. ADODB lässt sich problemlos parallel zu MFC verwenden.

    oder der Möglichkeit Libraries einzubinden usw.

    Libraries einbinden geht in einer MFC Anwendung genau so schwer/einfach wie in anderen C++ Anwendungen. Signifikante Unterschiede gibt es erst wenn du zu einer anderen Sprache wie z.B. C# wechselst.

    Die Software stammt aus dem Jahr 2012, funktioniert aber noch sehr gut, ist gut lesbar und lässt sich im Visual Studio 2019 kompilieren. Darum konnte ich mich bisher noch nicht zu der Entscheidung durchringen, die Software auf eine aktuelle Plattform zu migrieren.

    Klingt doch gut. Was ist denn der Grund warum du überhaupt darüber nachdenkst irgendwas zu migrieren?

    MFC ist zwar alt und es tut sich nicht mehr viel, aber es ist immer noch supported und funktioniert. Ein grosser Vorteil von alten Libraries die keine grossen neuen Features mehr bekommen aber immer noch aktiv supported werden (neue Versionen mit neuen Bugfixes) ist halt dass sie meist ziemlich stabil sind. D.h. du musst dir keine grossen Sorgen machen dass das nächste Update irgend ein Feature deines Programms bricht.



  • Hallo zusammen,

    ich bin auch noch so einer der alte Tools weiterentwickeln muss. Aktuell habe ich auch eine Maschinensteuersoftware in der Mache. Ich finde die MFC gut, da man schnell mit den Oberflächen zum Ziel kommt. Wenn man die Philosophie verstanden hat dann ist das nciht schwer. Bisher konnte ich jedes Problem auch mit den MFC lösen. Auch dank dieses Forums hier und den guten Tipps, die man hier bekommt. 👍
    Zu den Datenbankklassen: meine Datenbankuterstützung läuft komplett damit. Wir haben andere Tools, die auf Basis von .Net laufen. Da ist die Performance oft nicht so gut. In der VS 2019 werden allerdings ODBC-Klassen nicht mehr vom Assistenten unterstützt und müssen manuell erstellt werden.
    Was Qt und Co angeht: Qt kannschon mal bei kommerzieller Nutzung Geld kosten, was z.B. bei uns schon mal nicht eingesehen wird auszugeben. Andernfalls bekommt man keinen Support, was im kommerziellen Bereich schon wichtig wäre. Die MFC sind im Visual Studio (wofür man ja schon mal Geld ausgeben musste) mit dabei und mittlerweile für den Hobby-Programmierer auch in der Community Edition verfügbar.
    Ja, die MFC ist vielleicht älter als mancher User hier. Aber es wird schon einen Grund geben warum die immer noch im VS von Microsoft mitgeschleppt wird.



  • @hustbaer sagte in Wie zeitgemäß ist Visual C++ MFC noch ?:

    Klingt doch gut. Was ist denn der Grund warum du überhaupt darüber nachdenkst irgendwas zu migrieren?

    Momentan läuft die Steuerung auf einem Win 7 Rechner der dringend durch Win 10 ersetzt werden sollte. Es gibt da aber noch andere Abhängigkeiten die das noch verhindern. Zum Beispiel eine PRODAVE Schnittstelle zur Siemens SPS die unter Win 10 nicht läuft. Außerdem, soll die Software noch um zusätzliche Aufgeben erweitert werden. D.h., ein Umbau ist auf jeden Fall notwendig, daher stellt sich die Frage wie groß der Schritt werden soll/muss. Wenn es keinen zwingenden Grund gibt zu migrieren würde ich das auch gerne sein lassen.



  • @Helmut-Jakoby sagte in Wie zeitgemäß ist Visual C++ MFC noch ?:

    Wenn portabler Code erzeugt werden soll, würde ich von der MFC abraten. Für die GUI-Programmierung empfehle ich Qt oder wxWidgets.

    Wie ich oben schon erwähnt habe, will ich nicht um jeden Preis portablen Code erzeugen. Es geht vor allem darum für einige Jahre eine wartbare Anwendung zu haben die auch noch auf aktueller Hardware läuft.



  • @Tieger sagte in Wie zeitgemäß ist Visual C++ MFC noch ?:

    Es geht vor allem darum für einige Jahre eine wartbare Anwendung zu haben die auch noch auf aktueller Hardware läuft.

    Das Problem mit der Hardware kann man oft mit VMs lösen - wenn es sein muss. Die meisten Karten/Geräte kann man direkt einer VM zuordnen, so dass diese direkt darauf zugreifen kann - mit dem Treiber für das OS das in der VM installiert ist.

    Würde ich eher nicht machen wenn es nicht sein muss, aber es ist eine Möglichkeit.

    Vor allem wenn es praktikabel ist das Gerät komplett vom Internet zu trennen ist das Risiko durch alte, ungepatchte OS Versionen in der VM dann auch relativ gering. Vermutlich sogar deutlich geringer als wenn man eine aktuelle OS Version drauf hat und dem PC Zugriff zum Internet erlaubt.

    Und wenn alle Stricke reissen gibt es im Industrie-PC Bereich auch immer noch "aktuelle" Mainboards zu kaufen die mit uralt Windows Versionen funktionieren, noch alte PCI Slots oder z.T. sogar noch ISA Slots drauf haben etc. Nachteile dabei sind der Preis und dass die Systeme eher schwach sind (CPU Leistung etc.).



  • Maschinen -Steuersoftware benötigt keine Portierungen, und mit basic/java usw. entfernt man sich zusehnst von den Möglichkeiten die
    dem Internal Programmierer zur Verfügung stehen. Der geringe Mehraufwand ist sehr Modern und empfehlenswert.
    Mfc Anwendungen von 1995 sind heute noch kompilierbar und sehr schnell.
    Will der Internalist Schreiberleichterung, baut er sich einen Scripthost ein.



  • Dein Projekt ist von 2012, also bereits entwickelt, getestet und korrigiert.
    Eine Portierung kostet viel Geld, Zeit und Nerven. Meist steckt hinter solchen Gedanken die "Unlust" sich in vorhandenen Code einzulesen.

    Zumal die olle MFC zwei entscheidende Vorteile bietet, wenig Overhead und es gibt eigentlich nichts was mehr long time support bietet. Mit relativ wenig Aufwand bekommt man Code aus den 90ern durch den Compiler. Schön und intuitiv ist was anderes 🙂

    Die Frage nach Portierbarkeit stellt sich bei einer Steuerungssoftware meist nicht. Eigentlich ist die gewünschte Portierbarkeit meist ein nicht erforderlich, idealistischer, extremer Kostentreiber.

    Eine Umfrage bei unseren Kunde hat ergeben, dass eigentlich alle mit Windows + Windows Server arbeiten. Dazu ein paar Mac bei den Grafikern sonst aber nichts. Bei der Frage zu Datenbanken gab es nur eine Antwort SQL Server meist geclustert. Der externe Auftritt meist mit Wordpress, welches auch extern gewartet wird.

    Echte Portierbarkeit ist eigentlich nur erforderlich bei Cloud, Software as a Service, also Web. Um die Anwendung an möglichst viele Kunde und ohne Installationsaufwand zu verkaufen.

    Die Vorschläge zu Qt und WxWidgets würde ich stark überdenken. WxWidgets ist ein MFC Clone ohne den RAD Vorteil vom Dev Studio. Qt ist da deutlich moderner, kompletter und gefälliger. Allerdings ist die Entwicklung mit .net core in C# + F# deutlich einfacher und günstiger.