Wie synchronisieren Sie serverseitigen und clientseitigen Code?

8

Etwas, was ich in der Softwaretechnik gelernt (und gelehrt habe), ist, dass Codeverdopplung die Wurzel allen Übels ist. Auf der anderen Seite fällt es mir schwer zu erklären, wie dieses Konzept auf die Entwicklung von Web-Apps angewendet werden sollte.

Erlauben Sie mir zu klären ... Input & amp; Datenvalidierung kann ein wichtiger Teil einer Web-App sein. Manchmal kann diese Validierung sehr komplex sein. Zum Beispiel arbeitete ich an einem Puzzle-Editor und die Validierung bestand darin, zu überprüfen, ob eine Operation oder ein Umzug gültig war. Nicht-triviale Regeln mussten dann überprüft werden.

Natürlich muss die Validierung serverseitig erfolgen, um die Konsistenz und Qualität der gespeicherten Daten zu gewährleisten. Es ist jedoch ein Muss, die Client-Validierung zu überprüfen, um eine reibungslose Benutzererfahrung sicherzustellen.

In den meisten Fällen werden clientseitiger und serverseitiger Code in verschiedenen Sprachen geschrieben (z. B. Javascript / Python), daher muss der Validierungscode zweimal geschrieben werden. In meiner einzigen Erfahrung mit GWT / Java (Java auf beiden Seiten) fand ich jedoch heraus, dass ein großer Teil des Validierungscodes wiederverwendet werden konnte. Das schien alles einfacher zu machen: Wartung, Refactoring, Debugging ...

Meine Frage an Sie lautet also: Wie verwalten Sie Probleme im Zusammenhang mit der Code-Duplizierung in Projekten, in denen die clientseitigen und serverseitigen Sprachen unterschiedlich sind?

    
Philippe Beaudoin 15.12.2009, 18:28
quelle

3 Antworten

3

Normalerweise ist es sehr schwierig, den generierten Code zu duplizieren, aber ein gängiger Ansatz besteht darin, einen Code-Generator zu verwenden, um entweder den Server- oder den clientseitigen Code zu erstellen, sodass Sie nur die Hälfte davon codieren. Der gängigste Ansatz ist das Schreiben der serverseitigen Common und die Erstellung des JavaScript-Codes durch den Code-Generator. Zum Beispiel ist die Sprache, die wir in meiner Firma verwenden, Coldfusion und Form-o-matic löst dieses Problem für uns. Die Leute nähern sich dem Problem auch aus der entgegengesetzten Richtung, indem sie JavaScript schreiben, das serverseitig ausgeführt werden kann. Ich würde nach einem Rahmen suchen, der das für Sie tun wird.

    
Bialecki 15.12.2009, 21:26
quelle
4

Die übliche Vorgehensweise ist, den Validierungscode serverseitig zu schreiben und ihn über eine Webmethode (in .NET existiert eine ähnliche Funktionalität in den meisten anderen Sprachen) zu veröffentlichen, so dass er von javascript aufgerufen werden kann. Als Ergebnis haben Sie eine einzige Methode, die sowohl von der Clientseite als auch von der Serverseite aus synchron und asynchron aufgerufen werden kann. Dies ist nicht in jedem Fall anwendbar, aber es hat bisher sehr gut funktioniert.

    
Brian Hasden 15.12.2009 18:34
quelle
0

Eine mögliche Lösung besteht darin, dass Sie die tatsächliche Validierung in einer Validierungsbeschreibungsdatei (in XML oder auf andere Weise) mithilfe einer DSL abstrahieren. Auf diese Weise müssen Sie die Validierungs-Engine nur in Client- und Serversprache implementieren und die Validierungen auf derselben Beschreibungsdatei basieren.

    
David Nouls 15.12.2009 19:39
quelle

Tags und Links