Forum: PC-Programmierung Wie Web Framework aussuchen?


von Be B. (bebo)


Lesenswert?

Nach welchen Regeln sucht man sich ein WebFramwork aus?

Ruby On Rails habe ich schon getestet aber zu langsam.
ASP.NET werde ich wohl die Finger von lassen.

Sprachen, die ich mir bisher angesehen habe sind C#, Ruby, PHP, Java. 
Über Scala denke ich auch noch nach. Also die Sprache ist für mich kein 
Entscheidungskriterium.

RubyOnRails habe ich nach langem hin und her eher abgeschrieben. Auch 
wenn ich es zwischendurch immer mal wieder probiere. Ist mir irgendwie 
zu träge.

PHP scheint Doppelt zu schnell zu laufen (ohne Framework bisher). Und 
mit Opcache sogar 4-5mal so schnell wie RoR. Also schon mal besser.

Nun habe ich jetzt Jave/Netbeans und Tomcat installiert und muß sagen, 
daß das schon eine andere Klasse von Performance ist. Allerdings fehlt 
mir noch die Erfahrung. Rein von der Performance her alledings bisher 
mein Favorit.

Scala/Lift habe ich noch nicht laufen. Habe allerdings viel gutes von 
gehört.

Benötigte Features: mySQL-Anbindung, E-Mails verschicken, Bilder 
hochladen, verarbeiten (zumindest die Größe anpassen) oder auch mehr, 
statische Webseiten zur Laufzeit dynamisch generieren, Sessions.

Ich denke mal, daß das alle Frameworks können sollten.

Wie behält man denn nun den Überblick über die vielen Web-Framworks und 
vor allem, nach welchen Kriterien enscheidet man sich für das 
"richtige"?

Gibt es das beste Framework überhaupt? Für PHP, JAVA, Scala,... oder C# 
aber ohne Microsoft SQL-Server und auf Linux lauffähig?

von Peter II (Gast)


Lesenswert?

Das sind aber Programmiersprachen und nicht nur Frameworks.

.net geht übrigends auch unter linux. Verwende ich gerne weil mir java 
nicht liegt. Die andere sind ja fast alles Scriptsprachen dabei stört 
mich das man keine typprüfung hat und es kein compilierung gibt wo viele 
fehler schon auffallen. schreibfehler in Variablen usw.

von Be B. (bebo)


Lesenswert?

> Das sind aber Programmiersprachen und nicht nur Frameworks.
Ist schon richtig, aber letztlich muß man ja dann die Sprache wählen, 
für die das Framework ist. Ich wollte mit den Sprachen nur zum Ausdruck 
bringen, daß ich nicht auf eine spezielle Sprache festgelegt bin, auch 
wenn es natürlich Favoriten gibt, wie z.B. C++ oder auch C#.

Aber letzten endes geht es darum, daß das ganze zügig läuft. Womit ich 
natürlich Compilersprachen favorisiere. Sie sind halt schneller. Und es 
sollte wenn es mal fertig ist auch unter Linux laufen, da Microsoft 
Server immer etwas teurer sind. Für die Entwicklung aber bevorzugt unter 
Windows, da handlicher.

.net unter Linux = MONO? Kann man dann auch das Visual Studio zur 
Entwicklung verwenden und später den Bytecode unter Linux laufen lassen?

von Peter II (Gast)


Lesenswert?

Be Bo schrieb:
> .net unter Linux = MONO? Kann man dann auch das Visual Studio zur
> Entwicklung verwenden und später den Bytecode unter Linux laufen lassen?

ja, so habe ich es gemacht. Es geht aber nicht alles zu 100%. mit ein 
paar stolperfallen muss man rechnen.

von Be B. (bebo)


Lesenswert?

Gibt's da auch Assemblies zum versenden von E-Mails, Bildmanipulation 
und DB Zugriff, die sowohl unter Windows als auch unter Linux laufen?

Ich meine mich zu erinnern, daß gerade die GDI Funtion Windows unter 
MONO nicht zu Verfügung stehen sollen.

von Arc N. (arc)


Lesenswert?

Be Bo schrieb:
> Gibt's da auch Assemblies zum versenden von E-Mails, Bildmanipulation
> und DB Zugriff, die sowohl unter Windows als auch unter Linux laufen?

http://docs.go-mono.com/?link=N%3aSystem.Net.Mail

"while in UNIX we provide an implementation of this API in the 
libgdiplus.so shared library. Our libgdiplus has the same C Flat API as 
the GDIPLUS.DLL."
http://www.mono-project.com/Drawing

