SDX@//build/: Tag 3 – Hansel and Anders minutes

8. November 2012

Am Tag 3 waren einige sehr interessante Vorträge bei äußerst bekannten Speakern dabei und es war mir eine Freude, mit diesen auch mal persönlich sprechen zu können.

U.a. handelte es sich um die folgenden Sessions:

Angle Brackets, Curly Braces, One ASP.NET and the Cloud (Scott Hanselman)

IMG_5641Scott ist ein Showman – das wird mir sicher jeder bestätigen, der ihn bereits einmal live gesehen hat. Doch im Gegensatz zu anderen kommt dabei auch viel an Inhalten rüber. Scott ging zunächst auf Windows Azure rein und stellte die Vorteile heraus, die Entwickler und Firmen davon haben. U.a. zeigte er dabei den Linux- und git-Support auf Azure und ging auf das neue Management-Portal ein. Danach drehte sich das Meiste um JavaScript, seine Entwicklung und seine Bedeutung bei der heutigen Webentwicklung. Die Aussage: man sollte darüber nachdenken, wie man den Client und dessen Ressourcen nutzen kann und nicht allein den Web-Server mit Arbeit belasten. Modernes JavaScript bietet hierfür die besten Voraussetzungen. Scott beschrieb JavaScript als "the Assembly Language of the web" und seinen steigenden Einfluss nicht nur auf dem Client, sondern auch auf dem Server. So wird für Node.js ebenfalls auf dem Server in JavaScript programmiert, womit sich JavaScript immer weiter als übergreifende Sprache vom Client bis hin zum Server entwickelt.

WP_20121101_004In der Fragerunde stellte Scott u.a. heraus, dass einiger Code immer auf dem Web-Server ausgeführt werden wird. Und er sieht z.B. ASP.NET MVC als hervorragende Möglichkeit, um Web-Anwendungen von der Server-Seite aus zu bereichern. Allerdings könne das ganze Rendering von Daten auf dem Client in JavaScript stattfinden, Client und Server tauschen dann zum Großteil nur noch Daten in JSON aus. Ich selbst fragte Scott zum Einfluss von JavaScript auf andere Sprachen wie C#. Seine Meinung dazu ist ähnlich wie bei Client vs. Server: es gibt Anwendungsszenarien, in denen C# die bessere Wahl ist, z.B. wenn auf Serverseite eine größere Menge an Businesslogik zu entwickeln ist. Zum Abschluss noch ein Foto und weiter ging’s zur nächsten Session.

Introducing TypeScript: Application-Scale JavaScript Development (Anders Hejlsberg)

IMG_5644Anders live zu sehen wollte ich mir nicht entgehen lassen, auch wenn mir TypeScript als solches zumindest zum Teil bereits bekannt war. Und in jedem Satz merkt man ihm an: er weiß, wovon er spricht! Ich will hier nicht auf die Möglichkeiten von TypeScript eingehen, das hat u.a. mein eXpert-Kollege Nico Bolender schon getan. Jedem, der größere Anwendungen in JavaScript schreiben will oder muss, kann ich TypeScript aber nur empfehlen. Mit seinem grundlegenden Modell, seinen Möglichkeiten und der Integrierbarkeit von bestehendem JavaScript-Code und vorhandener JavaScript-Frameworks ist es meiner Meinung nach die beste Wahl, wenn man sich andere Ansätze (CoffeeScript, Dart, …) anschaut.

Neben der eigentlichen Vorstellung der aktuellen Vorabversion von TypeScript ging Anders auch darauf ein, dass bis zu Version 1 noch einiges getan werden soll. So wollen sie Debugging in TypeScript-Code hinein ermöglichen, zudem ist eine Unterstützung von Generics geplant, wie man sie aus C# kennt. Last but not least ließ Anders in der Fragerunde keinen Zweifel offen, dass er noch "fully committed" zu C# ist. TypeScript sei durch die Priorisierung entstanden, ein besseres JavaScript-Tooling zu entwickeln, dies sei jedoch nur zwischenzeitlich ein primärer Fokuspunkt.

Building Real-Time Web Apps with ASP.NET SignalR (Damian Edwards)

WP_20121101_007Damian stellte SignalR als Technologie vor, um persistente Echtzeit-Verbindungen zwischen Clients und einem Web-Server herzustellen. Und ich muss sagen: wow, das hat was! Damit ist es möglich, dass z.B. ein Web-Server auf angebundenen Clients Events auslöst, auf welche diese reagieren können. Clients können dann ihrerseits wieder den Server antriggern. Und das ist in vielen verschiedenen Szenarien sinnvoll: Dashboard/Monitoring, Collaboration, Fortschrittsanzeigen von Aufgaben auf dem Server, Spiele, usw.. Dabei kann SignalR unterschiedliche Mechanismen einsetzen. Zunächst werden Web Sockets probiert, doch wenn die Voraussetzungen für deren Einsatz nicht gegeben sind, gibt es mehrere Fallback-Stufen: Server Sent Events, Forever Frame, Long Polling. Die Geschwindigkeit ist dabei sehr hoch. Auf Damians Rechner war z.B. ein Durchsatz mehrerer 100.000 Nachrichten pro Sekunde möglich. Als Clients ist u.a. Unterstützung für JavaScript, .NET, Silverlight, Windows Store Apps und iOS vorhanden.

How to Leverage Your Code Across Windows Phone 8 and Windows 8 (Doug Rothaus, …)

Dieser Vortrag ging darauf ein, mit welchen Strategien und Technologien ein möglichst großer Bestandteil der Codebasis einer App zwischen Windows 8 und Windows Phone 8 ausgetauscht werden kann. Als essentiell wurde dabei die Verwendung des MVVM-Patterns angesehen, mit dem der plattformspezifische View-Teil von der eigentlichen Logik getrennt werden kann. Um von beiden Plattformen direkt verwendet werden zu können, sollten für die Implementierung der Logik die Portable Class Libraries verwendet werden. Spezielle Zugriffe auf plattformspezifische Funktionalität und die WinRT/WinPRT muss dabei abstrahiert und als Abhängigkeit injiziert werden.

Insgesamt hatte ich den Eindruck, dass es um ein Vielfaches schwieriger ist, Code über Windows 8 und Windows Phone 8 umfassend austauschbar zu machen als dies z.B. bei iOS und Android zwischen Smartphones und Tablets der Fall ist. Hier wurde für mich deutlich, dass die Konvergenz der beiden Plattformen gerade erst begonnen hat. Ein umfassender Codeaustausch ist möglich, dies ist jedoch mit einiger Arbeit verbunden.