Auch der zweite Tag ist voller neuer und interessanter Eindrücke. Dieser Blogbeitrag wird nicht alle besuchten Präsentationen zusammenfassen, sondern sich auf ein paar Schlüsselbeiträge fokussieren. Der letzte Absatz listet noch alle besuchten Veranstaltungen auf.
Learning the Entity Framework
Diese Präsentation von Elisa Flasko beschreibt das Entity Framework, welches grundsätzlich eine Weiterentwicklung von ADO.Net ist. Es erhöht die Abstraktionsebene vom relationalen Datenmodell auf ein konzeptionelles Datenmodell.
Man spricht von einem Entity Data Model; es gibt zwei Arten die Beziehung zwischen diesen beiden Modell herzustellen. Die erste, bekannte Möglichkeit besteht im Reverse Mapping, bei welchem man vom relationalen Modell auf das Entitätenmodell schliesst. Die zweite Möglichkeit geht den umgekehrten Weg: Das forward Mapping generiert vorwärts vom konzeptionellen Modell automatisch das Relationenmodell. Je nach Anwendungsgebiet kann die sinnvollste Wahl getroffen werden.
Vererbungen von Klassen wird im Entity Framework unterstützt, was auf drei Arten auf der Datenbank realisiert werden kann:
- Discrimonator Field
- Separate Tabelle mit Zusatzinformationen
- Kopie der Tabelle mit u.U. redundanten Daten
Momentan kann man sich auf den SQL Server verbinden, weitere Datenbanksysteme werden aber in Kürze verwendbar sein.
Schade ist, dass in der Version 1 die Entity Objekte nicht serialisierbar sind, zum Beispiel in Verwendung mit der WCF; dies betrifft allerdings nur die generierten Klassen. Selbergestrickte POCOs mit einem manuellen Mapping können nach Belieben (d.h. serialisierbar) entwickelt werden.


Business Process Management with Sharepoint, Visio, Office and BizTalk Server
Diese interessante und produktumspannende Präsentation von Thomas Reimer (Microsoft Business Development Manager) beschreibt den Einsatz von verschiedenen Produkten für das Design und die Ausführung von Geschäftsprozessen.
Die Vision umfasst dabei die Modellierung beginnend bei Key Performance Indicators (KPI) und dem beschreiben des Ablaufs in Visio (wobei auch andere Produkte verwendet werden können).
In der Demo wurde der Geschäftsprozess aus Visio in XLANG exportiert, so dass es danach dem Entwickler als BizTalk Prozess im Visual Studio verwendet werden kann. BizTalk wird dann auch als Execution Layer verwendet und kann zum Beispiel nach Belieben externe Web Services aufrufen, um eine möglichst hohe Automatisierung zu erreichen. Im Visual Studio können dann weitere Artefakte des Prozesses definiert werden (mittels XML Schema) um beispielsweise eine Bestellung abzubilden.
Das Werkzeug Dashboard Designer, welches sich mit Sharepoint integriert, dient zur Bestimmung der KPI (z.B. Zyklusdauer).
Um die vom Entwickler definierten Artefakte bearbeiten zu können, wurde in der Demo InfoPath verwendet, welches Formulare anhand der XSDs generiert und diese dann dem aktuellen Prozessbenutzer anzuzeigen vermag (abhängig vom aktuellen Prozessstatus und der aktuellen Rolle).
Zuletzt hat Thomas Reimer einen Ausblick auf Oslo gegeben, welches eine neue Sprache "M" für Modelle und Artefakte beschreibt, und mittels Quadrant als Entwicklungsumgebung verwendet werden soll. Als mögliche Runtime sieht die aktuelle Roadmap das Produkt "Dublin" vor, wobei auch andere Engines zum Einsatz kommen können.

Programming Filestreams in SQL Server 2008
Dieser Vortrag von Bob Beauchemin beschreibt den Umgang mit BLOBs in Applikationen; dies stellte den Entwickler immer vor der Entscheidung wo genau grosse Objekte physisch gespeichert werden sollen. Sollen BLOBs im Filesystem oder in Datenbanken abgelegt werden? Beide Varianten haben sowohl Vor- wie auch Nachteile: Werden BLOBs im Dateisystem abgelegt, ist die Applikation für das Handling der Dateien verantwortlich. Zusätzlich wird es schwierig, Dateien zu den Daten jedezeit zuordnen zu können.
Werden BLOBs hingegen auf der Datenbank abgelegt, kann das zu gravierenden Performanceproblemen führen. Zusätzlich wird bei UPDATEs die Datenbank fragmentiert.
Gemäss Tests von Microsoft sind folgende Resultate gemessen worden: BLOBs die kleiner als 256KB sind, können problemlos in der Datenbank abgelegt werden. Grössere BLOBs werden idealerweise auf dem Dateisystem abgelegt.
Um diese Problem zu beheben wurde im SQL Server 2008 der neue Datentyp FileStream eingeführt. Dieser funktioniert aber nur im Zusammenhang mit VARBINARY(MAX). Dieser Datentyp bietet die Möglichkeit, dass BLOBs im Filesystem gespeichert werden können, die dazugehörenden Meta Informationen jeodch weiterhin in der Relation gespeichert sind. Das ganze ist für den Entwickler transparent! Ein weiterer Vorteil ist, dass die Grenze von 2GB pro BLOB nicht mehr existiert.
Für die Entwicklung in .NET gibt es einen neuen Typ: SQL File Stream. Über diesen Typ ist es möglich, wie .NET auf FileStreams zuzugreifen. Dies ist jedoch nur nötig, falls spezielles Handling gewünscht wird, die bis anhin verwendeten Ansätze sind weiterhin möglich. Arbeitet man jedoch mit SQL File Stream Objekten, ist es wichtig, dass transaktional gearbeitet wird.
LINQ to SQL und Entity Framework unterstützen den neuen Datentyp auf FileStream auf Basis von VARBINARY(MAX), spezielle Funktionalitäten für FileStreams sind allerdings nicht mehr vorhanden.

Übersicht aller besuchten Veranstaltungen
Nachfolgend eine Liste sämtlicher besuchten Veranstaltungen an diesem ereignisreichen zweiten Tag an der TechEd 2008:
- Lap around Live Services von Angus Logan
- Learning the Entity Framework von Elisa Flasko
- Business Process Management with Sharepoint, Visio, Office and BizTalk Server von Thomas Reimer
- Programming File Streams in SQL Server 2008 von Bob Beauchemin
- UI-Testing with the UI Automation Framework von Thomas Schissler
- Designing for Testability: Bridging the Gap between Design and Testing in Object Oriented Software von Roy Osherove
- The Microsoft Application Platform: A Perpective von David Chappell
- ASP.NET MVC Practices von Hadi Hariri
- Microsoft Silverlight 2 for Mobile: Developing for Mobile Applications von Giorgio Sardo
- Live Platform: New Developer Services and APIs von Angus Logan