http://www.mono-project.com/Database_Access

http://www.mono-project.com/Compatibility

> Ich meine mich zu erinnern, daß gerade die GDI Funtion Windows unter
> MONO nicht zu Verfügung stehen sollen.

> Also die Sprache ist für mich kein Entscheidungskriterium.

Dann würde ich mir u.U. noch http://websharper.com/home ansehen

von Thomas (Gast)


Lesenswert?

Baust Du ein zweites Facebook? Ruby on Rails ist für mikrocontroller.net 
schnell genug, träge finde ich diese Seite auch nicht. Hast Du noch mehr 
Traffic?

von Be B. (bebo)


Lesenswert?

:-)

Nööö, aber wenn man schon mal anfängt, warum nicht gleich die beste 
Lösung wählen.

PHP schein so viel einfacher, warum dann Ruby.

Ich finde es einfach besser, wenn es gefühlt noch etwas schneller geht.

Und irgendwie muß man sich doch wirklich mal die Frage stellen, warum es 
überhaupt so viele Frameworks gibt. Wäre doch schöner, wenn es einen 
standard gäbe, bei dem man wüßte, daß das das Beste ist.

Und warum hat Twitter Ruby On Rails den rücken gekehrt, wenn es doch so 
toll ist?

Je schneller die Sprache/Framework, desto aufwändiger kann die 
Datenaufbereitung ausfallen.♦

von Heiko J. (heiko_j)


Lesenswert?

Be Bo schrieb:
> Nach welchen Regeln sucht man sich ein WebFramwork aus?

Das hängt vor allem davon ab wer damit was machen soll und wie 
groß/komplex und auf welchen Lifecycle die Anwendung ausgelegt ist.

Bist Du allein der einzige der Daran entwickelt ? Soll das Ding 
dynamisch ein paar Webseiten erzeugen und in max. 2 Jahren eh in die 
Tonne, kann man auch was "exotisches" nehmen was einen schlanken 
Entwicklungsprozess mit bringt.

Soll das ganze eine komplexe Anwendung in einem Großunternehmen werden, 
mit unzähligen Entwicklern, streng reguliertem Entwicklungsprozess und 
einem Lifecycle von > 10 Jahren sollte man vielleicht doch eher was 
konservatives wie z.B. JEE nehmen. Da gibt's auch eine breite 
Toolunterstützung die für einen ordentlichen Entwicklungsprozess 
notwendig ist. Angefangen von Modellgertriebener Codegenerierung, 
continous build, automatisierte regeression tests, automatisierte QA, 
usw ... .Das Tooling im Enterpriseumfeld ist bei großen Projekten 
maßgeblich mitbestimmend.

Das sind jetzt mal zwei Extrembeispiele, aber irgendwo dazwischen wird 
dein Projekt stehen. Daher zuerst mal deine Anforderungen an das 
WebFramework und dsa zugehörige Umfeld aufnehmen, bewertungsmatrix 
erstellen und dann auswählen.

von Be B. (bebo)


Lesenswert?

Die Rahmenbedingungen kenne ich:
Einzelentwickler, lange Lebensdauer, eher einfache Aktionen,
außerdem resourcenschonend, also schnelle Reaktion bei langsammer 
Hardware. Somit bevorzugt eine Compilersprache. C#, Java, Scala? Wobei 
PHP mit diversen caching Optionen durchaus nicht schlecht scheint.

Aber die Hauptfrage ist nicht, welche Rahmenbedingungen ich festlege, 
sondern vielmehr: Woher weiß ich, daß...
- das Framework noch lange gepflegt wird?
- neuere Framework Versionen nicht ein ständiges überarbeiten des Codes 
nach sich ziehen?
- sich einzelne Funktionen dermaßen stark verändern oder Features 
entfernt werden, daß Teile des Projekts neu entwickelt werden müssen?
- ich zu jeder Zeit ein System/Server so wieder Installieren kann, wie 
es zu einem bestimmten Zeitpunkt einmal war. Die automatischen Installer 
von Rails machen es einem nicht gerade leicht zu verschiedenen 
Zeitpunkten zwei identische Systeme aufzusetzen.

Und welche Sicherheitsfeatures bietet ein Framework? Sind Frameworks für 
kleinere Webseiten überhaupt von nöten? Reicht vielleicht nicht schon, 
daß man für Dinge wie E-Mails verschicken, Bilder verarbeiten und 
Sessions einfach Bibliotheken verwendet?
Und zu guter Letzt: Weche Caching mechanismen bieten Frameworks? Oder 
ist vernünftiges Caching nicht doch etwas, daß man ohnehin selber 
gezielt implementieren muß?

