Und es hat Pieeeeeeep gemacht... LEGO MINDSTORMS und das Windows Phone.

Vor einigen Wochen hatten wir die Gelegenheit, auf der BASTA! Herbst 2013 sehr coole Themen vorzustellen. Darunter waren NFC und Touch Develop. Während es sich bei ersterem um eine faszinierende Technologie handelt, die ganz neue Möglichkeiten für Entwickler von z.B. Windows 8 und Windows Phone eröffnet, ist letzteres eine mobile Touch-First Entwicklungsplattform, mit der sich u.a. direkt auf dem Windows Phone Software entwickeln lässt.

You spin me round...

Neu seit Touch Develop 3.1 ist die Unterstützung von Bluetooth auf dem Windows Phone 8, was unsere Neugier natürlich sofort geweckt hat. Microsoft Research hat zeitgleich mit der Veröffentlichung bereits angepasste Bibliotheken veröffentlicht, mit der sich die aus Logo bekannte und in Touch Develop wiederbelebte Turtle eines neuen Features erfreuen durfte: Und zwar der Steuerung eines Spheros. Der Sphero ist ein Roboter Ball, der beliebig gesteuert werden kann und darüberhinaus mit einer RGB Diode seine Umgebung in Truecolor erleuchtet. Wenige Tage später - zur BASTA! - konnten wir zur Begeisterung der Teilnehmer dieser Session zeigen, was für einen Spaß es macht, den kleinen Roboterball ("Könnte er fliegen, würden wir ihn Snatch nennen!") mit dem Windows Phone zu steuern. Der Hersteller liefert übrigens nur Software für Android und iPhone mit.

Noch neugieriger waren die Teilnehmer allerdings auf den "richtigen" Roboter, der uns auf der BASTA! begleiten durfte. Ein LEGO MINDSTORMS NXT 2.0 Geselle, der sehr still und ausnahmslos ruhig zuschaute, während der Ball seine Runden drehte. Schade. Denn die Vorbereitungszeit zur BASTA! war zu knapp, um für Touch Develop eine Unterstützung des NXT Brick zu entwerfen.

Nr. 5 lebt!

Wenige Tage danach konnten wir das Versprechen, dass das natürlich (grundsätzlich) funktioniere, einlösen und eine nahezu vollständige Bibliothek für Touch Develop veröffentlichen, mit der sich auf die Daten des Roboters zugreifen lässt, bereits auf dem Brick vorhandene Programme starten, Töne ausgeben, Audio-Dateien abspielen, Sensoren auslesen und Motoren steuern lassen. Damit ist der Grundstein gelegt, um es NXT Besitzern zu ermöglichen, ihren LEGO MINDSTORMS Roboter nicht nur vom Windows Phone aus zu steuern, sondern die Apps dafür direkt auf dem Windows Phone zu entwickeln.

Das ist in einer Art und Weise revolutionär, dass Microsoft Research basierend auf diesen Experimenten in Bälde ein eigenes MINDSTORMS Set anschaffen wird und wir bereits im Gespräch mit verschiedenen Microsoft Evangelisten sind, wie wir das Thema in der Zielgruppe (also euch!) streuen können. Geplant sind u.a. weitere Sessions auf Entwicklerkonferenzen und sicher auch die ein oder andere Veröffentlichung zu dem Thema.

Bis dahin gibt es einen kurzen Einblick auf Youtube:

LEGO MINDSTORMS NXT with Touch Develop on Windows Phone - Part 1

LEGO MINDSTORMS NXT with Touch Develop on Windows Phone - Part 2

 

Und vergesst nicht, euch die Bibliotheken und die Demo Scripte (nxt piano, nxt demo) anzuschauen!

 

 

Ausgeknockt mit Knockout MVC (jetzt auch mit VB.NET)

Knockout.js ist in aller Munde, oder? Und warum auch nicht? Es schafft elegante Abkürzungen, wo wir vorher noch erhebliche Umwege gehen mussten. Kurzum: Es hat sich mal jemand Gedanken gemacht und das Ergebnis hat uns alle aus den Latschen gehauen. Vielleicht auch daher der Name.

