Forum: PC-Programmierung Optimale Programmierung für Webanwendung ?;


von interrupt (Gast)


Lesenswert?

Hallo,

ich habe hier ein bereits älteres cgi-Prgramm ("/cgi/anwendung.exe") zur 
Visuliasierung von Messdaten aus einer Datenbank über einen Webbrowser, 
das auf dem Microsoft Internet Information Server läuft und per default 
("index.html") aufgerufen wird.

Das Programm ist in C geschrieben und streamt je nach den gewählten 
Optionen den passenden html-Code direkt in den Browser.
Damit ist es auch dynamisch, weil es sich je nach den angeklickten 
Optionen (Schaltflächen) selbst mit den entsprechenden Parametern wieder 
aufruft.

Jetzt stellt sich Frage nach einer Erneuerung und mich würde 
interessieren, welche Lösung ihr für so eine Anwendung unter aktuellen 
Gesichtspunkten empfehlen würdet (wieder C, C++, Java, Perl, ...) ?

Die Anwendung sollte möglichst ressourcenschonend und schnell laufen, 
mit einer freien Entwicklungsumgebung programmiert werden, zukünftig gut 
weiterzuentwickeln sein und natürlich Datenbankzugriffe beherrschen.

Danke !

von Christian A. (cau) Flattr this


Lesenswert?

In den größeren Unternehmen, in denen ich bereits gearbeitet habe wurde 
zum einen das Zend Framework, also letztendlich PHP genutzt um richtig 
große Anwendungen zu programmieren... damit wurde dann letztendlich eine 
Model-View-Control Struktur angewendet, wodurch die Programme sehr gut 
überarbeitet werden können.

Zum Anderen wird Ruby mit "Ruby on Rails" verwendet. Dazu kann ich nicht 
viel sagen, aber es macht einen sehr guten Eindruck in hinsichtlich der 
Erlernbarkeit der Sprache.

Christian

von Troll (Gast)


Lesenswert?

PHP und Schnelligkeit passen jetzt nicht so ganz zueinander. Der 
komplette Code muss bei jedem Aufruf neu übersetzt werden (Ja ich weiß 
es gibt Bytecode-Spielerein, aber naja). Ich arbeite selbst mit PHP, 
aber hardwarenahe Sprachen wie C/C++ sind mit Sicherheit um einiges 
schneller. Wenn du schon mit C arbeiten kannst, dann bleib dabei. 
Schneller wird höchstens nur noch in Assembler.

von Klaus T. (gauchi)


Lesenswert?

Die Frage verleitet ehrlich gesagt ein wenig zum trollen, denn jeder 
kann jetzt hier seine Lieblingssprache reinschreiben, mit mehr oder 
weniger stichhaltigen Argumenten für oder wider eine spezielle 
Implementierung.

In der Praxis sieht es eigentlich immer so aus, dass Du einen Kompromiss 
zwischen der Programmierarbeit und dem Ressourcenverbrauch eingehen 
musst. Die Anwendung in C zu schreiben ist ziemlich Richtung 
Ressourcenverbrauch optimiert.

Wenn du es neu schreiben willst, ist die wichtige Frage eigentlich 
danach, welche Sprachen und Systeme Du bereits beherrscht und wieviel 
Arbeit Du in die Neuentwicklung stecken willst. Wenn du eine neue 
Sprache verwenden willst, musst du mit Sicherheit alles neu schreiben. 
Wenn du bei C bleibst, kannst du vielleicht Teile des alten übernehmen. 
Je nach Umfang des Ganzen kann sich das lohnen oder nicht.

Letztlich ist es immer die Frage: wieviel kostet Deine Arbeitszeit und 
was kostet der neue Rechner, wenn der alte nicht mehr schnell genug ist. 
Eine optimale Sprache oder Entwicklungsumgebung würde ich angesichts 
der Frage nicht empfehlen, denn wenn Du z.B. bereits der C-Guru bist, 
wirst Du da wahrscheinlich mit weniger Arbeit eine Lösung entwickeln 
können als wenn Du zusätzlich noch etwas komplett neues lernen musst, 
bevor Du mit der eigentlichen Arbeit anfängst.

von MaWin (Gast)


Lesenswert?

> Jetzt stellt sich Frage nach einer Erneuerung

Du meinst dasselbe noch mal schlechter zu schreiben ?

> C++, Java, Perl

sind aus Resourcensicht natürlich viel schlechter aös
die bestehende Lösung.


Der eizige Nachteil der CGI basierten Lösung ist,
daß anwendung.exe bei jedem Aufruf neu geladen wird.

Falls also die Antwortzeit und nicht der Hauptspeicher
auf dem Server die zu schonende Resource ist, wäre
eine Lösung besser, die als DLL immer im Speicher hängt.