von Heiko J. (heiko_j)


Lesenswert?

Be Bo schrieb:
> Aber die Hauptfrage ist nicht, welche Rahmenbedingungen ich festlege,
> sondern vielmehr: Woher weiß ich, daß...
> - das Framework noch lange gepflegt wird?

Roadmap des Herstellers, bzw. bei OpenSource: Aktivität der Community 
und großer Firmen welche am Produkt mitwirken. Eine Liste mit namhaften 
Referenzkunden und deren Einsatzszenarien sind da manchmal auch recht 
aufschlussreich, wie ernsthaft die Software im Einsatz ist.

> - neuere Framework Versionen nicht ein ständiges überarbeiten des Codes
> nach sich ziehen?

Gucken wie bisher mit Versions änderungen umgegeangen wurde.

> - sich einzelne Funktionen dermaßen stark verändern oder Features
> entfernt werden, daß Teile des Projekts neu entwickelt werden müssen?

Kann Dir bei jedem Produkt passieren. Namhafte Hersteller und 
ordentliche Produkte haben dazu eine Release strategie. Große Änderungen 
an der API nur bei Major-Releases.

> - ich zu jeder Zeit ein System/Server so wieder Installieren kann, wie
> es zu einem bestimmten Zeitpunkt einmal war. Die automatischen Installer
> von Rails machen es einem nicht gerade leicht zu verschiedenen
> Zeitpunkten zwei identische Systeme aufzusetzen.

Dazu gibt es unter Windows Tools von anderen Herstellern (z.B. 
Netinstall). Unter Unix braucht man sowas nicht.

> Und welche Sicherheitsfeatures bietet ein Framework? Sind Frameworks für
> kleinere Webseiten überhaupt von nöten? Reicht vielleicht nicht schon,
> daß man für Dinge wie E-Mails verschicken, Bilder verarbeiten und
> Sessions einfach Bibliotheken verwendet?

Infrage kommende Frameworks sichten, und ggf. testen. Proof-Of-Concepts 
machen bevor man kauft.

> Und zu guter Letzt: Weche Caching mechanismen bieten Frameworks? Oder
> ist vernünftiges Caching nicht doch etwas, daß man ohnehin selber
> gezielt implementieren muß?

Auch hier gilt wieder: Produkte sichten und gegen deine Anforderungen 
für caching testen.

von trill (Gast)


Lesenswert?

Ruby hat nicht nur RubyOnRails, alternative ist z.B. Sinatra. Ansonsten 
Python noch beliebt im Webbereich, da gibts schon eher zuviele 
Webframeworks.

PHP: Hm, Geschmackssache, ich würde es für größere Projekte eher nicht 
verwenden und empfehle die Lektüre von 
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ ;)

von Be B. (bebo)


Lesenswert?

