C++/MFC oder C#/C für Windows Service + GUI verwenden?



  • Hallo!

    Ich habe ein Projekt zu realisieren, das grob umrissen folgendes machen soll:

    Ein Windows Service greift von der WinAPI (WASAPI - Audio API ab Vista) einen Audio Stream ab und verarbeitet diesen weiter. (Konvertierung). Anschließend wird der Stream per Netzwerk an mindestens einer Gegenstelle verteilt. Die Gegenstelle ist ein eingebettetes System (soll hier nicht Gegenstand der Diskussion sein).

    Mein Problem ist nun, dass ich aus der Embedded Ecke komme. Sprich ich entwickle Software in C oder ASM für eingebettete Systeme. Mit der Windows Programmierung hatte ich bisher nicht viel am Hut. Im Studium habe ich Java gelernt und auch dort ein paar kleinere Projekte realisiert.

    Den AudioStream greife ich über die WinApi (COM Objekte ab). Da ich keinen legacy Code habe, stellt sich mir nun die Frage, welche Programmiersprache und welche Bibliotheken ich verwenden soll.

    Ich habe zwei Konzepte:
    1. Ich programmiere den Windows Service sowie die GUI in C++ und verwende wo nötig die MFC.

    2. Ich programmiere den Windows Service sowie die GUI in C# (Windows Forms oder WPF für GUI) und binde bei laufzeitkritischen Sachen (Streamverarbeitung) wo nötig native C Funktionen ein.

    Mir fehlt nun leider die Erfahrung beide Ansätze vergleichen zu können um eine Entscheidung treffen zu können.

    Könnt ihr mir bei dieser Frage weiterhelfen?

    Danke euch!

    Schöne Grüße,

    Flasher



  • Also rein vom Bauchgefühl rate ich dir wohl eher zu C#

    C# ist schön einfach zu programmieren (Du hast keine Pointer und brauchst dir um den Speicher keine sorgen machen: obwohl man manchmal ziemlich seltsame Sachen um den Garbage Collector herum bauen muss damit sachen erhalten bleiben die man erhalten will, bzw manche freigegeben werden da diese verhindern das bestimmte Objekte gelöscht werden). Die Kritischen Sachen machst du dann mit C, in dem du schon wieder Erfahrungen hast.

    In C++ mit MFC wäre alles aus einen Guss, aber nicht jeder C Programmierer ist auch gleich ein guter C++ programmierer. Es gibt da komplett andere Konzepte, und die beherrscht man nicht sofort.



  • Anzumerken ist vielleicht noch, daß sich das UI nicht im Service-Prozeß selbst befinden sollte. Ich mag falsch informiert sein, aber ich glaube, daß Vista und aufwärts einem Service gar keinen Zugriff mehr auf die Window-Station oder den Desktop des Benutzers mehr geben.



  • Das ist sowieso klar. Bei der Applikation die den Service kontrolliert/konfiguriert handelt es sich um eine separate Software.

    Der Service ist eine Anwendung ohne Interaktionsmöglichkeit des Users.

    Also höre ich hier eine deutliche Tendenz zu C# 😉


Anmelden zum Antworten