Mittwoch, 19. Februar 2014
Treffen der dodnedder am 27.02.2014
Und wieder einmal ist es soweit, die treffen sich im Erlanger Raum. Diesesmal liegt der Schwerpunkt des Vortrags auf der Zusammenarbeit von Entwicklungsteams in größeren Projekten. Zumindest habe ich das so verstanden. Aber ins Detail geht es am Donnerstag mit:
Composite Apps mit Prism entwickeln
Die Entwicklung großer Softwareanwendungen ist selbst mit einem sehr guten Team schwierig und risikoreich. Deshalb werden große Anwendungen häufig aus zahlreichen kleineren und damit leichter handhabbaren Modulen zusammengesetzt. Die Entwicklung dieser sogenannten Composite Apps ist äußerst sinnvoll, stellt den Entwickler aber auch vor viele technische Herausforderungen. Konkret bedeutet das: Wie reden Module miteinander? Wie werden Module gefunden und geladen? Wie setzt sich die Benutzeroberfläche aus vielen kleinen Puzzlestücken zusammen?
In diesem Vortrag zeige ich Euch, wie Ihr diese Probleme mit der C# Library PRISM lösen könnt. PRISM stellt Euch das nötige Rüstzeug für eine schnelle und solide Entwicklung von Composite Apps zur Verfügung. Anhand vieler Code-Beispiel lernt Ihr während des Vortrags die wichtigsten Themen bei der Entwicklung Eurer Composite App mit PRISM erfolgreich zu meistern.
Benedikt Buer leitet die Softwareentwicklung bei der Padaluma Inkjet Solutions GmbH. Als Softwareentwickler hat er sich mit den unterschiedlichsten Technologien und Anwendungsfeldern beschäftigt. Durch die Entwicklung von hardwarenahen Steuerungen über klassische Desktop Anwendungen bis zu Single Page Web Applikationen hat er sich einen breiten Überblick verschafft und viele Einblicke gewonnen. Sein momentanes Steckenpferd ist die Entwicklung modularer Software für Digitaldruckanlagen.
Datum & Zeit:
Donnerstag, 27. Februar 2014 ab 19:00
Ort:
infoteam Software AG - Am Bauhof 9, 91088 Bubenreuth
Anmeldung:
Bitte nutzt die Anmeldung auf der dodnedder-Seite, damit wir ein bisschen planen können. Das ist der Link REGISTRIERUNG gleich oben rechts ;)
Dort findet ihr auch genauere Anfahrtsdetails.
Samstag, 8. Februar 2014
Dojo Workshop #4 - Templates Widgets, Object Store
Ein zäher vierter Teil im Dojo Workshop. Ziel war es ein eigenes Widget mit Template zu erstellen. Idealerweise eine Liste, da dies unter anderem auch eine Schleife im Markup des Templates bedeutet hätte. Anschließend sollte das Template anhand eines Businessobjekt gerendert werden. Das Objekt sollte aus einem Object Store anhand eines Controllers bezogen werden.
Dojo erlaubt das Erstellen von Widgets mit Hilfe von Templates. Ob es sich dabei zwingend um ein einzelnes Steuerelement oder gar um ganze Seitenabschnitte halten muss, sei dahin gestellt. Mit define und dem _TemplatedMixin lassen sich eigene template-basierte Widgets definieren. Das Template ist entweder ein JavaScript String oder wurde zuvor mit require!text aus einer separaten Datei geladen.
Da mit define ein Name für den Prototype vergeben wurde, kann im eigentlichen Markup in Verbindung des
Der folgende Schnipsel zeigt eine Deklaration eine template-basierten Widgets in JS. Das Widget bezieht das Template aus einer externen Datei mit Hilfe der require Methode des Dojo Frameworks. Das Widget kann anschließend auf der Seite mit dem Markup
require(["dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/text!./templates/TemplatedWidgetThing.html"], function(declare, _WidgetBase, _TemplatedMixin, template) { declare('templatedWidgetThing', [_WidgetBase, _TemplatedMixin], { templateString: template }); });
Die Suche nach der Möglichkeit andere Token als ${name} zu verwenden (z. B. Conditional- oder For-Statements) führte leider zu keinem positiven Ergebnis. Zwar sah Dojo.Dtl sehr viel versprechend aus, weigerte sich jedoch erfolgreich irgendetwas nützliches zu tun.
Der letzte Stop war ein kurzer Blick auf den Object Store. Der Store bietet eine einheitliche API zur Abfrage und Manipulation von Objekten an. Im ersten Schritt haben wir einen Memory Store verwendet. Der Store hält alle seine Objekte im Speicher. Eine Manipulation des Speichers kann somit nicht ausgeschlossen werden.
Der letzte Teil, das Beziehen von Objekten aus einem Store mit Hilfe eines Controllers war zeitlich leider nicht möglich.
Um wieder etwas aufzuholen, wird bis zum nächsten Workshop. Der Server um eine REST API zur Objektabfrage und Manipulation unter Berücksichtigung der JSON/Rest Store Möglichkeiten erstellt. Zusätzlich wird eine Templating-Engine angebunden um weitaus anspruchsvollere Templates darstellen zu können.
Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Christian Haarmann.
Samstag, 1. Februar 2014
Dojo Workshop #3 - UI Widgets, Validierungen
Steuerelemente werden durch Dijit um zahlreiche Funktionalitäten erweitert. Widgets können über eine einheitliche API in JavaScript angesprochen und erstellt werden. Dijit bietet auch die Möglichkeit eigene Themes zu verwenden.
Widgets können entweder deklarativ direkt im Markup definiert werden oder aber mit Hilfe von JavaScript erstellt werden. Wenn Widgets im Markup deklariert werden, darf ein Aufruf an den Parser nicht fehlen. Dieser sucht nach Elementen mit bekannten Dojo-Tags, z. B.
Zum Einstieg wurde eine Login-Seite, bestehend aus den Eingaben Anmeldename (TextBox), Passwort (TextBox) und Land (Select), erstellt. Das Land ist mehr Just For Fun auf der Seite da es im Gegensatz zum Anmeldename und Passwort keine Texteingabe, sondern eine Auswahl erfordert. Listen, bzw. Select-Widgets, können so zum Beispiel keine
Die Eingabefelder für Anmeldename und Passwort waren weniger kritisch. Damit die Eingabefelder jedoch mit den Möglichkeiten von Dojox validiert werden können, bedarf es keiner normalen dijit/form/TextBox, sondern einer dijit/form/ValidationTextBox. Darüber hinaus sind die Dojox Validierungen ebenfalls modularisiert. Eine E-Mail Validierung wird erst möglich nachdem neben dem
Das Konfigurieren der Validierung gestaltet sich an dieser Stelle aufgrund der fehlenden Dokumentation etwas umständlich. Entweder ist Reverse Engineering aus den Dojox-Sourcen erforderlich, oder aber Beispiele verraten einen bereits die notwendigen Details zur Steuerung der Schnittstelle. Die Konfiguration geschieht entweder deklarativ oder per Skript. Bei der deklarativen Schreibweise wird die Konfiguration direkt im
Das
Für diese Seite werden beim Laden bereits 87 Requests an den Webserver abgesetzt. Der Grund für die hohe Anzahl der Requests ist das Nachladen der benötigten Abhängigkeiten. Da diese hohe Anzahl der Requests in Produktivumgebungen, insbesondere bei hoher Latenz, zu einer hohen Ladezeit führt, sollten mit Dojo erstellte Projekte unbedingt das Packaging bzw. Building berücksichtigen. Dies werden wir in einem späteren Workshop ausprobieren und die Anwendung noch einmal auf ihre Geschwindigkeit untersuchen.
Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Thorsten Kutz.