Das heißt also "probieren geht über studieren". :-(

von Be B. (bebo)


Lesenswert?

@trill:
PHP läuft auf meinem System bisher am schnellsten. Von daher steht es 
auf der Positiv Liste

von Stefan R. (srand)


Lesenswert?

Be Bo schrieb:
> PHP läuft auf meinem System bisher am schnellsten. Von daher steht es
> auf der Positiv Liste

Dann nimm doch einfach C.

von Be B. (bebo)


Lesenswert?

C wäre schon schön. Aber mangelnde Frameworks scheinen viele Leute 
C(++/#) nicht für Web Programmierung zu verwenden. Im augenblick gucke 
ich eher auf Java. Wenn da nicht die mySQL Abfragen so lange dauern 
würden. Siehe meinen anderen Thread.

von Heiko J. (heiko_j)


Lesenswert?

Be Bo schrieb:
> C wäre schon schön. Aber mangelnde Frameworks scheinen viele Leute
> C(++/#) nicht für Web Programmierung zu verwenden. Im augenblick gucke
> ich eher auf Java. Wenn da nicht die mySQL Abfragen so lange dauern
> würden. Siehe meinen anderen Thread.

Also ich an deiner Stelle würd einfach weiterhin den Tomcat 
Applicationserver nehmen und ein paar Servlets und JSPs bauen. Wenn die 
Anwendung extrem komplexe Datenhaltung erfordert würd ich auch noch JPA 
machen und dann aber gleich statt dem Tomcat nen JEE-Server nehmen. z.B. 
Glassfish oder JBoss. Egal welchen der Applicationserver du nimmst. Das 
Connection pooling solltest Du auf jeden Fall verwenden :-) Siehe Dein 
anderer Thread. 
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html#Database_Connection_Pool_(DBCP)_Configurations

von Stefan R. (srand)


Lesenswert?

Be Bo schrieb:
> C wäre schon schön. Aber mangelnde Frameworks scheinen viele Leute
> C(++/#) nicht für Web Programmierung zu verwenden.

Ach, so Frameworks hindern dich doch nur an maximaler Performance...

Du hast ja hinreichend klargestellt, daß nur reine Performance zählt, 
Entwicklungsdauer, einfaches Hosting oder gar Security spielen ja keine 
Rolle.

Auch nackter Assembler wäre eine Überlegung wert. Oder vielleicht kannst 
du deine Webapplikation auch gleich in Hardware gießen?

von Heiko J. (heiko_j)


Lesenswert?

Stefan Rand schrieb:
> Auch nackter Assembler wäre eine Überlegung wert. Oder vielleicht kannst
> du deine Webapplikation auch gleich in Hardware gießen?

LOL. Ich kann's mir bildlich vorstellen. Eine VLSI-WebFramework auf 
einer Armada aus Spartan-FPGAs betrieben.

von Be B. (bebo)


Lesenswert?

Ok, beenden wir den Thread.

Schönen Sonntag noch.

von D. I. (Gast)


Lesenswert?

Be Bo schrieb:
> Ok, beenden wir den Thread.
>
> Schönen Sonntag noch.

Dir kann einfach noch nicht sinnvoll geholfen werden. Erstens stellst du 
die falschen Fragen, zweitens scheinst du noch zu wenig ernsthafte 
Ahnung zu haben.

Twitter hat RoR gekippt weils nicht mitskaliert hat. Dieses Schicksal 
hat aber jede der großen Seiten (Twitter, FB, ...) früher oder später 
getroffen, deswegen haben diese Firmen auch angefangen ihre eigenen 
Spracherweiterungen einzuführen und ihre Infrastruktur nach und nach 
selbst nachentwickelt und auf ihre Bedürfnisse angepasst (Eigenes 
Filesystem, eigene Compiler, eigener Netzwerkstack, ...). Bevor du auch 
nur annähernd in diese performancekritischen Sphären vordringst tuts bei 
geeigneter technischer Kenntnis so gut wie jedes Webdingsbums.

Ein Tool ist nur so gut wie der Fool ders benutzt. Da du aber weder dein 
konkretes Szenario noch deine konkreten Probleme benennst, kann man dir 
nicht helfen. Im Web gibts kein One-Size-Fits-All.

von Εrnst B. (ernst)


Lesenswert?

Be Bo schrieb:
> PHP läuft auf meinem System bisher am schnellsten. Von daher steht es
> auf der Positiv Liste

=> das hier lesen:
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Εrnst B✶ schrieb:
> das hier lesen

Und wie soll ihm eine durch (negative) persönliche Meinung geprägte und 
Halbwahrheiten gespickte Seite bei der Entscheidung helfen?

von Be B. (bebo)


Lesenswert?

@ Εrnst B✶:
Habe ich gelesen und habe PHP auch schon abgeschrieben.

Momentan bin ich bei Java angekommen und mit Scala spiele ich auch noch. 
Framework für Java muß ich mich noch entscheiden. Weiß nur noch nicht, 
wie ich das anstellen will, da ich mit den Zusammenfassungen noch nicht 
viel anfangen kann.

@ D.I.
> Da du aber weder dein konkretes Szenario noch deine konkreten Probleme
> benennst, kann man dir nicht helfen.
Kein kontretes Szenario, aber benötigte Features kann ich nennen.
- mySQL-Anbindung (Connection Pool = Reaktionzeit)
- E-Mails verschicken
- Bilder hochladen und verarbeiten (zumindest die Größe anpassen) oder 
auch mehr
- statische Webseiten zur Laufzeit dynamisch generieren und in einem 
Verzeichnis ablegen, damit Apache sie aufliefern kann
- Sessions
- Ajax
- Security allgemein

von LolBaer (Gast)


Lesenswert?

node.js

von LolBaer (Gast)


Lesenswert?

ansonsten "go"

von Peter II (Gast)


Lesenswert?

Be Bo schrieb:
> statische Webseiten zur Laufzeit dynamisch generieren und in einem
> Verzeichnis ablegen, damit Apache sie aufliefern kann

wozu überhaupt noch eine apache? ein tomcat die auch html ausliefern.

von Εrnst B. (ernst)


Lesenswert?

Läubi .. schrieb:
> Und wie soll ihm eine durch (negative) persönliche Meinung geprägte und
> Halbwahrheiten gespickte Seite bei der Entscheidung helfen?

Genau so:

Be Bo schrieb:
> Habe ich gelesen und habe PHP auch schon abgeschrieben.

Viele PHP-"Web Frameworks" bestehen zuallererst aus einer dicken 
Abstraktionsschicht, die versucht die Sprachbedingten PHP-Gemeinheiten 
zu überdecken, was bei einer "vernünftigen" Sprache als Grundlage 
garnicht nötig wäre.

Wenn wirklich Performance wichtig ist:
node.js, wie von LolBär vorgeschlagen.

Dank Googles V8 JIT perfomancemäßig sicher in einer Liga mit reinen C 
(oder ASM :) Lösungen, Dank asynchronem Design kein Problem extrem viele 
oder auch langlaufende TCP-Verbindungen zu verwenden (z.B. Websockets. 
Wäre der Tod für Apache + php/cgi)

Und, vielleicht grad für Einsteiger interessant: Man verwendet dieselbe 
Sprache, die man auch "Clientside" verwenden muss.

von Be B. (bebo)


Lesenswert?

So, habe jetzt mal node.js mit einem kleien HelloWorld Test server 
getestet...
1
var http = require('http');
2
 
3
http.createServer(function (req, res) {
4
  res.writeHead(200, {'Content-Type': 'text/plain'});
5
  res.write('Hallo Welt');
6
  res.end();
7
}).listen(8000);
... und weiß nicht so recht was ich davon halten soll. Die Responsezeit 
ist zwar ziemlich niedrig, aber im gegensatz zu Apache/PHP, 
Apache/Passenger/Ruby/Rail und Tomcat/Java sein die Übertragungszeiten 
alles andere als niedrig.
Einzig auf der gleichen virtuellen Maschnine ist node.js schnell. Wenn 
ich hingegen von Windows auf die Website zugreife (die VM läuft auf dem 
Windows Rechner), dauert es ewig, bis die Seite geladen wird. Laut 
Firebug existiert zwar keine Wartezeit, aber die Empfangszeit ist bei 
200ms. Von meinem Tablet/Firefox aus ist die Wartezeit ebenfalls gering 
aber die Empfangszeit um die 60ms.
Die anderen oben genenten lagen in der Summe da deutlich drunter, und 
das inklusive einer msSQL Abfrage.

Und wenn ich 2000 mal die gleichen Anfrage an node.js (Hello World) 
sende, dauert das ungefähr 400s. Sende ich 2000 gleiche Anfrage an 
Java/Tomcat, dann dauert das inklusive mySQL ca. 1s. Keine Ahnung, in 
wie vern hier Cashing ins spiel kommt, aber das ist Faktor 400. Die mit 
Firefox/Firebug gemessen Werte beim ersten Aufruf liegen aber auch um 
den Faktor 8 oder so.

Mache ich hier einen Denkfehler?

von Andy (Gast)


Lesenswert?

Hallo schau dir mal Java EE 7 an.

Für den schnellen Einstieg würde ich Netbeans + Glassfish 4.0 nehmen.

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Falls die Datenbank bereits vorliegt, kannst du in Netbeans dir direkt 
Entitäten erzeugen lassen ( Create Entity from Database )

Als Persistence Provider würde ich auf Hibernate setzen

Zur Generierung der HTML-Seiten empfehle ich JSF + Primefaces.

Session, Security sind in EE sauber gelöst. JSF kommt mit hervorragendem 
AJAX support.

Um eine performante Anwendung zu erzeugen reicht es jedoch nicht einfach 
verschiedene Hallo Welt Anwendungen zu testen. Viel mehr spielt, wie 
bereits erwähnt, der Entwicklungsprozess eine wichtige Rolle. Ebenfalls 
sollte man die verwendete Technologie verstanden haben, sonst erlebt man 
später böse Überraschungen ( sprech da aus Erfahrung :-) ).

Um sinnvoll in JEE einzusteigen solltest du dir mal das First Cup 
Tutorial ansehen
http://docs.oracle.com/javaee/7/firstcup/doc/home.htm

Grüße

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.