Ansonsten ist man ja gerne für mehr Flexibilität, also
eine Vorlage in die vom Programm beim Abruf nur die
Daten eingefüllt werden. Die Vorlage kann in HTML sein.
Ob die Daten als Felder darin auftuchen oder komplexer
sind, hast du nicht geschrieben.

von Iis (Gast)


Lesenswert?

Früher gab es im VisualStudio einen Wizard für IIS dll's. Da gibt es 
dann ein Funktion( oder war das schon C++, i don't remember), in die die 
Applikationslogik rein kam, fast wie CGI. Und wer die bestehende Version 
in C versteht, der bekommt auch das hin. Nur die ganz alte CD's muß man 
halt noch haben ...

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

MaWin schrieb:
> Der eizige Nachteil der CGI basierten Lösung ist,
> daß anwendung.exe bei jedem Aufruf neu geladen wird.

Das passiert bei PHP auch ...

Es geht wunderbar in C. Flaschenhals ist halt das CGI (da könnte
man durch fastCGI noch einiges herausholen). PHP ist im Vergleich
zu C grottenlahm, fehleranfällig und halt ein Interpreter.

(Ich habe ein größeres System unter Apache und C laufen)

von Iis (Gast)


Lesenswert?


von Lukas K. (carrotindustries)


Lesenswert?

Wie wär's mit node.js? Da muss auch nicht bei jedem Aufruf der Code neu 
übersetzt werden und man hat auch keinen CGI-Flaschenhals.

von Peter II (Gast)


Lesenswert?

wenn eh schon ein Windows eingesetzt wird, dann würde ich mir mal 
ASP.NET anschauen. Man kann ganz einfache seiten erzeugen (vergleichbar 
mit PHP) und wenn es etwas mehr sein soll richtige Anwendungen. Diese 
können dann auch Threads ausführen. Globale persistente Veriabeln und 
ähnliches.

Bei PHP gefällt mit nicht, das es bei jeden Seitenaufruf immer bei 0 
losgeht, da müssen erstmal die Session eingelesen werden 
datenbankverbindungen (teilweise) neu aufgebaut werden usw. Bei .NET 
bleibt das alles im RAM erhalten und damit sind kleine aufrufe (z.b. 
Ajax ) viel schneller.

Es gibt sehr viele Erweiterungen wie z.b. für Imageerzeugung.

Und wenn es sein muss, läuft es sogar unter linux mit mono.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Peter II schrieb:
> Bei PHP gefällt mit nicht, das es bei jeden Seitenaufruf immer bei 0
> losgeht, da müssen erstmal die Session eingelesen werden
> datenbankverbindungen (teilweise) neu aufgebaut werden usw. Bei .NET
> bleibt das alles im RAM erhalten und damit sind kleine aufrufe (z.b.
> Ajax ) viel schneller.

Liegt doch eh alles im Cache.

Ich arbeite auch viel mit Ajax, es läuft alles über eine exe
die die Aufrufe decodiert und ausführt. Flaschenhals ist die
Auslieferung über den Webserver und die Leitung, die Lade- und
Startzeiten der exe merkst Du nicht (Erfahrungswerte - kein
Blabla).

von A. B. (funky)


Lesenswert?

"Die Anwendung sollte möglichst ressourcenschonend und schnell laufen,
mit einer freien Entwicklungsumgebung programmiert werden, zukünftig gut
weiterzuentwickeln sein und natürlich Datenbankzugriffe beherrschen."

Naja, definiere möglichst Ressourcenschonend? Der IIS ist ja nun auch 
nicht gerade für geringen Resourcenverbrauch bekannt...

Ich würde für die Anwendung ja eine Websprache wie PHP nehmen. Damit 
sind Datenbankzugriffe etc. aufjedenfall einfacher umzusetzen als in 
C++. Auch die sonstige Entwicklung dürfte wesentlich flotter 
vorangehen(auch wenn man natürlich ziemlich viel Kacke damit anstellen 
kann, wenn man sich nicht auskennt)

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. B. schrieb:
> Ich würde für die Anwendung ja eine Websprache wie PHP nehmen. Damit
> sind Datenbankzugriffe etc. aufjedenfall einfacher umzusetzen als in
> C++. Auch die sonstige Entwicklung dürfte wesentlich flotter
> vorangehen(auch wenn man natürlich ziemlich viel Kacke damit anstellen
> kann, wenn man sich nicht auskennt)

Was soll das sein, eine "Websprache" ?

Datenbankzugriffe in C sind bei zB SQLite genauso einfach.

Die "Entwicklungszeit" richtet sich nach dem Können des
Entwicklers, nicht der Sprache.

von Peter II (Gast)


Lesenswert?

Joachim Drechsel schrieb:
> Ich arbeite auch viel mit Ajax, es läuft alles über eine exe
> die die Aufrufe decodiert und ausführt.

auch mit Datenbankanbindung?

denn die anmeldung an den DB dauert auch ein paar ms und kosten im 
Datenbankserver resourcen. diese kann man sich sparen wenn die anwendung 
persistent ist.

Das starten einer EXE kosten schon viele resourcen, das ist der 
schlechteste weg soetwas umzusetzen. Da ist isapi schon ein stück 
besser, da wird die anwendung nur einmal geladen und dann jeweils nur 
ein Thread gestartet.

Das man bei soetwas keinen unteschied merkt wen nur ein paar 100 request 
pro s ankommen ist klar. Aber es gibt auch server wo es ein paar 1000 
sein können und da macht es sich auf jeden Fall bemerkbar.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Peter II schrieb:
> auch mit Datenbankanbindung?

SQLite

> denn die anmeldung an den DB dauert auch ein paar ms und kosten im
> Datenbankserver resourcen. diese kann man sich sparen wenn die anwendung
> persistent ist.

Klar. Wenn's mal klemmt mache ich für den Indianer ein Modul.

> Das starten einer EXE kosten schon viele resourcen, das ist der
> schlechteste weg soetwas umzusetzen. Da ist isapi schon ein stück
> besser, da wird die anwendung nur einmal geladen und dann jeweils nur
> ein Thread gestartet.

Es ist der einfachste Weg.

> Das man bei soetwas keinen unteschied merkt wen nur ein paar 100 request
> pro s ankommen ist klar. Aber es gibt auch server wo es ein paar 1000
> sein können und da macht es sich auf jeden Fall bemerkbar.

Es sind noch nicht einmal 100 / sec. Eher weniger wie 10 ;-)

