mmofacts.com

Kompletter Rewrite -> Frontend / Backend Language?

gepostet vor 18 Jahre, 3 Monate von Kallisti
Hmmm da ich langsam wieder Motivation habe mit Aquaphobia loszulegen, stellt sich die boese Technologiefrage (Frontend / Backend) ^^
  • JSP / Java Servlet - mag ich pers. net so, haette aber direkte Frontend Backend kommunikation (brauch ich das wirklich? hmm ...)
  • PHP / C - aktuelle Loesung, problematisch in Sachen Code Reusability, C Code mies zu deployen und zu debuggen, zu zeitintensiv. Dafuer sehr performantes Backend, aber der Loewenanteil der Serverlast wird eh von der Datenbank ausgemacht.
  • PHP / Perl - meine Languages of choice fuer den jeweiligen Zweck.. PHP ist schnell, gut zu entwickeln und ideal fuer den Verwendungszweck. Perl hingegen ist sehr angenehm, gut erweiterbar, es gibt eine Menge fertiger Loesungen (Cpan Module) und ich mag die Sprache einfach :-) - aber dann stellt sich die Frage ob nicht
  • Perl / Perl - sinnvoller waere, da bessere Code Reusabilty (aber die grosse Frage nach Perl Performance im Web)
  • Ruby on Rails - mal was ganz alternatives? Habe ich viel zu wenig Erfahrung mit, zu wenig bekannt = wenig fertige Funktionalitaet (vs. 25k Perl Module)
  • ??? - noch Ideen?

