GWT Best Practices I
()
Über dieses E-Book
Ähnlich wie GWT Best Practices I
Titel in dieser Serie (100)
Serviceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Bewertung: 0 von 5 Sternen0 BewertungenGeolocation mit PHP: Foursquare-API, Google Places & Qype Bewertung: 0 von 5 Sternen0 BewertungenNFC: Near Field Communication für Android-Entwickler Bewertung: 5 von 5 Sternen5/5HTML5 Security Bewertung: 0 von 5 Sternen0 BewertungenHTML5 für Mobile Web Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in Google Go Bewertung: 0 von 5 Sternen0 BewertungenSharePoint-Entwicklung für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenIT Wissensmanagement: Theorie und Praxis Bewertung: 0 von 5 Sternen0 BewertungenAlgorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenUX Design für Tablet-Websites: Ein Überblick Bewertung: 0 von 5 Sternen0 BewertungenÜberzeugende Präsentationen: Konzeption, Technik und Design Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Bewertung: 0 von 5 Sternen0 BewertungenSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Bewertung: 0 von 5 Sternen0 BewertungenJava EE Security Bewertung: 0 von 5 Sternen0 BewertungenSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Bewertung: 0 von 5 Sternen0 BewertungenMobile Business: Was Entscheider morgen wissen müssen Bewertung: 0 von 5 Sternen0 BewertungenAmazon Web Services für .NET Entwickler Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenCL Bewertung: 0 von 5 Sternen0 BewertungenSpring: Vier Perspektiven auf Framework und Ökosystem Bewertung: 0 von 5 Sternen0 BewertungenF#: Ein praktischer Einstieg Bewertung: 0 von 5 Sternen0 BewertungenApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Bewertung: 0 von 5 Sternen0 BewertungenQualitätssicherung mit JavaScript und PHP Bewertung: 0 von 5 Sternen0 BewertungenTitanium Mobile: Multi Platform Apps mit JavaScript Bewertung: 0 von 5 Sternen0 BewertungenQualität in IT-Architekturen: Management Bewertung: 0 von 5 Sternen0 BewertungenBPM: Strategien und Anwendungsfälle Bewertung: 0 von 5 Sternen0 BewertungenJavaScript auf dem Server Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
Progressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Bewertung: 0 von 5 Sternen0 BewertungenEnterprise Java Web Services Bewertung: 0 von 5 Sternen0 BewertungenAutomatisiertes Testen: Testautomatisierung mit Geb und ScalaTest Bewertung: 0 von 5 Sternen0 BewertungenMicrosoft Azure: Cloud Entwicklung für lokale Applikationen Bewertung: 0 von 5 Sternen0 BewertungenJPA 2.1: Persistence-Features in Java EE 7 Bewertung: 0 von 5 Sternen0 BewertungenDatenbank-Tuning - Slow Queries und MySQL-Performance: Slow Queries und MySQL-Performance Bewertung: 0 von 5 Sternen0 BewertungenApps mit Azure Bewertung: 0 von 5 Sternen0 BewertungenDependency Injection in Java: Testing mit CDI-Unit und DI-Frameworks Bewertung: 0 von 5 Sternen0 BewertungenAufsetzen, Testen und Betrieb einer Android-App Bewertung: 0 von 5 Sternen0 BewertungenSpring: Vier Perspektiven auf Framework und Ökosystem Bewertung: 0 von 5 Sternen0 BewertungenForms over Data mit Knockout.js: Die freie MVVM-JavaScript-Bibliothek im Praxiseinsatz Bewertung: 0 von 5 Sternen0 BewertungenAngularJS: Testing und Best Practices Bewertung: 5 von 5 Sternen5/5Nebenläufigkeit in Java und C++ Bewertung: 0 von 5 Sternen0 BewertungenjQuery Mobile: Unit Testing Bewertung: 0 von 5 Sternen0 BewertungenBig Data: Datenverarbeitung basierend auf MOM und SQL Bewertung: 0 von 5 Sternen0 BewertungeniOS Essentials: Frameworks, Tools und Twitter API Bewertung: 0 von 5 Sternen0 BewertungenMemory Leaks in Java Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenSharePoint Kompendium - Bd. 16 Bewertung: 0 von 5 Sternen0 BewertungenMQL: Eine hierarchische Abfragesprache mit TypeScript erstellen Bewertung: 0 von 5 Sternen0 BewertungenElasticsearch: Clientnutzung, Datenvisualisierung und Apache Lucene Bewertung: 0 von 5 Sternen0 BewertungenApache Mahout: Empfehlen, clustern, klassifizieren Bewertung: 0 von 5 Sternen0 BewertungenTestwissen für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenDer App-Entwicklungszyklus Bewertung: 0 von 5 Sternen0 BewertungenGeolocation mit PHP: Foursquare-API, Google Places & Qype Bewertung: 0 von 5 Sternen0 BewertungenSoftwarestabilität in der Industrie Bewertung: 0 von 5 Sternen0 BewertungenSoftware entwickeln mit C#, WPF und dem MVVM-Konzept Bewertung: 0 von 5 Sternen0 BewertungenOSGi-Entwicklung Bewertung: 0 von 5 Sternen0 BewertungenApplication Insights Bewertung: 0 von 5 Sternen0 BewertungenSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Bewertung: 0 von 5 Sternen0 Bewertungen
Internet & Web für Sie
HTML5 & CSS3 (Prags) Bewertung: 0 von 5 Sternen0 BewertungenEinführung ins Darknet: Darknet ABC Bewertung: 0 von 5 Sternen0 BewertungenDas Facebook-Marketing-Buch Bewertung: 4 von 5 Sternen4/5Programmieren lernen mit Python 3: Schnelleinstieg für Beginner Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in WordPress Bewertung: 0 von 5 Sternen0 BewertungenShopware 6 Handbuch Bewertung: 0 von 5 Sternen0 BewertungenJoomla 4.0 logisch!: Einfache Webseitenerstellung ohne Programmierkenntnisse Bewertung: 0 von 5 Sternen0 BewertungenUX-Missverständnisse: Was sich User wirklich wünschen Bewertung: 0 von 5 Sternen0 BewertungenDer Content Faktor: Schreiben Sie Texte, die gefunden und gelesen werden Bewertung: 0 von 5 Sternen0 BewertungenWir machen dieses Social Media Bewertung: 0 von 5 Sternen0 BewertungenAndroid Security: Von Fake-Apps, Trojanern und Spy Phones Bewertung: 0 von 5 Sternen0 Bewertungen30 Minuten Metaverse Bewertung: 0 von 5 Sternen0 BewertungenWas kommt. Was geht. Was bleibt.: Kluge Texte über die wichtigsten Fragen unserer Zeit Bewertung: 0 von 5 Sternen0 BewertungenSo findest du den Einstieg in WordPress: Die technischen Grundlagen zu Installation, Konfiguration, Optimierung, Sicherheit, SEO Bewertung: 0 von 5 Sternen0 BewertungenSchnelleinstieg WordPress SEO: Einstellungen, Keywords, Plug-ins und Strategien für optimales SEO Bewertung: 0 von 5 Sternen0 BewertungenStarke Webtexte. So texten Sie Ihre Website selbst Bewertung: 0 von 5 Sternen0 BewertungenSEO Crashkurs - 10 Schritte zum Erfolg auf Google Bewertung: 0 von 5 Sternen0 BewertungenPHP für WordPress: Themes und Templates selbst entwickeln Bewertung: 0 von 5 Sternen0 BewertungenDas kleine Hypnose Einmaleins - Alles was Sie schon immer über die Hypnose wissen wollten von Ewald Pipper vom Hypnoseinstitut Bewertung: 0 von 5 Sternen0 BewertungenBlockchain - Und Wie Sie Funktioniert: Der Endgültige Leitfaden Für Einsteiger Über Blockchain Wallet, Mining, Bitcoin, Ethereum, Litecoin Bewertung: 0 von 5 Sternen0 BewertungenGoogle Platz 1: Lernen Sie von einem der führenden Suchmaschinenoptimierer Deutschlands Bewertung: 0 von 5 Sternen0 BewertungenBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Bewertung: 3 von 5 Sternen3/5openHAB: Automatisiertes Heim - Teil 1 Bewertung: 4 von 5 Sternen4/5Ich Hacker – Du Script-Kiddy: Hacking und Cracking Bewertung: 0 von 5 Sternen0 BewertungenWordPress-Themes entwickeln: HTML5, CSS3, JavaScript und PHP: Praxiswissen und Quellcodes zum Entwurf von WordPress-Themes Bewertung: 0 von 5 Sternen0 BewertungenJavaScript kinderleicht!: Einfach programmieren lernen mit der Sprache des Web Bewertung: 0 von 5 Sternen0 BewertungenOnline-Marketing: 10 Schritte zur finanziellen Freiheit Bewertung: 0 von 5 Sternen0 BewertungenNext Level JavaScript: Schlagworte Bewertung: 0 von 5 Sternen0 BewertungenPR im Social Web: Das Handbuch für Kommunikationsprofis Bewertung: 0 von 5 Sternen0 BewertungenEinfach Verschlüsseln Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für GWT Best Practices I
0 Bewertungen0 Rezensionen
Buchvorschau
GWT Best Practices I - Elisabeth Blümelhuber
GmbH
1 Asynchrone Requests und Race Conditions in GWT
Für die Kommunikation zwischen Server und Client verwendet Google Web Toolkit (GWT) asynchrone Requests [1]. Hierbei sendet der Client eine Anfrage an den Server und erhält die Antwort zeitlich versetzt, wodurch für den Nutzer der Webseite ein Weiterarbeiten ohne Blockieren des Workflows möglich ist – ein Muss für die heutigen Erwartungen an Usability.
Bei Applikationen mit größeren, komplexen User Interfaces kann dies jedoch zu Problemen in Form von Race Conditions führen. Um damit in Hinblick auf Codequalität, korrekter Funktionalität und konkreter Situation sinnvoll umzugehen, gibt es mehrere Alternativen.
1.1 Ausgangssituation
Die Spezifikation für unser Beispiel: Eine zu erstellende Webseite beinhaltet eine Listbox, die mit Werten aus einer Datenbank befüllt werden soll, sowie einen Button, der das Hinzufügen von neuen Werten ermöglichen soll. Dieser Button soll nicht angezeigt werden, wenn sich in der Datenbank bereits fünf oder mehr Werte befinden. Außerdem soll der Button unabhängig von der Anzahl der Werte in der Listbox auch dann nicht angezeigt werden, wenn eine zusätzliche Datenbankanfrage über die Rechte des Benutzers negativ ausfällt. Sichtbar ist der Button daher lediglich dann, wenn sich sowohl weniger als fünf Werte in der Listbox befinden als auch die notwendigen Rechte vorhanden sind.
In der zu unserem Beispiel zugehörigen Serviceklasse auf der Serverseite gibt es zwei Methoden: fillListbox() und hasAddRights(). Dieses reduzierte Beispiel soll die grundsätzliche Problematik zeigen, dass in einem komplexen UI einander widersprechende Wünsche betreffend der Behandlung einzelner Kontrollelemente existieren. Eine gute Diskussion zu diesem Thema findet sich unter [2].
1.2 Ein erster Versuch
Die erste, naive Umsetzung der gewünschten Funktionalität auf Clientseite zeigt Listing 1.1. Auf den ersten Blick kann diese Implementierung für einen nicht an asynchrone Requests gewöhnten Entwickler die gewünschte Funktionalität liefern. Tatsächlich erhält der Client die Ergebnisse der beiden Abfragen nur zufällig in der Reihenfolge, die zur korrekten Anzeige des UI führt. Unter Umständen kehrt nämlich der zweite Request zuerst zurück, sodass die Variable tooManyValues (noch) auf true steht. Obwohl das der Fall sein sollte, wird der Button dann auch bei entsprechenden Rechten nicht angezeigt.
Wie bei jedem Auftreten von Race Conditions ist dabei besonders unangenehm, dass das Verhalten nicht deterministisch ist. Unter Umständen wird das Fehlverhalten im Testbetrieb gar nicht bemerkt, z. B.