In diesem Artikel geht es aber nicht um Knockout.js - daher gehe ich auch nicht auf die Funktionsweise ein – sondern um Knockout MVC. Genauer: Darum, dass letzteres zwar beworben wird mit “Simple C#/VB.NET expressions defining logic of the client side behavior are automatically converted to JavaScript constructions”, gleichzeitig aber bereits bei der Installation in einem VB.NET basierten ASP.NET MVC Projekt scheitert – und woran das liegt.

Problem #1

Das Quickstart Tutorial erklärt, dass zunächst das Paket via NuGet installiert wird:

Install-Package kMVC

Hier das Ergebnis bei einem ASP.NET MVC Projekt, für das VB.NET gewählt wurde (leicht gekürzt):

PM> Install-Package kMVC

"kMVC 0.5.4" wurde erfolgreich installiert.

Ausnahme beim Aufrufen von "Item" mit 1 Argument(en):  "Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))"
In C:\…\packages\kMVC.0.5.4\tools\install.ps1:3 Zeichen:1
+ $item = $project.ProjectItems.Item("global.asax").ProjectItems.Item("global.asax ..…

PM>

Die mitunter spannende Information sieht man in der Exception nicht. Aus irgendwelchen Gründen ist der Text gekürzt – und ich war’s nicht.

Das Powershell Skript hat mind. zwei Fehler:

  1. Es wird versucht die Global.asax.cs zu bearbeiten
  2. Die Codezeile, die in der Global.asax den KnockoutModelBinder hinzufügen soll, wird mit einem Semikolon abgeschlossen

Lösung #1

Einfach folgende Zeile der Methode Application_Start in der Global.asax.vb hinzufügen:

ModelBinders.Binders.DefaultBinder = New PerpetuumSoft.Knockout.KnockoutModelBinder()

Problem #2

… ist eigentlich gar keins. Denn während das Tutorial die notwendigen Scripte manuell via Script-Tag hinzufügt, geht der bevorzugte Weg in ASP.NET MVC 4 über Bundles.

Lösung #2

Einfach der Methode RegisterBundles in BundleConfig.vb folgende Zeilen hinzufügen:

bundles.Add(New ScriptBundle("~/bundles/knockout").Include( 
"~/Scripts/knockout-{version}.js",
"~/Scripts/knockout.mapping-latest.js",
"~/Scripts/perpetuum.knockout.js"))

Und abschließend – sofern Knockout MVC global eingesetzt werden soll – in der _Layout.vbhtml View das Bundle im Header laden:

<head> 
< meta charset="utf-8" />
< meta name="viewport" content="width=device-width" />
<title>@ViewData("Title")</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/knockout")
< /head>

Problem #3

Und jetzt wird deutlich, was passiert, wenn man nur an C# denkt. Denn all die Vorarbeit bringt erst einmal gar nichts. Probieren wir es mit dem ClickCounter Beispiel von Knockout MVC.

Schritt 1

Folgender Code ist als ClickCounterModel.vb dem Verzeichnis Models hinzuzufügen:

Imports DelegateDecompiler 

Public Class ClickCounterModel

Public Property NumberofClicks As Integer

<Computed>
Public ReadOnly Property HasClickedTooManyTimes As Boolean
Get
Return Me.NumberofClicks > 3
End Get
End Property

Public Sub RegisterClick()
Me.NumberofClicks = Me.NumberofClicks + 1
End Sub

Public Sub ResetClicks()
Me.NumberofClicks = 0
End Sub
End Class

  

Schritt 2

Folgender Code ist als ClickCounterController.vb dem Verzeichnis Controllers hinzuzufügen:  

Imports PerpetuumSoft.Knockout 

Public Class ClickCounterController
Inherits KnockoutController

'
' GET: /ClickCounter

Function Index() As ActionResult
Return View(New ClickCounterModel())
End Function

Function RegisterClick(model As ClickCounterModel) As ActionResult
model.RegisterClick()
Return Json(model)
End Function

Function ResetClicks(model As ClickCounterModel) As ActionResult
model.ResetClicks()
Return Json(model)
End Function

End Class

Schritt 3

Folgender Code ist als Index.vbhtml dem neuen Verzeichnis Views\ClickCounter hinzuzufügen:

@Imports PerpetuumSoft.Knockout 
@ModelType KnockoutMvcDemoClickCounter.ClickCounterModel

@Code
ViewData("Title") = "Index"
Dim ko = Html.CreateKnockoutContext()
End Code

<h2>Index</h2>

<div>You've clicked @ko.Html.Span(Function(m) m.NumberofClicks) times</div>

@ko.Html.Button("Click me", "RegisterClick", "ClickCounter").Disable(Function(m) m.HasClickedTooManyTimes)

<div @ko.Bind.Visible(Function(m) m.HasClickedTooManyTimes)>
That's too many clicks! Please stop before you wear out your fingers.
@ko.Html.Button("Reset clicks", "ResetClicks", "ClickCounter")
< /div>

@ko.Apply(Model)

   

Und nun das Problem: Einfach mal die Anwendung ausführen. Die Zeile @ko.Apply(Model) löst eine NotImplementedException aus:

System.NotSupportedException wurde nicht von Benutzercode behandelt.
  HResult=-2146233067
  Message=Die angegebene Methode wird nicht unterstützt.
  Source=PerpetuumSoft.Knockout
  StackTrace:
       bei PerpetuumSoft.Knockout.KnockoutExpressionConverter.VisitMethodCall(MethodCallExpression m)
       …

Lösung #3

Sofern man mit VB.NET arbeitet, verhält sich eine Condition in der Methode VisitMethodCall in Knockout MVC anders als in C#:

if (typeof(Expression).IsAssignableFrom(m.Method.ReturnType)) 
return VisitMemberAccess(m.Object, m.Method.Name);

In VB.NET resultiert die Condition immer in einem False und damit löst die letzte Zeile der Methode eine NotImplementedException aus:

throw new NotSupportedException();

Um dieses Problem zu lösen mag folgendes zunächst einmal nicht der korrekte Weg sein, aber erst einmal nur zum Beweis reicht es, die Condition auszukommentieren und Knockout MVC neu zu kompilieren.

Damit werden Firstname und Lastname zwar gefüllt, der Computed Parameter Fullname aber rührt sich nicht. Und ein Blick auf den generierten JavaScript Code offenbart, warum das so ist.

Problem #4

<script type="text/javascript"> 
var viewModelJs = {"Firstname":"Christian","Lastname":"Jacob","Fullname":"Christian Jacob"};
var viewModel = ko.mapping.fromJS(viewModelJs);
viewModel.Fullname = ko.computed(function() { try { return ((this.get_Firstname() + ' ') + this.get_Lastname())} catch(e) { return null; } ;}, viewModel);
ko.applyBindings(viewModel);
</script>

Gesehen?

Beim Generieren des Scripts wurde via Reflection das Model analysiert und dabei die Getter der Properties mit dem Präfix get_ aufgelöst. Spannend daran: Auch hier verhalten sich C# und VB.NET anders, denn während der kompilierte IL Code in beiden Sprachen Property-Getter und –Setter tatsächlich mit get_ und set_ präfixt, liefert die Reflection bei C# Code zur Laufzeit kein Präfix zurück. Und da der ansonsten generierte JavaScript Code ebenfalls nicht mit Präfixen arbeitet, ist das auch korrekt. Nur bei VB.NET kommt es zu dem oben beschriebenen Phänomen und damit kann die Funktion ko.computed die Properties nicht mehr auflösen.

Lösung #4

Auch diese Lösung ist mit Vorsicht zu genießen und erhebt weder Anspruch auf Vollständigkeit oder überhaupt Richtigkeit. Sie ist eher als Proof of Theory zu verstehen.

In der Klasse KnockoutJsModelBuilder muss die Methode AddComputedToModel derart angepasst werden, dass die Rückgabe von DecompileExpressionVisitor.Decompile etwaiges Auftreten von get_ Präfixen unterdrückt.

Beispiel:

sb.Append(ExpressionToString(modelType, DecompileExpressionVisitor.Decompile(Expression.Property(Expression.Constant(model), property))).Replace("get_", ""));

Fazit

Nach diesen beiden Anpassungen funktioniert das Beispiel. Dass Knockout MVC eine sehr schöne Ergänzung zu Knockout.js ist, um es nativen .NET Entwicklern zu erleichtern, auch in den Genuss der Entwicklung reaktiver Webanwendungen zu kommen (ohne beim Gedanken an Datenbindung oder dynamische UIs graue Haare zu bekommen) ist keine Neuigkeit.

Sofern sich die Entwickler von Knockout MVC diese Analyse zu Herzen nehmen, beschränkt sich die Verwendungsmöglichkeit demnächst aber vielleicht nicht mehr nur auf C#-Entwickler.

BASTA! Herbst 2013 - Wir sind dabei!

In gerade mal sechs Wochen ist es wieder so weit: Die BASTA! Hauptkonferenz im Herbst öffnet ihre Pforten. In der Woche vom 23.09. bis zum 27.09. gibt es wieder zahlreiche Workshops, Sessions und Keynotes. Auch wird es nicht an Abendveranstaltungen mangeln, die dem einen oder anderen sicher etwas Fitness abverlangen werden, ansonsten aber zu interessanten Diskussionen anregen und natürlich der Vernetzung dienen sollen.

Über 130 Sessions laden dazu ein, Wissen aufzubauen, den Trends zu lauschen oder einfach nur die Neugier zu befriedigen. Denn dieses Jahr steht alles im Zeichen der drei Hauptschwerpunkte:

  • .NET als Entwicklungsplattform für erfolgreiche Business- und Consumer-Anwendungen
  • Windows 8 als neue Plattform, die von Phone und Tablet, über PC und Server, ein System bildet
  • Das Web, dessen offene Architektur über Browser alle Technologieplattformen verbindet.

Wer in diesem Sinne die Gelegenheit verpasst hat, auf der #dwx13 mehr zum Thema NFC und Microsofts Vorstellung von Tap & Send zu erfahren, wird hier die Chance haben, das nachzuholen. Die TOP TECHNOLOGIES CONSULTING GmbH wird mit folgenden Themen an der Veranstaltung teilnehmen:

Teilen kann so einfach sein - Tap+Send mit NFC!

Seit Windows/Phone 8 bietet Microsoft die Möglichkeit Daten, wie z.B. Kontaktinformationen oder Bilder, zwischen verschiedenen Endgeräten durch bloße Berührung auszutauschen. Diese Session zeigt anhand einer Windows 8 und Windows Phone 8 Beispielanwendung, welche Voraussetzungen hierfür nötig sind und wie dieses Szenario implementiert werden kann. Für eine schnellere Entwicklung der Apps natürlich mittels Code-Sharing über die Portable Class Library.

Touch Develop - Entwicklung direkt auf dem Windows Phone

2010 schickte Microsoft mit "Visual Studio On the Go" Entwickler noch in den April. Kurze Zeit später präsentierte Microsoft Research Touch Develop für Windows Phone, Entwicklung für das Phone auf dem Phone. Jetzt auch für den Marketplace, Windows 8 Store und im Web inklusive Intellibuttons. Diese Session zeigt den Einsatz von Touch Develop von der Idee bis zum Store (and beyond).

 

 

Phänomenal! Visual Studio 2013 ALM Virtual Machine und die ersten Hands On Labs!

Brian Keller, Principal Technical Evangelist bei Microsoft, hat vor wenigen Tagen die Verfügbarkeit der neuen virtuellen Maschine bekanntgegeben, die mit einem vorinstallierten Visual Studio 2013 daherkommt. Das Image enthält eine vollständige ALM (Application LifeCycle Management) Infrastruktur und setzt sich zusammen aus

  • Windows Server 2012 Standard (Eval)
  • Visual Studio 2013 Ultimate (Preview)
  • Team Foundation Server 2013 (Preview)
  • Office Professional Plus 2013 (Word, PowerPoint, Excel, Outlook)
  • Visio Professional 2013
  • InRelease Server und Deployers!

Darüber hinaus wurden Beispielnutzer eingerichtet, mit denen die Hands On Labs durchgegangen werden können. Die Links zu den entsprechenden Downloads finden sich im Blogartikel von Brian.

Bereits jetzt gibt es drei Labs, die einem neue ALM Szenarien näher bringen sollen:

  1. Getting started with Git using Team Foundation Server 2013
  2. Getting started with InRelease for Visual Studio 2013
  3. New Collaboration Experience for Development Teams using Team Foundation Server 2013

Während in den letzten Monaten besonders die Git Unterstützung durch Visual Studio hervorgehoben wurde, ist mit Sicherheit besonders das Lab run um InRelease als außergewöhnlich zu bezeichnen. Microsoft hatte kürzlich erst (zur TechEd) die Übernahme der Software aus dem Hause InCycle angekündigt und wird das Release Management Werkzeug nun in die Palette der eigenen ALM Werkzeuge aufnehmen.

Übrigens:

Als Microsoft ALM Partner stehen wir natürlich zur Verfügung, wenn Interessierte Unterstützung bei der Evaluation vom Team Foundation Server benötigen oder ein Migrationsprojekt auf die aktuellste Version planen. Sprechen Sie uns an!

Nach Hinten für alles offen. Open/Closed für Einsteiger

Ergänzend zu dem kurzen Artikel, den es hier zum Open/Closed Pattern bereits Ende 2012 gegeben hat, wurde nun die Aufzeichnung der dazu passenden Session auf der Developer Week 2013 auf Youtube veröffentlicht.

Viel Spaß beim Anschauen!

 

 

Die #dwx13 – Ein geglücktes Experiment?

Die Neue Mediengesellschaft lud dieses Jahr unter dem Titel “Developer Week 2013” Interessierte aus den Sparten .NET Entwicklung, Mobile Entwicklung und Web-Entwicklung zu einer Woche gespickt mit spannenden Themen und präsentiert von 120 Speakern nach Nürnberg ein. Erstmalig wurden dazu die drei Konferenzen MDC, WDC und DDC zusammengelegt und boten somit Entwicklern wie auch Testern, Managern und Designern die Chance, auch Abseits ihrer Komfortzone einfach mal schnuppern zu gehen.

Und das hat gewirkt. Die Resonanz aus dem Publikum hat gezeigt, dass es die Besucher auch zu themenfremde Gebiete gezogen hat. Die Neugier auf Technologien, die ansonsten weniger den eigenen Werkzeugkoffer füllen, hat die Entscheidung im nachhinein gerechtfertigt: Aus dieser Sicht ist das Experiment geglückt! Es zeigt aber auch, dass antrainiertes Scheuklappen-Denken langsam aufweicht und die Grenzen verschwimmen. Da beschäftigt sich der Java-Entwickler auf einmal mit Windows Clients und der Web-Entwickler entwirft Oberflächen für Smartphones.

Windows Entwickler freuen sich über Cross Plattform Development und alle lechzen nach sozialer Kompetenz. Wo früher die abgestandene Cola und die kalte Pizza Schreibtische von übernächtigten Entwickler zierten, wird heute nach der idealen Life-Work-Balance geforscht und irgendwo konnte man lesen: Weibliche Softwareentwicklerinnen trinken Bionade und ernähren sich vegan. Software Development ist hipp und so sind es auch die Tools, die Hardware und letztlich auch die Konferenzen.

Da weichen Bullet-Point Listen humoristischen Slideshows auf Megaleinwänden und es werden Touchdisplays smarter Devices mit modernen Projektoren an die Wand geworfen. Die Speaker werden zuvor mit Funkmikrofonen verkabelt und haben eine Stunde lang die Chance, sich wie Stars auf einer großen Bühne zu fühlen. Der eine oder andere hat die Gelegenheit auch genutzt und konnte dabei ein reichhaltiges Repertoire an zum Teil hochspezialisiertem Know-How präsentieren. Um Gauß gerecht zu werden sei aber auch erwähnt, dass das nicht allen gelungen ist.

Bei 120 Speakern ist es kaum möglich, ausschließlich bekannte Gesichter mit salonfähigen Themen auf das Publikum loszulassen. Während sich so auch Neueinsteiger freuen konnten, die Gelegenheit zu bekommen sich auf einer solchen Plattform zu profilieren, hatte dann halt derjenige Pech, der durch seine Session-Auswahl zumeist an die unerfahreneren Speaker geraten ist. So richtig polarisiert hat eigentlich keiner; lediglich der Vergleich zwischen Nicht-Clean-Code-Developern und Meth-Abhängigen in der Abschluss-Keynote von Ralf Westphal stieß auf Befremden. Aber auch das konnte den Inhalt der bilderreichen Präsentation gegen systemrelevante Größen nicht überschatten.

Unterm Strich lässt sich auf jeden Fall sagen: Die #dwx13 war ein geglücktes Experiment, das mit hochwertiger, technischer Unterstützung - und mit dem NCC Messezentrum auch in einer exklusiven Location - eine Konferenz der Superlative aus dem Boden gestampft hat! Die Vielfältigkeit der Sessions ließ kaum zu wünschen übrig und der Kontakt zu sowohl den Speakern als auch den Ausstellern führte zu interessanten Diskussionen und dem Austausch von Ideen und vielleicht sogar neuen Geschäftskontakten. Optimiert werden kann hier nur im Detail: Exklusive Abendveranstaltungen für ausschließlich “geladene Gäste” wirken selbst für hippe Entwickler etwas elitär und die ständige Suche nach den Sessions könnte entfallen, gäbe es eine eindeutigere Zuordnungen zu den Räumen – nicht jeder weiß wo Shanghai liegt… in dieser Hinsicht hat das NCC Messezentrum nicht nur das Treppenhaus mit Hogwarts gemein.

Die TOP TECHNOLOGIES hat sich riesig gefreut, an dem Event teilnehmen und dabei auch eigene Themen rund um Softwarearchitektur und –entwicklung präsentieren zu können. Auch im Mainstream konnten sich Themen wie z.B. die Near Field Communication (mit Windows 8 und Windows Phone 8), Testing mit dem eher wenig bekannten Microsoft Fakes Isolation Framework oder auch die an Einsteiger gerichtete Architektur-Session zum Thema Open/Closed Principle behaupten, fanden großen Anklang beim Publikum und führten zugleich zu neuen Anregungen. So soll es ja auch sein.

In diesem Sinne auch von uns ein ganz herzliches Dankeschön an die Besucher der #dwx13 im Allgemeinen und unserer Sessions im Speziellen! Natürlich gilt unser Dank auch der gelungenen Organisation der Konferenz und der wunderbaren Referenten-Betreuung!

Bis zur nächsten Developer Week in 2014.

Ein TOP Job für Dich. Worauf wartest Du?

Die TOP TECHNOLOGIES wächst.

Und zu einem intelligenten Wachstum gehört es, dass wir pfiffige neue Kollegen finden. Die Wahrscheinlichkeit ist dabei zwar hoch, dass sich auf diesem Blog hauptsächlich Bitschubser aufhalten, das soll den IT-Flüsterer, den Lizenz-Jongleur und den Gantt-Planer aber nicht davon abhalten, sich auch bei uns zu bewerben. Wir suchen derzeit für alle unsere vier Geschäftsbereiche Nachwuchs!

Mehr Informationen gibt es auf unserer Website im Bereich Karriere oder z.B. über unsere TOP Jobs Windows Phone App:  

 

Ankündigung: Die DWX 2013.

 

Wer in den letzten Jahren häufiger Entwickler-Konferenzen besucht hat, wird sich dieses Jahr über den Schritt der Neuen Mediengesellschaft Ulm freuen, die die drei spannendsten Konferenzen DDC, MDC und WDC zusammengelegt hat und damit eine Konferenz der Superlative anbietet. Etwa 200 Speaker werden in 40 Thementracks mit mehr als 250 Sessions verteilt auf drei Tage jedes Bit umkehren, jede Plattform auf Links ziehen, jede moderne Architektur durchleuchten und jeden Teilnehmer rundum mit den spannendsten Themen versorgen, die unsere Branche zu bieten hat.

Die TOP TECHNOLOGIES CONSULTING freut sich darauf auf der Developer Week 2013 mit eigenen Beiträgen dabei sein zu können:

Konferenztag 2

Session: Nach Hinten für alles offen: Open/Closed für Einsteiger
Track: Architektur, DDC, 11:45 - 12:45 Uhr
Speaker: Christian Jacob

Diese Session zeigt anhand eines für jeden nachvollziehbaren Beispiels das Open Closed Principle auf Basis des sog. Strategy Pattern und baut dabei pädagogisch sinnvoll auf folgende Lerneinheiten auf:

  • Die übliche Herausforderung
  • Die übliche Lösung (inkl. Schmerztabletten, denn DAS TUT WEH)
  • Die Erkenntnis und das Refactoring (Step by Step... uh Baby.... <- Sorry, ich konnte nicht widerstehen)
  • Die Lösung II (Erleuchtung garantiert!)

Session: Teilen kann so einfach sein!
Track: Cross-Plattform, MDC, 17:45 - 18:45 Uhr
Speaker: Marcus Jacob

Diese Session zeigt anhand einer Windows 8 und Windows Phone 8 Beispielanwendung, welche Voraussetzungen für Tap & Share via NFC und Bluetooth Datenübertragung notwendig sind und wie dieses Szenario implementiert werden kann. Dank der Portable Class Library natürlich auch mit größtmöglichem Code-Sharing, um schnell und einfach Apps für beide Welten zu entwickeln.

Konferenztag 3

Session: Vortäuschen geht (fast) immer schneller
Track: Tools, DDC, 15:00 - 16:00 Uhr
Speaker: Christian Jacob

'Attrapenbau leicht gemacht mit Stubs und Shims' wird das Thema dieser Session. Dass das Testen mit Mocks nicht nur Arbeit erleichtert, sondern auch die Performance steigert wird nachweislich zeigen: Vortäuschen geht (fast) immer schneller! 

 

Microsoft hört zu. The Power of Fakes finally unleashed!

Wer diesen Blog regelmäßig verfolgt, wird bemerkt haben, dass wir ein reges Interesse am Microsoft Fakes Isolation Framework zeigen. Hier eine kurze Auflistung der Artikel, die es sich lohnt in diesem Zusammenhang mal zu überfliegen. Danach kommt die News des Jahres!

Und hier die News des Jahres

Nachdem sich fast 1.500 Benutzer auf uservoice.com dafür ausgesprochen haben, dass das Microsoft Fakes Isolation Framework nicht nur in der Ultimate Edition verfügbar sein sollte, hat Microsoft entschieden, Fakes mit dem Update 2 für Visual Studio 2012 auch für die Premium Version verfügbar zu machen! Das ist insbesondere deshalb eine vernünftige Entscheidung, da sich Fakes anderenfalls bereits mittelfristig zu einem Rohrkrepierer entwickelt hätte. Der Grund: Der Vorgänger Moles funktioniert unter Visual Studio 2012 nicht mehr und eine Migration zu Fakes brachte niemandem etwas, der nicht mit der Ultimate Edition arbeitet. Die Unit Tests, die Fakes einsetzen, funktionierten nicht einmal mehr in der Ausführung unter anderen Editionen als Ultimate. Und das können sich viele Teams schlichtweg nicht leisten.

Brian Harry schreibt in seinem aktuellen Blogartikel im Zusammenhang mit dem Update 2 mehr darüber.

Artikel dotnetpro 02/2013: Manchmal hilft nur noch Schwindeln. Das Microsoft Fakes Isolation Framework

“Schreibst Du noch Boiler Plate Code, oder testest Du schon?” Wer sich hier angesprochen fühlt und sich schon lange fragt, wie Unit Tests einfacher umzusetzen sind sobald es um Dateizugriffe, Datenbanken, Sharepoint & Co geht, der wird sich über den Artikel zum Microsoft Fakes Isolation Framework in der aktuellen Ausgabe der dotnetpro freuen.

Übersichtlich und auf den Punkt gebracht gibt es hier einen Einstig in Stubs und Shims. Mehr darüber hier: http://www.dotnetpro.de/articles/onlinearticle4355.aspx.

Viel Spaß beim Lesen!

Tipp

Passend dazu gibt es auch noch auf Vimeo eine Aufzeichnung der Session “Visual Studio Evolution – Unit Testing und das Microsoft Fakes Framework” hier: http://vimeo.com/51921293.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS