WRITELINE

Geek. Coder. Gamer. Bayern Munich Fan.

Visit my blog stream http://writeline.io

  • Dariusz quatscht

    Webcast: Windows Azure Services Beispielanwendung

    • 4 Comments

    Endlich geschafft. Die Serie zu Windows Azure Services hat sich länger hingezogen als gedacht, verschiedene Faktoren waren hierfür Ausschlaggebend. Zum einen wollte ich die Serie flexibel halten, werde ich bei Webcasts allerdings nicht mehr machen. Die Zeit von der Produktion bis zur Publikation und somit zum Feedback ist einfach zu groß. Da überschneiden sich einfach die Produktionsphasen. Vielmehr versuche ich das flexible Screencasten momentan mit dem Projekt Blog Poll. Zum anderen wollte ich noch einen Webcast zum .NET Service Bus – Routers und Queues reinnehmen, da diese Änderung während der Serie kam, doch ist momentan schon der .NET Service Bus bei vielen ein Buch mit Sieben Siegeln, insofern habe ich mir den Teil erspart. Auch die SQL Data Services sind geändert worden, eine neue technische Implementierung ist allerdings der Öffentlichkeit noch nicht zugänglich. Also konnte ich hierzu auch keinen Teil machen.

    Eine Beispielanwendung ist nun also der letzte Teil. Ursprünglich wollte ich hier eine von Microsoft Corporation nehmen, von meinen Kollegen drüben, doch die Azure Issue Tracker Anwendung ist mir dann doch zu umfangreich gewesen, ganz zu schweigen von der Installation. Also habe ich eines meiner CeBIT Projekte genommen: Blabber.

    Was ist Blabber? Eine einfache Dispatching Anwendung die Nachrichten an verschiedene Empfänger verteilt. Hierzu benutze ich die Windows Azure Table und Queue Storage Möglichkeiten und für einen Empfänger auch einmal den .NET Service Bus.

    Nicht kompliziert, auch nicht etwas was man unbedingt braucht, aber doch mal eine Demo die über “Hello, world.” hinausgeht – eh – ne, eigentlich nicht, ist auch nur ein “Hello, world.” anders verpackt.

    Link zum Webcast: Windows Azure Services Beispielanwendung

  • Dariusz quatscht

    Am Anfang war ein Band…

    …oder wie alles Anfing. In diesem Video erzählt Bill Gates die Entstehung von ALTAIR BASIC. Ein interessanter Beitrag von Lisa Feigenbaum aus der Reihe The History of Microsoft.

    Get Microsoft Silverlight

  • Dariusz quatscht

    Entity Framework 4.0 Feature CTP1

    Wer sich die Visual Studio 2010 Beta 1 installiert hat wird sich vielleicht gewundert haben wo denn die versprochenen Features vom Entity Framework 4.0 sind z.B., der POCO Support oder das Entity Tracking bei N-Tier Anwendungen. Das Entity Framework Team hat es nicht ganz in die Erstellung der Beta 1 geschafft, doch nun haben Sie über einen seperaten CTP die fehlenden Features nachgeliert.

    Das Entity Framework 4.0 Feature CTP1 für Visual Studio 2010 Beta 1 lässt sich von hier herunterladen und installieren. Passend zum Release gibt es vom Entity Framework Team auch entsprechende Walkthrough Code Beispiele in den folgenden Blog Posts veröffentlicht:

    Self Tracking Entities for Entity Framework

    POCO Templates for Entity Framework

    Code Only for Entity Framework

    Aus MSDN Deutschland werden wir im Laufe der nächsten Wochen auch ein paar neue Webcasts zu dem Thema Datenzugriff mit dem Entity Framework 4.0 veröffentlichen.

  • Dariusz quatscht

    Tech-Ed 2009 vom 09.11 – 13.11 in Berlin

    banner-home1

    Nach langer Pause dürfen wir die Tech-Ed endlich wieder in Deutschland begrüßen. Dieses Mal ist Berlin Gastgeber. Es werden zahlreiche neue Technologien vorgestellt und nach Jahrelanger Trennung von IT-Pros und Developern wieder ein einwöchiger Event für beide veranstaltet. Themen werden unter anderem Windows 7, Windows Server 2008 R2, Windows Azure und Visual Studio 2010 sein.

    Frühbucherrabatte gibt es auf der entsprechenden Webseite

    http://www.microsoft.com/europe/teched/

  • Dariusz quatscht

    Task Parallel Library Screencasts

    Ich habe gestern ein paar Screencasts zur Task Parallel Library aufgenommen und heute frisch auf Channel 9 publiziert. Ich werde bei Gelegenheit noch mehr machen, immer Scheibchenweise. Die Screencasts selbst sind recht kurz gehalten zwischen 4-6 Minuten und sollen nur einzelne Elemente der API kurz vorstellen.

    Folgende Screencasts habe ich publiziert:

    Task Parallel Library: Tasks

    Task Parallel Library: Task Continuations

    Task Parallel Library: Exception Handling

    Viel Spaß beim reinschauen.

  • Dariusz quatscht

    C# Lambdas und die Lesbarkeit von Source Code

    • 6 Comments

    Auf dem heutigen TechTalk in Köln zum Thema Parallel Computing ist eine rege Diskussion zum Thema Lambdas in C# entstanden. Beim Vorstellen der .NET Klasse Parallel aus dem System.Threading Namespace in .NET 4.0 habe ich neben den einfachen Parallel.Invoke Beispiel auch eine Monte Carlo PI Simulation gezeigt. Dabei wurde die Funktion Parallel.For<T> benutzt.

    Mit dieser Funktion lassen sich Schleifen parallelisieren und entsprechend die Ergebnisse der einzelnen Tasks zusammenfassen. Zum Beispiel kann man diese For Schleife

       1: int total = 0;
       2: for (int i = 0; i < 10; i++)
       3: {
       4:     total += 1;
       5: }

    folgendermaßen mittels der Klasse Parallel auf mehrere Prozessorkerne verteilen:

       1: Parallel.For<int>(0, 10, () => 0, (i, pls, subtotal) =>
       2:     {
       3:         subtotal += 1;
       4:         return subtotal;
       5:     },
       6:     (x) => { Interlocked.Add(ref total, x); });

    (Hinweis: Das ist nur ein Beispiel und ist den Aufwand nicht wert parallel verarbeitet zu werden!)

    Nun ist der parallelisierte Code nicht so leicht lesbar. Was für hitzige Diskussionen sorgte. Ich habe auch ein wenig provoziert und auch darauf hingewiesen das der Code nicht unbedingt gleich zu verstehen ist. Was passiert da eigentlich?

    Die Parallel.For<T> Methode so wie ich sie oben benutze bekommt 3 Lambda Ausdrücke mit. Einmal die Initialisierung des einzelnen Threads mittels der Funktion () => 0. Diese Lambda Schreibweise ist die Abkürzung für Action ohne Parameter. Der zweite Lambda Ausdruck hat gleich 3 Parameter, einmal die Laufvariable i, dann eine Variable mit dem Namen pls und schliesslich die letzte Variable subtotal. Interessant ist, das man nicht anhand des Codes erkennen kann was diese einzelnen Variablen darstellen. Vielmehr muss man mittels Intellisense oder Dokumentation nachschauen um welche Typen es sich hier genau handelt. i ist ein int, pls ist ParallelLoopState und subtotal wieder ein int und ein Rückgabewert! Letztlich mapped diese Lambda auf die Deklaration Func<int,ParallelLoopState,out int>. Ist schon gewöhnungsbedürftig. Die dritte Lambda ist schliesslich für die Reduktion zuständig, das Zusammenführen der einzelnen Ausführungspfade zur Gesamtvariable total. Die Variable x an dieser Stelle ist der Rückgabewert der zweiten Lamdba subtotal. Eigentlich recht einfach wenn man weiss wie Paralle.For<T> implementiert ist.

    Genau hier liegt das Problem. So mächtig Lambda Ausdrücke auch sein mögen, Sie bergen auch viele Risiken. Wenn Klassen Funktionen implementieren die vor lauter Action und Func Parameter nur so strotzen, so darf man sicher sein dass Lambdas an dieser Stelle eingesetzt werden. Das wiederrum macht den Code nicht gleich intuitiv lesbar. Beschäftigt man sich gerade mit der API so ist es ein leichtes zu verstehen was die Implementierung bedeutet. Aber wie sieht es aus wenn man sich eine Weile nicht mit dieser API beschäftigt und dann nach 2-3 Monaten mal wieder drauf schaut? Ich wette man muss dann kurz inne halten und sich vielleicht sogar die Dokumentation nochmals lesen.

    Insofern ist der Einwand der zwei Teilnehmer heute irgendwie schon berechtigt, auf der anderen Seite ist eine anderen Lösung womöglich gar nicht so trivial. Natürlich könnte man das ganze auch in einem Fluent Interface Ansatz als API zur Verfügung stellen, vielleicht so,

       1: FluentParallel.For
       2:     .From(0)
       3:     .To(10)
       4:     .ExecuteLoopBody(
       5:         (subtotal) =>
       6:         {
       7:             subtotal += 1; return subtotal;
       8:         })
       9:     .Reduce(
      10:         (subtotal) =>
      11:         {
      12:             Interlocked.Add(ref total, subtotal);
      13:         })
      14:     .Wait();

    doch wirklich etwas gewonnen hat man hier nicht unbedingt. Die API könnte ein paar allgemeine Annahmen einfach implementieren, trotzdem wird beim Einsatz der Lambdas die Problematik mit den Übergabeparametern nicht gelöst. Man erkennt den Typen nach wie vor nicht und bei komplexeren Loop Bodies wäre damit auch dieser Ansatz nicht unbedingt lesbarer.

    Lambdas bergen Risiken was die Lesbarkeit des Codes angeht und damit Hand in Hand auch dessen Wartbarkeit. Wie seht Ihr den Einsatz von Lambdas?

  • Dariusz quatscht

    Bing that head that doesn’t bing

    Tausende von Blog Posts darüber, verschiedene Vermutungen über Namen und Bedeutungen, Erfahrungsberichte, usw…

    Für mich mittlerweile annehmbare Ergebnisse.

    Insofern:

    Bing that head that doesn’t bing

  • Dariusz quatscht

    Xtopia [kompakt] 09 – Videos und Vorträge als Download verfügbar

    • 3 Comments

    Dieser Post ist Steffen Ritter gewidmet!

    Die erste Xtopia [kompakt]-Roadshow rund um die Themen Web/UX und Rich Internet Applications war ein voller Erfolg. Von April bis Mai 2009 war Microsoft mit hochkarätigen Partnern auf der Xtopia im Kleinformat unterwegs: In München, Karlsruhe, Hamburg, Köln, Berlin und Frankfurt erlebten jeweils bis zu 100 Teilnehmer Vorträge und Demos zu den Themen Web, User Experience und Silverlight/Rich Internet Applications.

    shot1

    Wenn Sie in diesem Jahr keine Zeit hatten, bei Xtopia [kompakt] dabei zu sein, finden Sie auf der Website der Xtopia [kompakt] ab sofort (fast) alle Vorträge als PDF, viele Videos und umfangreiche Informationen rund um die Inhalte der vergangenen Roadshow. Im Mittelpunkt stehen Microsoft Surface, Windows 7, Silverlight 3 und Internet Explorer 8. Partner wie PC-Ware und das deutsche RIA-Forum begleiteten uns auf der Roadshow. Agenturen aus der Design- und Webbranche ergänzten die Vorträge mit Erfahrungsberichten zu Design, User Experience, Rich Internet Applications und Webentwickung. Beispielsweise zeigte CRM-Spezialist CAS in einem Vortrag die Vorteile von Silverlight gegenüber AJAX und Flash bei der Entwicklung professioneller Unternehmensanwendungen auf. Weitere Erfahrungsberichte kamen von Quark, Ergosign, maximago, Pixelpark AG, T-Systems MMS, UID, Perun.net und Sensory Minds.

    Hier entlang zu den gesammelten Präsentationen der XTOPIA [kompakt] 09  und den Session-Videos: http://blogs.msdn.com/riablog/archive/2009/06/09/xtopia-kompakt-09-videos-und-vortr-ge-jetzt-als-download-verf-gbar.aspx bzw.  http://snipurl.com/jtiex

  • Dariusz quatscht

    Projekt Blog Poll – Entity Framework Revisited und die Folgen bisher

    • 5 Comments

    Das Projekt Blog Poll ist nun wieder beim Entity Framework angekommen. Dieses mal werden die Entitäten auf die eigenen Objekte gemapped. Jetzt werden sich vermutlich einige Leute fragen, warum mappe ich auf eigene Objekte? Dann lässt sich doch das ADO.NET Data Services Framework nicht so einfach nutzen. Bei einem eigenen Objekt Modell muss man zusätzliche Schnittstellen implementieren! Stimmt. Aber ich werde im folgenden Projekt die ADO.NET Data Services auch nicht final benutzen. Ich habe in meinem Test Prototypen ein Problem festgestellt das ich noch nicht so hundertprozentig eingrenzen konnte. Das Problem ist beim Hosten von Silverlight Anwendungen über Cross-Domain Grenzen mit dem Zugriff auf die ADO.NET Data Services. Der Datenzugriff funktioniert in dem Szenario nicht so wie er soll. Insofern werde ich das Repository durch eine WCF Service Schicht kapseln, diese hat kein Probleme mit der Cross-Domain Verteilung der Anwendung.

    Für alle die, die noch nicht so richtig ins Projekt reingeschaut haben, gibt es hier nochmal die komplette Serie verlinkt.

    Projekt Blog Poll – Anforderungen (Teil 1)

    Projekt Blog Poll – Technisches Design (Teil 2)

    Projekt Blog Poll – Datenbankschema (Teil 3)

    Projekt Blog Poll – Entity Framework Repository (Teil 4)

    Projekt Blog Poll – Domain Model (Teil 5)

    Projekt Blog Poll – Specification (Teil 6)

    Projekt Blog Poll – Mock Repository (Teil 7)

    So, viel Spaß beim 8. Teil.

    Get Microsoft Silverlight

    Update: Jetzt müsste das Video auch in besserer Qualität zu sehen sein.

  • Dariusz quatscht

    Projekt Blog Poll – Mock Repository

    • 5 Comments

    Damit die Tests zusammen mit dem Domänen Modell wieder kompilieren, schreibe ich in dieser Folge ein Mock Repository.

    Get Microsoft Silverlight
Page 1 of 2 (12 items) 12