Dafür hat das Programm ordentlich zu tun (Onlie-Archiv mit größeren
Datenbeständen > 1 TB pa). Dazu Zugriffsrechte die ich Dank der
Kreavitität der erlauchten Kundschaft schon nicht mehr über eine
Datenbank gebacke bekomme. Vom Import und der Datenanlyse bis
zur Erzeugung von PDF ist alles drin. Das Programm erzeugt auch
das HTML/CSS und JavaScipt.

Ich hatte das mal aus Neugier mit PHP probiert, es ist zu lahm.

von A. B. (funky)


Lesenswert?

Joachim Drechsel schrieb:

> Was soll das sein, eine "Websprache" ?
>
> Datenbankzugriffe in C sind bei zB SQLite genauso einfach.
>
> Die "Entwicklungszeit" richtet sich nach dem Können des
> Entwicklers, nicht der Sprache.

Nunja...ein Programmiersprache die aus dem Dunstkreis des WWW entstanden 
ist. Wie z.B. eben PHP.

Und die Entwicklungszeit richtet sich absolut nach der 
Programmiersprache, je nach dem was diese dem Programmierer schon an 
Standardaufgaben abnimmt...da ist es wurscht wie gut der Programmierer 
ist.

Klar kannst du das Auslesen deiner Webformulare auch in ASM 
programmieren...das es mit PHP schneller geht, weil es genau für diesen 
Zweck ausgelegt ist, wirst du hoffentlich nicht bestreiten.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. B. schrieb:
> Klar kannst du das Auslesen deiner Webformulare auch in ASM
> programmieren...das es mit PHP schneller geht, weil es genau für diesen
> Zweck ausgelegt ist, wirst du hoffentlich nicht bestreiten.

Schlechtes Beispiel weil zu trivial ... ;)

von MaWin (Gast)


Lesenswert?

> Klar kannst du das Auslesen deiner Webformulare auch in ASM
> programmieren...das es mit PHP schneller geht

Das Erstellen des Programms mag zwar schneller gehen,

aber die Ablaufzeit/Speicherbedarf der WebAnfrage sicher nicht.

von A. B. (funky)


Lesenswert?

omg...da haben wir wieder die Superoptimierer. Hatte jetzt jemand 
ernsthaft das Gefühl, das der Threadersteller das letzte Quentchen an 
Geschwindigkeit benötigt???

Aber klar...bei 08/15 Anwendungen macht es DEN Unterschied ob die 
Anzeige der Seite 50ms oder 100ms dauert. Und natürlich hat hier jeder 
Seiten mit 1000 Request pro Sekunde am laufen, die endlich mal so 
richtig Dampf brauchen.


> Vom Import und der Datenanlyse bis
> zur Erzeugung von PDF ist alles drin. Das Programm erzeugt auch
> das HTML/CSS und JavaScipt.

