8 Stimmen

Hat jemand von Struts 1 auf ein anderes Web-Framework migriert?

Auf meinem aktuellen Projekt haben wir Struts 1 für die letzten paar Jahre verwendet, und ... ähem ... Struts zeigt sein Alter. Wir stellen unseren Front-End-Code langsam auf einen Ajax-Client um, der XML von den Servern abruft. Ich frage mich, ob jemand von Ihnen eine alte Struts-Anwendung auf ein anderes Framework migriert hat und welche Herausforderungen Sie dabei hatten.

7voto

64BitBob Punkte 3077

Sicher. Der Wechsel von Struts zu einem AJAX-Framework ist eine sehr befreiende Erfahrung. (Obwohl wir JSON statt XML verwendet haben. Viel einfacher zu parsen.) Allerdings müssen Sie sich bewusst sein, dass es effektiv eine vollständige Neuschreibung Ihrer Anwendung ist.

Anstelle des klassischen Datenbank/JSP/Aktionen-Schemas für MVC werden Sie zu einem Servlet/Javascript-Schema übergehen, bei dem das Modell durch HTTP-GET-Anforderungen, Aktionen durch POST/PUT/DELETE-Anforderungen und die Ansicht durch den Webbrowser on the fly gerendert wird. Dies führt zu interessanten Herausforderungen in jedem Bereich:

Server-Seite - Auf der Serverseite müssen Sie einen Standard für die Offenlegung von Daten für den Client entwickeln. Die einfachste und leichteste Methode ist die Einführung eines REST Methodik, die der Hierarchie Ihrer Daten am besten entspricht. Dies ist mit Servlets recht einfach zu implementieren, aber Sun hat auch ein Java 1.6-Schema mit Attributen, die ziemlich cool aussehen.

Ein weiterer Aspekt auf der Serverseite ist die Wahl eines Übertragungsprotokolls. Ich weiß, dass Sie bereits XML erwähnt haben, aber Sie sollten das vielleicht noch einmal überdenken. Die XML-Parser variieren stark zwischen den einzelnen Browsern. Ein Browser macht vielleicht das Dokument Root zum ersten Kind, ein anderer fügt ein spezielles Inhaltsobjekt hinzu, und alle parsen Leerzeichen unterschiedlich. Noch schlimmer ist, dass die Funktion normalize() von den wichtigsten Browsern nicht korrekt implementiert zu sein scheint. Das bedeutet, dass das XML-Parsing voller Hacks sein kann.

JSON ist viel einfacher zu analysieren und konsistenter in seinen Ergebnissen. Sowohl Javascript als auch Actionscript (Flash) können JSON direkt in Objekte umwandeln. Dadurch wird der Zugriff auf die Daten zu einer einfachen Angelegenheit von x.y oder x[y]. Außerdem gibt es eine Vielzahl von APIs für die Verarbeitung von JSON in allen erdenklichen Sprachen. Da JSON so einfach zu parsen ist, wird es fast noch besser unterstützt als XML!

Kunden-Seite - Das erste Problem, auf das Sie stoßen werden, ist die Tatsache, dass niemand weiß, wie man Javascript schreibt. Vor allem diejenigen nicht, die glauben, dass sie es können. Wenn Sie irgendwelche Bücher über Javascript haben, werfen Sie sie JETZT aus dem Fenster. Es gibt praktisch keine guten Bücher über diese Sprache, da sie alle dem gleichen "Hacking"-Muster folgen, ohne wirklich in das einzutauchen, was sie tun.

Von der untersten Ebene an wird Ihr Team eine Nachschulung zur Entwicklung von Javascript benötigen. Beginnen Sie mit dem Javascript Client-Anleitung . Es ist die de facto Quelle für Informationen über die Sprache. Die nächste Station ist Videos von Douglas Crockford auf Javascript. Ich stimme nicht mit allem überein, was er zu sagen hat, aber er ist einer der wenigen Experten für diese Sprache.

Wenn Sie das herausgefunden haben, sollten Sie überlegen, welche Frameworks Sie verwenden möchten, wenn überhaupt. Im Allgemeinen mag ich Dinge wie Prototype und Mootools nicht. Sie neigen dazu, ein einfaches Problem noch schlimmer zu machen. Nichtsdestotrotz steht es Ihnen frei, diese Tools zu testen und zu entscheiden, ob sie für Sie geeignet sind.