Performance ist vor allem beim Frontend die Frage. Das Backend nimmt zwar ein paar Berechnungen vor, der Grossteil laeuft aber ueber die Datenbank, so dass hier Performance wohl eher sekundaer ist und Entwicklungsspeed das wichtigste (und da sind Sprachen mit komfortablen String handling und ohne grosses Buffer Overflow Risiko nunmal echt angenehm).
Hinsichtlich des Frontends kenne ich bei PHP die Performance, ich denke mal Java skaliert bischen besser, ist aber auf aehnlichem Niveau, nur kann ich es persoenlich net leiden... Perl mit mod_perl und Mason/Maypole ist sicherlich auch sehr nice, aber ka wie es im Vergleich zu PHP mit Cache (precompiled) steht...
Bei PHP und Perl habe ich einfach eine Menge Erfahrung und weiss was moeglich ist. Grad im Bereich Templating, Caching, DB Access etc, hat sich bei PHP einiges getan und dank Savant, APC und PDO gibt es sehr schoene Loesungen. Dafuer ist PHP als Sprache an sich recht inkonsistent, bloated und unsauber. Perl ist trotz 1/15 an Funktionen viel flexibler und umfangreicher, aber eben nicht so vollkommen auf das Ausliefern von Webseiten fixiert wie PHP.
Habt ihr noch Erfahrungen, Meinungen und Tipp?
gepostet vor 18 Jahre, 3 Monate von Itchy
Hmm also wenn Du Perl magst (:shock, dann warum nicht komplett auf Perl setzen? Perl ist keinesfalls langsamer als PHP, eher noch ein bißchen schneller.
Template Engines gibts für Perl auch (z.B. perl.apache.org/embperl/ ), warum also nicht?
gepostet vor 18 Jahre, 3 Monate von Kallisti
Original von Itchy
Hmm also wenn Du Perl magst (:shock, dann warum nicht komplett auf Perl setzen? Perl ist keinesfalls langsamer als PHP, eher noch ein bißchen schneller.
Template Engines gibts für Perl auch (z.B. perl.apache.org/embperl/ ), warum also nicht?

Naja da gehen die Meinungen wohl weit auseinander, ob es nun schneller ist oder nicht. Auf jeden Fall muesste man es mit einem PHP mit eAccelerator oder APC vergleichen...
Template Engines gibt es sicher einige, das ist nicht so das Problem.. wobei ich noch nicht viel mit Perl + Datenbanken gearbeitet habe und auch noch nicht so viel PDO Erfahrung habe, dass ich Perl DBI vs. PHP PDO bewerten koennte.
gepostet vor 18 Jahre, 3 Monate von Todi42
Wenn Du Perl magst, wäre Ruby vielleicht wirklich was für Dich. Soweit ich die Entstehungsgeschichte von Ruby im Kopf habe, hat der Entwickler von Ruby Perl bei sich ersetzen wollen. Da ich Perl aber nicht kenne, kann keinen direkten Vergleich herstellen. Leute die SmallTalk mögen sind wohl auch immer ganz begeistert. Die Template Sprach in Rails ist übrigens auch Ruby. Großer Nachteil von Rails ist meiner Meinung nach die dürftige Dokumentation, es gibt auch eine Mailingliste, bei der gehen aber täglich so viele Hilfegesuche ein, das man dort häufiger mal keine Hilfe findet und dann Hilfe im Quellcode von Rails suchen muß.
gepostet vor 18 Jahre, 3 Monate von exe
Kurz gesagt: nimm die Sprache mit der du am besten Arbeite/dein Ziel erreichen kannst. Bringt ja nichts eine Sprache zu verwenden bei der du dich 50% deiner Zeit über Selbige ärgerst
Ich persöhnlich mag Java sehr. Ich benutze bei mir eine Servletumgebung und generier das HTML mit Freemarker welches mit einer IMHO guten Templatesprache daherkommt (JSP war nicht so mein Ding).
Gründe die mich zu Java gezogen habe:
1) Gute Frameworks: bei Java gibts eine Menge ausgereifter und mächtiger Lösungen für die Probleme auf die man so trifft (OR-Mapping, Caching, Messaging zwischen Prozessen, Templating, AJAX usw. usf.). Viele Frameworks sind so mit PHP gar nicht möglich da sie aufgrund ihres Umfangs dermaßen viel Initialisierungszeit benötigen das man das nur einmal zum Serverstart, nicht bei jedem Request, machen kann. Der OR-Mapper den ich benutze braucht z.B. gut 1 Sekunde zur Initalisierung. Hibernate hat bei mir sogar 3 Sekunden gebraucht. Sowas geht nicht bei jedem Request...
2) Servletarchitektur vs. One-Shot-Execution: die Servlets werden als Quasi-Servermodule beim Start des Servers geladen. Datenbankverbindungen, Konfigurationen, Scripts und Templates werden zumStart des Servers geladen und intialisiert. Später genutzte Objekte können vorinitialisiert werden. Sessiondaten müssen nicht zwischen den Requests serialisiert werden. Usw. Der ganze nutzlose Overhead den beispielsweise PHP da generiert fällt bei der Javalösung komplett weg, was bei mir in deutlich kürzeren Ausführungszeiten resultiert.
3) Kommunikation zwischen einzelnen Komponenten: Servlets leben Requestübergreifend. Genau wie andere Objekte und Klassen die in der VM des Webservers existieren. Die einzelnen Programmteile können direkt miteinander kommunizieren. Ich muss keine Objekte serialisieren und über Sockets verschicken ..
4) Sauber strukturierte Sprachsyntax und Klassenbibliothek.
Man ist mit PHP deutlich einfacher dabei, bei Java wird man mit mächtigeren Features belohnt.
Perl ist Geschmackssache, ich persöhnlich würde damit keine größeren Projekte verwirklichen. Dafür ist die Sprache in meinen Augen zu unstrukturiert.
Zu Ruby kann ich nicht viel sagen ..
Just my 2 Cents
gepostet vor 18 Jahre, 3 Monate von TheUndeadable
ASP.Net/C# (Mono) hätte bei dir eine Chance?
Mit dieser Konstellation bin ich sehr zufrieden. Der Hintergrunddienst läuft als C#-Programm und über ASP.Net greife ich entweder direkt auf die Datenbank zu oder informiere den Dienst über Remoting, dass Ereignisse anstehen.
Ich persönlich würde Hintergrunddienst und Weboberfläche unter der gleichen Programmiersprache laufen lassen. Nur so vermeidest du Duplizierung von Code.
Da bleibt eigentlich nur Java oder .Net/Mono übrig.
gepostet vor 18 Jahre, 3 Monate von Kallisti
Ich schreib hier in der Firma grad nen Tool in C# und muss gestehen, dass ich sehr positiv ueberrascht bin.
Privat haenge ich aber viel zu sehr am unixoiden Umfeld und Mono ist mir zu riskant / nicht ausgereift genug.
Daher ist das keine Alternative fuer mich.
Die Sache mit derselben Sprache ist grad auch so das Killerargument pro Perl/Perl fuer mich, sonst haette ich mich laengst fuer PHP / Perl entschieden. :-)
Fuer Java ist glaube ich echt der persoenliche Hass zu gross.
Sehr freuen wuerde ich mich ueber Erfahrungsberichte in Sachen Perl (+Mason?) Performance - grad im Vergleich zu anderen Technologien.
gepostet vor 18 Jahre, 3 Monate von exe
Original von Kallisti
Sehr freuen wuerde ich mich ueber Erfahrungsberichte in Sachen Perl (+Mason?) Performance - grad im Vergleich zu anderen Technologien.

