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?
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.
> 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?
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.
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.
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
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?
:-) 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.♦
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.
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ß?
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.
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/ ;)
@trill: PHP läuft auf meinem System bisher am schnellsten. Von daher steht es auf der Positiv Liste
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.
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.
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
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?
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.
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.
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/
Ε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?
@ Ε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
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.