Wenn Sie absolut der Meinung sind, dass Sie nicht ohne einen Rahmen auskommen, weil Ihr Team zu unerfahren ist, dann GWT könnte die Rechnung aufgehen. Mit GWT können Sie schnell DHTML-Webanwendungen in Java-Code schreiben und diese dann in Javascript kompilieren. Das PROBLEM dabei ist, dass Sie dadurch eine große Menge an Flexibilität aufgeben. Die Javascript-Sprache ist weitaus leistungsfähiger als GWT es darstellt. Mit GWT können Java-Entwickler jedoch schneller in die Materie einsteigen. Wählen Sie also Ihre Schlachten.

Das sind die wichtigsten Bereiche, die mir einfallen. Ich kann sagen, dass Sie einen Seufzer der Erleichterung ausstoßen werden, wenn Sie die Streben aus Ihrer Anwendung herausbekommen. Das kann ein ziemliches Biest sein. Vor allem, wenn Sie unerfahrene Entwickler an Ihrem Struts-Modell arbeiten lassen :-)

Haben Sie Fragen?

Bearbeiten 1: Ich habe vergessen hinzuzufügen, dass Ihr Team die W3C-Spezifikationen religiös. Dies sind die APIs, die Ihnen in modernen Browsern zur Verfügung stehen. Wenn Sie jemanden dabei erwischen, wie er die DOM 0-APIs verwendet (z. B. document.forms['myform'].blah.value anstelle von document.getElementById("blah").value), zwingen Sie ihn, die gesamte DOM 1-Spezifikation abzuschreiben, bis er sie von Grund auf versteht.

Bearbeiten 2: Eine weitere wichtige Frage ist, wie Sie Ihre neue AJAX-Anwendung dokumentieren. Schnittstellen im REST-Stil eignen sich gut für die Dokumentation in einem Wiki. Ich habe eine Seite auf oberster Ebene erstellt, auf der alle Dienste mit einer Beschreibung aufgeführt sind. Wenn man auf den Pfad des Dienstes klickt, gelangt man zu einem Dokument mit detaillierten Informationen über jeden der Unterpfade. Theoretisch kann man mit diesem Schema so tief dokumentieren, wie man den Baum braucht.

Wenn Sie sich für JSON entscheiden, müssen Sie ein Schema zur Dokumentation der Objekte entwickeln. Ich habe einfach die möglichen Eigenschaften im Wiki als Dokumentation aufgelistet. Das funktioniert gut für einfache Objektbäume, kann aber bei größeren, komplexeren Objekten kompliziert werden. In diesem Fall können Sie eine Ergänzung mit etwas wie IDL oder WebIDL in Betracht ziehen. (Kann nicht viel schlimmer sein als XML DTDs und Schemas. ;-))

Der DHTML-Code ist in seiner Dokumentation etwas klassischer gehalten. Sie können ein Werkzeug wie JSDoc um Dokumentation im JavaDoc-Stil zu erstellen. Es gibt nur einen Vorbehalt. Javascript-Code eignet sich nicht gut, um im Code dokumentiert zu werden. Schon allein aus dem Grund, dass der Download dadurch aufgebläht wird. Es kann jedoch vorkommen, dass Sie regelmäßig Code schreiben, der als zusammenhängendes Objekt funktioniert, aber hinter den Kulissen nicht als ein solches Objekt kodiert ist. Daher besteht die beste Lösung darin, JSDoc-Skelettdateien zu erstellen, die die Javascript-Objekte darstellen und dokumentieren.

Wenn Sie GWT verwenden, sollte die Dokumentation eine Selbstverständlichkeit sein.

2voto

ScArcher2 Punkte 81775

Überprüfen Sie die Streifen Rahmen . Wenn Sie mit Streben vertraut sind, dann werden Sie es verstehen, aber es ist so viel besser. Sie haben eine Streifen gegen Streben auf ihrer Website zu finden. Schauen Sie doch mal nach, ob es Sie interessiert. Es ermöglicht Ihnen, mit jedem Ajax-Framework zu arbeiten, das Sie wollen, und ich glaube nicht, dass es lange dauern würde, von Struts zu Stripes zu migrieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X