Native C++, C++/CLI + C#, alles mischen?!



  • Hi,

    ich hab folgendes Problem, ich will eine Anwendung schreiben.
    Diese Anwendung arbeitet teilweise mit dem Internet via Boost Asio und stellt Berechnungen an. Alles unmanaged.

    Nun wäre es ja kein Problem, das ganze grafisch darzustellen, indem ich C++/CLI verwende, doch so weit ich sehen kann, wird C++/CLI nicht so sehr von MS gepflegt wie C# und unterstützt noch nicht mal wirklich XAML...

    Hieße das, dass es ratsam wäre, wenn ich die GUI mit C# entwickel, die Eventfunktionen etc. per C++/CLI und dann den native Code so einbau.

    Es wäre ja richtig blöd für eine Anwendung drei verschiedene Programmiersprachen zu verwenden, nur weil C++/CLI nicht so für GUIs geeignet ist wie C#.



  • Schau Dir mal den Thread hier an:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-247172.html

    Generell würde ich managed und native Code nicht mischen wenn Du nicht musst (und wenn Du ein Projekt neu startest, dann musst Du nicht!).

    Simon

    Edit:
    Ausserdem ist die Unterstützung für Netzwerkprogrammierung mit .NET sehr gut, da benötigst Du kein boost::asio.



  • (thx für den thread)

    theta schrieb:

    Generell würde ich managed und native Code nicht mischen wenn Du nicht musst (und wenn Du ein Projekt neu startest, dann musst Du nicht!).

    Das hab ich mir auch schon gedacht, nur dann stellt sich noch die Frage, ob ich C++/CLI oder doch eher C# verwenden soll.
    C++/CLI bietet ja keine XAML Unterstützung...

    Vllt sollte ich auch komplett auf QT umsteigen... -.-



  • C++/CLI ist mehr als Brücke zwischen Native und Managed anzusehen. Der Formdesigner ist so schon notdürftig genug. Btw.: Man muss ja nicht gleich alles in WPF machen. Wenn Du QT in betracht ziehst, dürfte Winforms auch reichen.



  • Das ganze soll eine größere Anwendung werden, wobei ich vor Dokumente automatisch nach einer Datenbank erstellt werden sollten, diese dann bearbeitbar sein sollten + druckbar.

    Da hab ich mir gedacht, dass dies mit WPF leicht zu lösen wäre, doch dafür müsste ich dann eben mit C# arbeiten, was die Einbindung von C++ erschwert. Dann müsste ich im Prinzip alles managed machen, obwohl es ja unnötig wäre.



  • MarxV92 schrieb:

    Da hab ich mir gedacht, dass dies mit WPF leicht zu lösen wäre, doch dafür müsste ich dann eben mit C# arbeiten, was die Einbindung von C++ erschwert.

    Ich würde auch entweder C++ oder C# programmieren. C++/CLI sehe ich nur dort als sinnvoll an, wo Altcode nach .Net migriert werden soll, und man zwischen beiden Welten kommunizieren muss.

    MarxV92 schrieb:

    Dann müsste ich im Prinzip alles managed machen, obwohl es ja unnötig wäre.

    Wenn du managed Code einsetzt ist es unsinnig es nur zum Teil zu machen (Den das .Net Framework ist dann ohnehin geladen).



  • Also ich seh schon, C++/CLI ist noch nicht gut genug entwickelt, um damit ganze Projekte selbst zu schreiben.

    Was meint ihr wäre sinnvoller, wenn ich mit Dokumente erstellen will, Berechnungen anstellen will etc.
    C++(Qt) oder C#?

    EDIT: Es geht mir hauptsächlich darum, dass ich eine nette GUI-Anwendung programmieren will + es sollen wie gesagt Dokumente erstellt werden, nach Formulareingabe.



  • MarxV92 schrieb:

    Also ich seh schon, C++/CLI ist noch nicht gut genug entwickelt, um damit ganze Projekte selbst zu schreiben.

    C++/CLI ist an sich schon gut entwickelt, nur ist sein Einsatzgebiet noch begrenzt. Aber es gibt beispielsweise keine bessere Sprache für die Kommunikation zwischen nicht-managed und managed Code.

    MarxV92 schrieb:

    Was meint ihr wäre sinnvoller, wenn ich mit Dokumente erstellen will, Berechnungen anstellen will etc.
    C++(Qt) oder C#?

    Beides hat seine Vor- und Nachteile.

    C# & .Net erlauben ein relativ schnelle Projektumsetzung. C++ wiederum lässt mehr Freiheiten, erfordert aber auch mehr Aufwand.

    cu André



  • Also ich benutze C++/CLI auch nur um eine (wie von anderen hier schon geschrieben) Schnittstelle von nativen C/C++ nach .NET zu machen. Damit entfällt dann auch das ganze DllImport-Gefrickel/-Gedöhns (pfui!) im C#-Code. Ich denke dafür ist C++/CLI einfach bestens geeignet.

    Um komplette Anwendungen damit zu entwickeln wäre denk ich C++/CLI die falsche Entscheidung, auch wenn man damit das komplette NET-Framework benutzen kann.

    Schreib Deine Anwendung erstmal in C# und bau Dir eine Schnittstelle in C++/CLI zu Deiner C++ Anwendung. Danach kannst Du immernoch entscheiden ob Du Deine C++-Anwendung ebenfalls in C# schreibst.

    Ich finde es ist auch ein Vorteil von .NET das man die freie Wahl hat was für eine Sprache man nimmt, sogar innerhalb eines Projektes kann man frei entscheiden, denn am Ende ist alles MSIL 🙂

    Gut Schuß
    VuuRWerK 😉



  • VuuRWerK schrieb:

    Um komplette Anwendungen damit zu entwickeln wäre denk ich C++/CLI die falsche Entscheidung, auch wenn man damit das komplette NET-Framework benutzen kann.

    Selbst wenn man das komplette .Net-Framework nutzen kann, fehlt eine direkte Sprachunterstützung für einige Bereiche (Beispielsweise WPF mit C++/CLI ist nur eingeschränkt sinnvoll). Daher würde ich nicht von einer kompletten .Net-Unterstützung reden (Dafür fehlen u.a. partielle Klassen).



  • Ich werd mich wahrscheinlich für Qt entscheiden, das neue 4er scheint sich ja um einiges verbessert zu haben.

    Ich hab dazu noch ne Frage, aber die werde ich wahrscheinlich im Qt-Forum posten.


Anmelden zum Antworten