Server für Webandwendung C++/Qt oder C#/.Net

Verschiedenes zu Qt
Antworten
Feuer
Beiträge: 20
Registriert: 19. April 2011 08:08

Server für Webandwendung C++/Qt oder C#/.Net

Beitrag von Feuer »

Hallo,

meine aktuelle Firma möchte ihre bereits bestehenden Anwendungen als eine Webanwendung realisieren und somit ins Internet bringen. Hierfür soll ich mit einem Kollegen eine Basis schaffen. Zurzeit machen wir uns Gedanken in welcher Sprache der Server realisiert werden soll, bzw. welches Framework verwendet werden soll.
Die aktuelle Anwendungen sind komplett in C# programmiert worden, dass heißt die Mitarbeiter kennen sich bereits mit C#/.Net sehr gut aus.

Unsere Architektur für den Server sieht eine Websockets/HTTP Implementierung vor, da wir dies für sehr sinnvoll halten. Aufgrund von Websockets können wir auch kein ASP oder IIS etc. einsetzen. Wir wissen das es auch andere Alternativen gibt wie z.B. Node.JS, aber das möchten wir aus verschiedenen Gründen nicht einsetzen, die ich hier nicht näher erläutern möchte. Für uns ist nur C#/.Net und C++/Qt übrig geblieben.
Wir erwarten das mehrere 1000 User den Server nutzen werden, da wir ein entsprechenden Kunden Pool besitzen. Hierzu muss natürlich an die Skalierbarkeit und evtl. an Clustering oder vergleichbares gedacht werden.

Hier zur eigentlichen Frage: Was würdet ihr einsetzen?
Vor/Nachteile die jeweils für C#/.Net bzw. C++/Qt sprechen: (Was bei dem einem der Vorteil ist, ist selbstverständlich bei der anderen Sprache der Nachteil, deswegen spare ich mir die Nachteile aufzuschreiben)

C#
- In unserem Fall die meisten Mitarbeiter kennen diese Programmiersprache und müssen sich nicht neu einarbeiten
- Wir können Code von unsere bereits bestehenden Anwendung weiter verwenden bzw. der Aufwand diesen zu übernehmen ist geringer
- Garbage Collection

C++
- Meiner Meinung nach schneller
- Kostenlos
- Speicherkontrolle (Ich persönlich finde das es gerade bei einer Server Anwendung wichtig ist das man Speicherkontrolle hat)
- Plattform unabhängig
- Map-Reduce

Gibt es irgendwelche weiteren Vorteile gegenüber der anderen Sprache oder gibt es irgendwas wichtiges was die andere Sprache nicht hat und wichtig sein könnte?
Was denkt ihr sollten wir in unserer Planung noch beachten?

Ich persönliche favorisiere Qt, weil ich bisher immer super Erfahrung damit gemacht habe und mit C# immer wieder geschimpft habe.

Liebe Grüße
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Server für Webandwendung C++/Qt oder C#/.Net

Beitrag von RHBaum »

Meine Erfahrung ist:
Mit "verwalteten" Sprachen (kenn c# ned so im Detail, aber java, python & co) laesst sich meist um längen fixer und sicherer entwickeln.
C++ macht nur richtig Sinn, wenn es um Performance / Runtimefreiheit geht geht.
Wenn man wiederum die 80/20 Regel bedenkt, ist der Koenigsweg meist die basis in der abstrakteren Sprache zu schreiben, und nur performancekritische Dinge in C / C++ zu implementieren.

Wenn Ihr mit leben koennt, Euren Server immer auf nem M$ System laufen zu lassen (.Net), würd ich die Basis in C# machen. Und vielleicht 1 oder 2 Leute nebenbei auf mal auf c/c++ Kurs schicken.
Die Vorteile ueberwiegen da IMHO ...
und die kritischen punkte erst mal naiv bauen
(nen Map reduce kriegst auch c# hin)
und nur fuers optimieren c/c++ ins auge fassen, bzw eure Datenhaltungs-lösung noch mal zu uberdenken und vielleicht nen no-sql system einsetzen was map reduce kann.

Wichtiger find ich, von haus aus modularer zu planen, Mega-Module mit zig funktionalitaet vermeiden. Und ne Programmiersprachen-Unabhaengige, also binaer definierte Schnittstelle / Protokoll vorsehen.
Dann kannst einzelne module immer noch in ner anderen sprache schreiben wenn sie lahm sind.
weil ich bisher immer super Erfahrung damit gemacht habe und mit C# immer wieder geschimpft habe.
Und was sagen deine Entwickler zu, glaub der Punkt iss auch nicht ganz unwichtig ...

Ciao ...
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Server für Webandwendung C++/Qt oder C#/.Net

Beitrag von brax »

RHBaum hat geschrieben: Wenn Ihr mit leben koennt, Euren Server immer auf nem M$ System laufen zu lassen (.Net), würd ich die Basis in C# machen.
Grundsätzlich stimme ich in allen Punkten zu, aber dass C# nur auf Windows läuft ist schon ne ganze Weile nicht mehr der Fall. Mono ist inzwischen echt gut und steht der CLR in nichts nach.

Ansonsten ist gerade bei Serveranwendungen die Verfügbarkeit (=Stabilität) ein ganz großer Faktor und die ist in Java/C# leichter zu erreichen als in C++, insbesondere wenn die Entwickler bisher keine C++ Entwickler sind. Nur als Beispiel (ich weiß nicht wie es in C# ist): Wenn bei meiner Java-Serveranwendung ein Thread, der einen Client bedient, abschmiert (null-Pointer Exception z.B.), interessiert das die anderen Threads reichlich wenig. Versuch mal, in C++ hinzubekommen, dass ein Segfault in einem Thread nicht gleich alles mit sich reißt.

Und auch die Sache mit der Performance stimmt so einfach nicht, hält sich aber nachwievor (weil es früher tatsächlich mal so war, aber die VMs von Java/C# haben echt aufgeholt). Ja, man kann mit C++ sehr schnellen Code schreiben. Aber jemand mit wenig C++ Erfahrung wird mit relativ großer Wahrscheinlichkeit nichts hinbekommen, was schneller wäre als die JIT-Kompilierten C#/Java Gegenstücke, die noch dazu zur Laufzeit optimieren können, während C++ nur einmal statisch vom Compiler optimiert wird. Beispiel: http://reverseblade.blogspot.de/2009/02 ... mance.html
Antworten