Ist nicht 100% genau, weil es noch fast for meiner Zeit lag und ohne Vergleich mit anderen Techniken aber: wir hatten in meiner Firma eine Website mit mod_perl/Mason am laufen. Waren zu Spitzenzeiten etwa 17k Visits pro Tag, 10 Seiten pro Visit und 10 Hits pro Seite, also 1.7 Mio Hits pro Tag. Das ganze mit Postgres-Datenbank auf dem selben Server, einem P4 3.06 GHZ mit 1GB RAM. Lastprobleme oder Engpässe gab es nicht. Für genaue Zahlen müsste ich die alten Logs durchwühlen. Grundsätzlich denke ich aber das Performance kein Argument gegen Perl/Mason ist.
gepostet vor 18 Jahre, 3 Monate von Lunikon
Für mein aktuelles Projekt kommt Java zum Einsatz. Das hat genau genommen 2 Gründe:
1.) Die sehr mächtigen und reifen Frameworks. Wir verwenden beispielsweise Hibernate für die Datenbankabstraktion. Nicht nur, dass es eine geniale Sache ist, einfach nur in Objekten und nicht (immer) in SQL-Queries zu denken. Hibernate kümmert sich auch um eine sehr effizientes Caching. Im normalen Betrieb auf einem starken Server befinden sich fast alle Daten des Spiels im RAM...die Zugriffe sind fantastisch schnell, auf die Datenbank wird nur hin und wieder zugegriffen, um die Änderungen mitzuführen. Ich kenne Perl und die Frameworks für C# nicht (gibt es Hibernate nicht inzwischen auch dafür?), aber mit PHP kann man lange probieren, bis man sowas hinbekommt.
Zudem gibt es für Java sehr saubere und ausgegorene MVC-Frameworks. Sind zwar in der Entwicklung etwas aufwändiger, die Qualität des Resultats spricht aber für sich. Zudem ist es ein reines Vergnügen, die absolute Kontrolle über Threads zu haben und genau zu wissen, wer was wann darf. Probleme mit Nebenläufigkeiten haben mit in PHP schon den letzten Nerv geraubt.
2.) Die super Entwicklungsumgebung. Sicher, über sowas lässt sich streiten. Aber ich glaube wenn man einmal in Eclipse reingekommen ist, dann will man nichts anderes mehr. Java und Eclipse bilden einer absolut perfekte Einheit. Inzwischen kann ich, ohne große Konfiguration, einen Tomcat direkt aus der IDE starten, auf dem Server debuggen, von Exceptions direkt in den Quellcode springen. Sehr sehr empfehlenswerte Sache für Webentwickler
gepostet vor 18 Jahre, 3 Monate von exe
Original von Lunikon
Ich kenne Perl und die Frameworks für C# nicht (gibt es Hibernate nicht inzwischen auch dafür?), aber mit PHP kann man lange probieren, bis man sowas hinbekommt.

Mit PHP wird so ein Framework eher schwierig bis unmöglich (siehe meinen ersten Beitrag hier). Mit Perl ist es sicher möglich. OR-Mapping gibts in Perl (Class:: DBI z.B.) und kann man auch Daten requestübergreifend im RAM halten. Was es an fertigen Lösungen gibt weiss ich nicht, dafür hab ich noch nicht lange genug mit Perl zu tun. Gibt auf jedenfall einige Module im CPAN die Caching für Class:: DBI und Apache Shared Memory machen, wie die genau funktionieren weiss ich aber auch nicht. Auf das Problem bin ich mit Perl noch nicht gestoßen

Auf diese Diskussion antworten