2010-03-28 5 views
5

Vorwort Ich bin neu in der Web-Entwicklung. Ich versuche, einen Kernsatz von RESTful-Webservices um eine wertvolle Dokumentbibliothek herum zu erstellen (anfängliche CRUD-Fähigkeiten). Dabei erstelle ich theoretisch ein perfekt wiederverwendbares und skalierbares Backend, das in der Zukunft für unvorhergesehene Anwendungen genutzt werden kann.Best Practice zum Erstellen von Web-Services

Meine Frage dreht sich um die beste Praxis dafür. Meine anfängliche Anforderung hat mir auch ein einzigartiges Frontend zu schaffen. Würde ich das Front-End und Back-End komplett getrennte Projekte machen, um die Wiederverwendbarkeit zu verbessern. Es würde den Overhead erhöhen.

Betrachten wir GWT, Restlet und den Java EE-Technologie-Stack, wenn dies das Setup überhaupt beeinflusst.

Antwort

2

Am wichtigsten ist das Design einer sauberen Java-API - unabhängig von REST, RMI oder einem anderen Protokoll, das Sie verwenden möchten. Von einer sauberen Java-API können Sie jede Zugriffsmethode unterstützen.

Wenn Sie keinen Anwendungsfall für diese anderen Zugriffsmethoden haben, erstellen Sie sie jetzt nicht. Sie können es erstellen, wenn Sie es brauchen.

Die am einfachsten zu hinzufügende Schnittstelle ist eine webbasierte Schnittstelle, auf der Ihre Webanwendung in derselben JVM wie Ihre Kern-API ausgeführt wird. Ich würde dies tun, wenn dies für Ihren Anwendungsfall funktioniert. Das Erstellen einer separaten Konsolenanwendung, die über ein REST (oder was auch immer) -Protokoll auf Ihre Kern-API zugreift, ist viel mehr Arbeit.

+0

Sie sprechen über die Java-Ebene, die tatsächlich mit der Datenbank richtig interagiert? – Holograham

+0

Korrekt.Interagiert mit der Datenbank und führt Ihre Geschäftslogik, Validierungslogik usw. durch. –

+0

Diese Antwort ist eine gute Antwort. Die einzige Sache, die ich hinzufügen würde, ist, Ihre Bedenken hinsichtlich der Implementierung/Implementierung zu berücksichtigen - sind Sie froh, dass Ihre Ansichtsebene in derselben JVM wie Ihre Geschäftsebene/Datenebene ausgeführt wird? Oder muss sich Ihre Datenebene beispielsweise hinter einer Firewall befinden? Wenn diese für Sie nicht wichtig sind, konzentrieren Sie sich auf das Entwerfen einer guten API und lassen Sie die exotischen Sachen für später. –

1

Martin Fowler schrieb vor kurzem einen sehr schönen Artikel über die Grundlagen von REST: Richardson Maturity Model. Ich fand es sehr hilfreich, die Prinzipien von REST zu verstehen.

+0

danke wird lesen ... aber bedeutet das, ich habe die Frage komplett verpfuscht? – Holograham

+0

ah ok: P es war definitiv ein aufschlussreicher Artikel. – Holograham

0

Sie sollten GWT-RPC anstelle von REST verwenden, wenn Sie wissen, dass Sie GWT für das Frontend verwenden werden. Weitere Diskussion here.

Wenn Sie jedoch der Meinung sind, dass Sie Ihre Daten eventuell über eine REST-API verfügbar machen oder eine andere Technologie im Frontend verwenden möchten, ist REST möglicherweise die bessere Wahl.

Das gwt-rest Projekt kann auch hilfreich sein.

+0

danke, ich habe beide berücksichtigt und REST war die ultimative Entscheidung basierend auf den Wiederverwendbarkeitsanforderungen. – Holograham

0

Ein Kollege und ich haben ein GWT-System mit separaten Projekten für Vorder-und Rückseite geschrieben. Es war hilfreich, die Dinge klar zu machen, wo der Code ausgeführt wird. Aber ich bin mir nicht sicher, ob ich die Dinge in einem zukünftigen System trennen würde.

Auch, wenn Sie neu in der Web-Entwicklung sind, denke ich nicht, dass Sie erwarten sollten, ein perfekt wiederverwendbares Backend zu machen. Sie werden viele Dinge lernen, wie Sie gehen. Ich denke, dass agile Programmierer einen iterativen Ansatz empfehlen würden, (a) einen kleinen Aspekt zum Arbeiten zu bringen und ihn dann (b) umzuformen, um ihn schön zu machen.

1

Wenn Sie REST-basierte Backend-Services verwenden möchten, sollten Sie das Projekt RestyGWT verwenden, mit dem Sie einen GWT-RPC-Programmierstil für den Zugriff auf Ihre JSON-basierten Restful-Services verwenden können.

Das Schöne an REST-basierten JSON-Diensten gegenüber herkömmlichen GWT-RPC-Diensten ist, dass diese Dienste dann von anderen Clients oder sogar in Mashups einfacher genutzt werden können.