Was ist das denn für eine Anwendung, das dein Serverprogramm dynamisch 
JavaScript erzeugen muss?!

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. B. schrieb:
> Was ist das denn für eine Anwendung, das dein Serverprogramm dynamisch
> JavaScript erzeugen muss?!

Online-Archiv mit einer Prise Workflow, ausgelegt für große
Datenmengen. Seit ca 8 Jahren online.

von Robert L. (lrlr)


Lesenswert?

ich würde (in diesem fall) vermutlich auch eine ISAPI DLL machen..
da sollte man den code zu 95% beibehalten können

oder alternativ eine "haupt" exe (als Service/Dienst) der immer läuft
und die "arbeit" macht (Datenbankverbindungen öffen hält usw. )

und eine kleine/schmale cgi exe die sich nur damit "verbindet" ..

von Mark B. (markbrandis)


Lesenswert?

Joachim Drechsel schrieb:
> Was soll das sein, eine "Websprache" ?

Auch wenn Du PHP und Konsorten nicht magst, wirst Du doch wohl sehr 
genau wissen, was mit dem Begriff gemeint ist. Also bitte nicht trollen.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Mark Brandis schrieb:
> Joachim Drechsel schrieb:
>> Was soll das sein, eine "Websprache" ?
>
> Auch wenn Du PHP und Konsorten nicht magst, wirst Du doch wohl sehr
> genau wissen, was mit dem Begriff gemeint ist. Also bitte nicht trollen.

Lies nochmal was ich geschrieben hatte ...

von c. m. (Gast)


Lesenswert?

interrupt schrieb:

> Jetzt stellt sich Frage nach einer Erneuerung und mich würde
> interessieren, welche Lösung ihr für so eine Anwendung unter aktuellen
> Gesichtspunkten empfehlen würdet (wieder C, C++, Java, Perl, ...) ?

jeder wird dir das empfehlen was er kennt und was er selbst zum laufen 
bekommt - resourcen werden imho erst dann beachtet wenn sie knapp werden 
und man was merkt.
ICH würds in php oder perl machen, also das daten abholen aus der db, 
und dann entweder ein externes tool (gnuplot?) zum bild erzeugen 
benutzen oder schauen ob php/perl(cpan) sowas nativ kann.

schau dir, jenachdem was für daten du sammelst und visualisierst, mal 
"rrdtool" an :)

von Mark B. (markbrandis)


Lesenswert?

Joachim Drechsel schrieb:
> Lies nochmal was ich geschrieben hatte ...

Dann zeig mir doch mal beispielhaften Code, wie man in C oder C++ ganz 
schnell und einfach auf eine MySQL-Datenbank zugreifen kann. Die 
"Websprachen" können das nämlich.

von (prx) A. K. (prx)


Lesenswert?

Joachim Drechsel schrieb:
>> Der eizige Nachteil der CGI basierten Lösung ist,
>> daß anwendung.exe bei jedem Aufruf neu geladen wird.
>
> Das passiert bei PHP auch ...

PHP ist oft im Apache als Modul drin, wird dann also nicht extern 
geladen, und mit Zeugs wie Zend bewaffnet wird auch das ausgeführte 
Script nicht jedes Mal neu geladen und übersetzt.

Klassische CGIs sind mir unter all dem installierten Kram (den andere 
entwickeln) schon lange nicht mehr untergekommen. Hauptsächlich PHP, 
einiges in serverseitigem Java. Komischerweise ist das Java-Zeugs immer 
das Ressouren-hungrigste.

von A. B. (funky)


Lesenswert?

Joachim Drechsel schrieb:
> A. B. schrieb:
>> Was ist das denn für eine Anwendung, das dein Serverprogramm dynamisch
>> JavaScript erzeugen muss?!
>
> Online-Archiv mit einer Prise Workflow, ausgelegt für große
> Datenmengen. Seit ca 8 Jahren online.

Aha...trotzdem ein merkwürdiges Konstrukt, das man sein JS dynamisch 
erzeugt...oder ist das nur ungenau ausgedrückt?

bist du eigentlich im xhtmlforum.de unterwegs? scheppertreiber kommt mir 
irgendwie bekannt vor.


Udn so trivial find ich mein Beispiel im Kontext dessen was der 
Threadersteller da gepostet hat übrigens nicht...irgendwelche HTML 
Seiten generieren, Buttons auswerten...das hört sich nach Standardkram 
an...da kann man sich das Leben mit PHP einfach machen, oder man fängt 
in C an Strings zu parsen...also ich weiss was mir mehr Spass machen 
würde, aber das kann ja jeder tun und lassen wie ihm beliebt

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. B. schrieb:
> bist du eigentlich im xhtmlforum.de unterwegs? scheppertreiber kommt mir
> irgendwie bekannt vor.

Klar :-)))

Das Forentreffen ist auch bei mir :-)))))))))))))))))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.