Welcome to MSDN Blogs Sign in | Join | Help

Lizenzierung der Microsoft Concurrency Runtime

Seit längerem verfolge ich die Verwendung der Microsoft Concurrency Runtime. Für mich war die CCR immer ein Bestandteil von Microsoft Robotics Studio. Gestern habe ich dann einfach mal meinen Kollegen Frank Prengel angesprochen, wie man denn die CCR Lizenztechnisch in seine eigenen Projekte einbinden kann. Muss man hierzu Microsoft Robotics Studio besitzen?

Nein, es gibt ein dediziertes Lizenzierungsmodell. Auf der Seite “Get Microsoft CCR & DSS Toolkit” stehen die Lizenzbedingungen und es gibt auch die Möglichkeiten die Lizenz online zu kaufen.

Weitere Information auf der Seite Introducing “Microsoft CCR and DSS Toolkit 2008 R2”

Posted by dparys | 0 Comments
Filed under:

Webcast: Windows Azure Services Beispielanwendung

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

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

Posted by dparys | 0 Comments
Filed under: , ,

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.

Posted by dparys | 0 Comments

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/

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.

Posted by dparys | 0 Comments

C# Lambdas und die Lesbarkeit von Source Code

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?

Posted by dparys | 6 Comments
Filed under: ,

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

Posted by dparys | 0 Comments
Filed under:

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

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

Posted by dparys | 3 Comments

Projekt Blog Poll – Entity Framework Revisited und die Folgen bisher

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.

Projekt Blog Poll – Mock Repository

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

Get Microsoft Silverlight

Mein Blog und das Projekt Blog Poll und Widescreen

Es ist immer gut einen Plan zu haben, doch wie das Leben so spielt, ist deren Ausführung an verschiedene Rahmenbedingungen geknüpft. Manchmal erschweren diese einem Pläne umzusetzen. Insofern ist es auch in den letzten Wochen eine wenig ruhiger auf meinem Blog gewesen. Speziell zum Projekt Blog Poll wollte ich eigentlich noch erklärendere Posts schreiben was mir bisher leider nicht möglich war. Trotzdem möchte ich den nächsten Teil einfach mal publizieren.

Get Microsoft Silverlight

Ist eigentlich schon jemandem aufgefallen das die Screencasts in 16:10 aufgenommen sind? Ich habe nämlich diesbezüglich noch gar kein Feedback bekommen ob das vom Format her in Ordnung ist. Ich selbst habe den Eindruck das viele Leute über Widescreen Monitore verfügen, insofern dachte ich mir es wäre vielleicht sinnvoll alles auf Widescreen aufzunehmen.

Posted by dparys | 4 Comments

Azure und SQL Services

Wer wissen will was sich alles in Richtung Datenzugriff im Bereich SQL Services tut kann auf dieser Seite fündig werden. Dort sind eine Reihe von Prototypen und Entwicklungen im Gange und die ein oder andere dürfte es auch in naher Zukunft in ein Produktivsystem schaffen. Hier eine Auflistung der momentanen Incubation Projects:

Data Mining in the Cloud

The SQL Server Data Mining team is working to extend the power and ease of use of SQL Server Data Mining to the Cloud. Our goal is provide services that allow you to build rich, predictive applications without worrying about server infrastructure, and showcase these services with cool applications that give you a glimpse of what’s possible

U Rank 

This Microsoft Research project is exploring how personalization, social context, and communication may be used to improve the search experience and leveraging SQL Data Services to power the service. Use the search engine to re-rank search results, move results from one search to another, add notes, and otherwise edit searches. Not only will you see your changes again the next time you come back, but your friends will see the changes too!

Project Codename "Anchorage"

We’re evolving the popular SyncToy application to enable much more than just file/folder synchronization between PCs, devices, and services! With this project, providers will be able to register and be discovered in a variety of sync groups including contacts, files, favorites, videos, as well as photos across endpoints such as the Live Mesh, PhotoBucket.com, Smugmug.com, and more

Project Codename “Huron”

Leverage the power of SQL Data Services to enable enterprise edge scenarios using the technologies in this incubation! Share data with relational stores like Access, SQL Express, SQL CE, SQL Server, enable B2B data sharing, and push workgroup databases to field workers and mobile users

Reporting against SQL Data Services

Leverage SQL Server Reporting Services (SSRS) 2008 to build and deploy rich reports against data hosted in SQL Data Services (SDS). SSRS data source extensibility framework is used to provide an incubation custom data extension for SDS. Developers can download the custom extension and configure it against their on-premise SSRS 2008 installation. This will allow them to connect to SDS authorities and containers via HTTP SOAP to extract data sets, build rich reports using standard tools like Report Designer / Report Builder and deploy the reports to Report Manager

Codename “Astoria” Offline

Version 1 of ADO.NET Data Services Framework (a.k.a. Project "Astoria") introduced a way of creating and consuming flexible, data-centric REST services. Now we are working on creating an end-to-end story for taking data services offline using synchronization. Integrating data services with the Microsoft Sync Framework will enable developers to create offline-capable applications that have a local replica of their data, synchronize that replica with an online data service when a network connection becomes available, and use replicas with the ADO.NET Entity Framework for regular data access.

Accessing SDS using ADO.NET Data Services

This incubation project focuses on aligning SDS and ADO.NET Data Services. With this alignment SDS will support AtomPub and JSON formats. It will also provide support for established set of conventions for constructing URLs to point to resources. We are also extending ADO.NET Data Services to provide access to the flexible data stored in SDS.

Projekt Blog Poll – Domain Model

Nach den Erkenntnissen in Teil 4, werden die weiteren Repository Implementierungen vorbereitet. Was hierzu fehlt ist ein Domänen Modell das in diesem 5. Teil seinen Anfang findet.

Get Microsoft Silverlight

Viel Spaß beim reinschauen.

Parallele Programmierung – TechTalk im Juni

Nochmal in eigener Sache. Der TechTalk findet ja in diversen Städten statt, während Karlsruhe, München und Köln bereits Wartelisten haben, gibt es noch reichlich Platz in Berlin und Dresden.

Dresden speziell war ein Wunsch von mir, insofern nochmal Werbung: Auf nach Dresden!

Für alle die auf der Warteliste sind, einfach vorbeikommen, ich stelle auch meinen Stuhl zur Verfügung, ansonsten ist Erfahrungsgemäß die Anzahl der Teilnehmer geringer als angemeldet.

More Posts Next page »
 
Page view tracker