web framework gesucht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • web framework gesucht

    Hallo,

    ich suche ein web framework, mit dem ich dynamisch HTML-Seiten bauen kann.
    Und zwar habe ich als input eine XML-Struktur.
    Aus dieser Struktur soll eine HTML-Seite generiert werden.
    Es sollen auch statische Inhalte mit eingebunden werden. CSS sollen auch zusätzlich eingebunden bzw. auch dynamisch erzeugt werden. JavaScript natürlich auch, schön getrennt gemäß MVC.

    Eine Idee wäre die Transformation von XML nach HTML mittels XSLT durchzuführen, aber ich will nicht für jeden Browsertyp mir irgendwelche stylesheet Transformationen überlegen. Ich hätte gerne, dass das framework diese Arbeit für mich abnimmt, also html-code generierung browserunabhängig.
    Aus Performancegründen möchte ich auch so wenig wie möglich html-code generieren lassen, sondern javascripte, css stylesheets schön getrennt, die dann nur einmal zum client geladen werden.

    Welche frameworks sind empfehlenswert?
    Ich hab zwar schon von struts, jsf, etc. gehört, aber noch nicht konkret damit gearbeitet.

    Tomcat-Server steht zur Verfügung

    im voraus schon mal Danke für eure Hilfe

    Gruß Armin
  • Hallo Armin,

    Da gibt's eine Menge an Frameworks, ich sprech jetzt mal die drei an, die am Populärsten sind:

    JSF:
    Pro:
    - Stanard
    - Größere Auswahl an Implementierungen. Am interessantesten ist MyFaces von Apache (myfaces.apache.org/). Da es aber Standard ist sollte jeder Applicationserver eine Implementierung mitbringen.
    - Auch Opensource-Implementierungen
    - Große Community
    - Viel Literatur
    - Gute Dokumentation
    - Aktive Weiterentwicklung
    - Mit Application-Server auch andere Tools

    Contra:
    - Ohne Applicationserver umständlich zu handhaben
    - Gefühlter Konfigurationsoverhead

    Spring MVC: (springsource.org/) (static.springsource.org/spring…k-reference/html/mvc.html)
    - Defacto Standard
    - Große Community
    - Gute Dokumentation
    - Viel Literatur
    - Aktive Weiterentwicklung
    - Opensource
    - Bring viele andere Tools mit
    - Kein Applicationserver nötig

    Contra:
    - Vendorer-Lockin
    - Spring hält sich selbst manchmal nicht an Standards

    GWT (code.google.com/intl/de-DE/webtoolkit/):

    Pro:
    - Kein HTML
    - Kein Java-Script
    - Alles wird in Java Programmiert
    - Interessantes Konzept
    - Kein Applicationserver nötig
    - Gute Dokumentation
    - Aktive Weiterentwicklung

    Contra:
    - Vendorer Login
    - Google (Kann man auch als Vorteil werten)
    - Kleine Community

    Ich kann dir keine gute Empfehlung geben, da ich nicht weiß was genau du machen willst. Die zentrale Frage ist, wieviel Benutzerinteraktion gibt es in deiner Applikation? Wenn der Benuter die Daten nur betrachtet und du keine Ajax-Special-Effects brauchst bist du meiner Meinung nach gut mit Spring MVC beraten. Wenn es darum geht viel Interaktion, Ajax und Effekte zu haben würde ich mir GWT näher anschauen.

    Hoffe ich konnte dir etwas helfen

    mfg
    ButAlive
  • Hallo,

    danke für die Tipps.
    Also ich bin immer noch etwas unsicher, welches framework für mich brauchbar ist. GWT klingt irgendwie verlockend, weiß aber nicht, ob es für meine Zwecke sinnvoll ist, weil ich auch Schnittstellenaufrufe bewerkstelligen muss.
    Vielleicht mal kurz, was ich tun muss:
    Als input bekomme ich XML.
    XML parsen und daraus HTML (javasccript, css) dynamisch bauen und erstmal irgendwo ablegen auf der platte. Das HTML besteht zum größten Teil aus Formulareingaben. Auch mit Tabellen, wo neue Zeilen hinzugefügt werden müssen (evtl. über javascript, oder ajax diesen teil neu laden)

    benutzer loggt sich auf einem portal ein, klickt auf einen link oder button (dieser teil ist aber nicht meine baustelle), und bekommt die generierte HTML-Seite angezeigt.
    Der benutzer trägt die Formulardaten ein und klickt auf speichern. Danach sollen die Daten in die Datenbank gespeichert werden. Anschließend müssen irgendwelche oracle SQL-Prozeduren aufgerufen werden. Diese liefern wieder als Input XML (dann geht es im prinzip wieder von vorne los). Aus dem XML wird wieder HTML erzeugt. Entweder wird dann diese Seite direkt als Reponse zurückgeliefert oder es wird eine Art "Standardseite" zurückgegeben.

    Ich hab zusätzlich noch auf der HTML-Seite "Unterstützungsfunktionen" die aufgerufen werden (evtl. mit webservices). Diese Funktionen sind aber "irgendwo anders" implementiert.
    Die generierte HTML-Seite läuft im Hauptframe. Optional hab ich noch andere Frames, wo z.B. der Status oder andere Informationen zum Ablauf dargestellt werden sollen (evtl. Updates mit Ajax Funktionalität).

    Ich weiß nicht, ob ich das mit GWT oder spring MVC besser lösen kann. Ich brauche ja auch Zugriff zur DB, und muss dort Funktionen aufrufen. Dann soll das HTML vorab erzeugt werden (also ohne direkten Browserrequest). Im Browser wird dann nur das vorab generierte HTML angezeigt. Also hätte ich ja eigentlich erstmal wenig Programmlogik auf dem server.
    Was mir an GWT gefällt ist, dass ich in java programmieren kann, und ich recht viel "geschenkt" bekomme, wie z.b. "modernes" Layout, Eingabeunterstützung für Datumseingaben, Tabellensortierung, etc. Ich weiß nicht, wie die Oberflächengestaltung mit Spring MVC ist. Sieht das eher "altbacken" aus und muss ich viel Aufwand reinstecken, damit es ansprechend aussieht?

    Bin für weitere Tipps dankbar.

    Gruß
  • Ich würd das persönlich so nie machen, aber du wirst sicherlich deine Gründe dafür haben...
    Mit den Anforderungen kommst du mit den von mir genannten Frameworks nicht weit, die sind alle darauf ausgelegt, dass das HTML direkt bei einem Request erzeugt wird. MVC macht da auch wenig Sinn, du hast zwar ein Model und einen View aber nichts zu "controllen".

    Als erstes würde ich da auch an XSLT denken. Aber mir fallen auch noch Alternativen ein: Eine Template-Engine wie Freemaker (freemarker.org/index.html) oder Velocity(velocity.apache.org/). Welche mehr taugt kann ich dir leider nicht sagen, da ich mit beiden keine wirklich Praxiserfahrung hab.

    Aber nochmal zurück zu deinen Anforderungen. Du wirst dir dadurch nette Probleme einhandeln:
    - Was machst du wenn der Kunde die Seite nacheinander aufruft? Deine Transformation ist noch nicht fertig, bekommt er dann die letzte Version geliefert, eine halbfertige oder gar nichts?
    - Wie willst du das skalieren? Angenommen du hast 100MB speicher für die vorgenerierten HTML-Seiten, der Einfachheit halber rechnen wir mal mit eine Seite braucht 1MB, also wäre nach 100 Kunden Schluss. Wie willst du damit umgehen? So als Tipp, ein "Das wird eh nie vorkommen" gibts in der IT nicht.
    - Überschreibst du die Seiten wieder oder willst du die Seiten versionieren?
    - Euer DB-Entwickler kommt auf die tolle Idee das XML zu ändern.
    - Mal angenommen ihr designt euer Protal um. Das HTML das du generiert hast passt nun gar nicht mehr rein. Wie gehst du mit alten Dateien um?

    Also ich würde den Plan nochmal überdenken. Klingt so, als würde es mehr Ärger als Nutzen bringen. Mich würde interessieren, welches Problem du eigentlich lösen willst. Also wieso du von der "normalen" Lösung, Request kommt an -> Hole Daten aus der Datenbank -> Generiere HTML -> Schicke HTML an Browser, abweichst?

    Erinnert mich irgendwie an eine Geschichte (wirklich so passiert):

    - Kunde trägt auf einer Webseite Daten ein
    - Aus den Daten wird eine E-Mail generiert und verschickt
    - Empfänger druck die Email aus
    - Fax diese an weiteren Mitarbeiter
    - Dieser scannt sie wieder ein
    - Mit OCR wird das gescannte Bild in Text umgewandelt
    - Mit regulären Ausdrücken werden die interessanten Infos aus Text extrahiert
    - Informationen werden in einer Datenbank gespeichert
    - Kundendaten werden ausgewertet

    mfg
    ButAlive
  • das waren die "vorgaben".
    hauptgrund ist die performanz, dass ich schon vorher die daten "zusammensuche", und nicht erst beim request. ich hab ein dynamisches datenmodell, was nicht grade performant ist.
    aber ich werde darauf drängen, das html erst beim request zu erzeugen, und nicht irgendwo auf der platte abzulegen. ich weiß über die probleme...

    MVC hab ich schon, ich muss ja die daten auch speichern.
    Ich denke, ich werde Spring benutzen, hab aber leider keine erfahrung mit dem framework.
    ich vermute mal, da gibts klassen, wo ich dynamisch HTML zusammenbauen kann, sprich also Methoden in der Art "addBody", etc.
    Oder sehe ich das völlig falsch?!

    Gruß