.NET 3.5 Enhancements Training Kit

Microsoft hat ein neues Training Kit rausgebeben: Download hier

Zum Inhalt gehören:

- ASP.NET MVC
- ASP.NET Dynamic Data
- ASP.NET AJAX
- ASP.NET Silverlight Controls
- ADO.NET Data Services
- ADO.NET Entity Framework

Demos oder viele PPTs sucht man allerdings vergeblich – ein Blick lohnt sich trotzdem.

Zum MVC Part kann ich allerdings schon mal soviel sagen: Das Demoprojekt wurde nur mit der CTP1 gemacht – in aktuellen Version hat sich ein klein wenig was verändert.

VSone – Tag 2 – WCF, SQL Server Compact Edition, System.AddIn, ADO.NET Entity Framework, ADO.NET Data Services ("Astoria")

Wenn auch verspätet, hier die Details vom 2. Tag:

Am zweiten Tag der VSone ging es gleich wieder mit interessierten Vorträgen weiter.

Der erste Vortrag: Datenübertragung mit WCF

Hier ging es um die Windows Communication Foundation  – bekannt aus .NET 3.0. Zwar war das Thema jetzt nicht unbedingt neu, jedoch habe ich persönlich mit WCF noch sehr wenig (wahrscheinlich zu wenig) Kontakt gehabt. Jürgen Kotz ging intensiv auf die Serialisation der Daten ein – was der Unterschied zwischen den “DataContractSerializer“, “XmlSerializer” und dem “NetDataContractSerializer” ist und warum der letzte eher ungeliebt ist.
Interessant fand ich die Möglichkeiten der “Vorwärtskompatibilität” oder Roundtripping von Services mit einem einfachen Trick: Das IExtensible Interface deckt solch einen (sehr wahrscheinlichen Fall) ab. Auch Versionierung mit dem Order Attribut wurde gezeigt.

Tools die nett sind: SvcUtil und der WCFConfigEditor.

Zweiter Vortrag: SQL Server Compact Edition

Ein recht kurzer, aber sehr gut gemachter Vortrag von Senaj Lelic. Hier drehte sich alles um den SQL Server in seiner kleinsten Ausführung: Der “Compact Edition“. Wenn jemand mal eine (offline) Desktopanwendung geschrieben hat, kennt das Problem, dass irgendwo die Daten gespeichert werden müssen. Xml ist unsicher (jeder kann die Datei editieren) und irgendwie ist das alles nicht so ganz fein. Einen SQL Server ist allerdings zu fett – man will niemanden zumuten erstmal einen kompletten (selbst in der Express Version) Server zu installieren. Genau hierfür ist die Compact Edition gedacht.
Eingebaute Features:

- Kann mit dem Management Studio verwaltet werden
- “fühlt” sich wie ein großer SQL Server an (SQL, Transaktionen, Verschlüsselung)
- Lizenzfrei (und das bei einem MS Produkt!)
- Einfachstes Deployment: MSI, ClickOne oder man kann die ca. 7 DLLs aus denen die Compact Edition besteht auch einfach in sein Output Directory kopieren und die Anwendung läuft!
- Speichergröße: 2MB und Arbeitsspeicherverbrauch: 5MB!
- Datenbankgröße bis zu 4 GB
- Sync Framework ist integriert
- Seit .NET 3.5 soll es LINQ Support geben (das will ich allerdings erstmal selber ausprobieren ;) )

Ich denke ich werde mal eine nette WPF Applikation mit dem dem SQL Server Compact Edition zusammen bauen ;)

Dritter Vortrag: System.AddIn

Wer schon immer mal eine Plugin/Addin Möglichkeit in seiner Applikation einbauen wollte, der sollte System.AddIn mal näher anschauen. Christian Nagel hat dieses doch recht komplexe Thema gut erklärt – auch wenn ich zeitweise bei den ganzen Contracts, Interfaces und Views nicht durchgesehen habe, wurde es am Ende ein klares Bild. Der Pipeline Builder ist eine große Hilfe.
Ein schickes Beispiel am Ende war folgendes: Wir haben eine WPF Anwendung, welches als Host dient, und wollen nun über ein AddIn die Oberfläche mit irgendeinen WPF User Control erweitern. Das AddIn beinhaltete nur das User Control und man konnte es direkt in die Host Anwendung integrieren – ohne das direkte Referenzen darauf liefen – das AddIn lief sogar in einer anderen AppDomain. .NET Remoting macht es möglich.

Nächster Vortrag: ADO.NET Entity Framework

Anschließend an den LINQ to SQL Vortrag, ging es heute um den großen Bruder – auch wieder von Christoph Wille. Das ADO.NET Entity Framework unterscheidet sich zum Teil gravierend von LINQ to SQL – die Unterschiede waren mir erst nicht ganz klar. Ich will es mal versuchen zu Erklären: Bei LINQ to SQL baut man seine komplette Datenbank einfach in Business Objekte um – das wird meistens so gemacht und klappt auch wunderbar (jedenfalls mit MS SQL). Das ADO.NET EF geht eher Objektgetrieben ran – wer mit seinen Business Objekten mehr machen will (Vererbung, Verschachteln etc.) ist hier wesentlich flexibler.
Infos gibts auf den Blog von Mike Taulty oder auch im CoDe Magazine (dort müsste noch mehr sein – ich habs auf die schnelle leider nicht gefunden). Auch interessant sind die ADO.NET Samples auf Codeplex.

Wer das ADO.NET Entity Framework testen will, benötigt die ASP.NET 3.5 Extensions (da es momentan beta ist und in einem rutsch mit den Extensions kam) und natürlich den Designer.

Das ADO.NET Entity Framework ist herstellerunabhängig – jeder kann einen Provider dazu schreiben.

Insbesondere das Entity Data Modell wurde anschaulich erklärt – was CSDL, MSL und SSDL ist. Im Grund ein Mapping (MSL) zwischen Objekten (CSDL) und Strukturen (SSDL).

Insgesamt wird das ADO.NET Entity Framework später sicherlich für viele Enterprise Applikationen eine interessante Option sein – LINQ to SQL wird deswegen aber nicht begraben. Da beides LINQ benutzt wäre sogar eine Migration später möglich – auch wenn man einige Methoden ändern müsste, weil LINQ to SQL z.B. ein DataContext benutzt und ADO.NET EF einen ObjectContext.

Wer jetzt etwas verwirrt ist, der sollte sich diese Seite anschauen: LINQ to Relational Data

Letzter Vortrag: ADO.NET Data Services (”Astoria”)

Der letzte Vortrag auf der VSone – wieder mit Christoph Wille. Die ADO.NET Data  Services liegen ebenfalls mit bei den ASP.NET 3.5 Extensions dabei – nur hab ich sie noch nie benutzt.

Stellen wir uns vor: Wir haben unsere Datenbank schon komplett als LINQ to SQL (oder ADO.NET EF) Framework im Code verfügbar. Jetzt wollen wir diese Daten über REST (man spielt man eigentlich die ganze Zeit mit der URI rum) in AJAX, Silerlight oder anderen Clientanwendung verfügbar machen. Für ASP.NET AJAX Anwendungen müsste man in einem solchen Fall sehr viele Webservices schreiben. Mit “Astoria” geht das Out-of-the-box!

Man setzt einen ADO.NET Data Services auf und sagt welche Datenquelle genommen werden soll (unsere DataContext von LINQ to SQL z.B.) und legt dann noch fest, welche Tabellen frei zugänglich sein müssen. Wenn man dies ausführt wird ein WCF Service gestartet, der über die URI die jeweiligen Daten rausgibt:

http://meinTollerServer.de/Customers würde z.B. alle Customers anzeigen als XML (ATOM Format) oder JSON.
http://meinTollerServer.de/Customers(1) würde nur den Customer mit dem Primary Key “1″ wiedergeben

Filterung, Sortierung und viele andere Optionen stehen auch noch zur Verfügung.

Das ganze geht mit “Astoria” – Daten löschen, ändern und erstellen geht natürlich ähnlich.

Sehr interessanter Ansatz um schnell die Daten zu verteilen ohne große Webservices zu generieren – zur Mix gibts neues!
In Desktopanwendungen kann man übrigends diese “URI” Abfrage mithilfe von LINQ zusammenbauen.

Fazit von der VSone

Eine sehr tolle Veranstaltung, welche eigentlich alle Gebiete (von Administratoren, Projektleitern oder Entwicklern) abdeckt – der Entwickler Track war sehr informativ und hatte viele Neuerungen gezeigt. Es hat sich also gelohnt :)

Meine .NET / Coding Top Blogs 2007

Da 2007 demnächst zuende geht, möchte ich einfach mal meine Blog-Favoriten für 2007 näher erwähnen.

Die Top-Quelle für Microsofts Technologien rund um den IIS, das .NET Framework, Silverlight, ASP.NET und co. ist eindeutig der Blog von Scott Guthrie.
Scott Guthrie ist seines Zeichens General Manager in der Microsoft Developer Devision und schreibt in seinem Blog regelmäßig über die Neuerungen im und um das .NET Framework.

Der zweite Blog den ich uneingeschränkt empfehlen kann, ist der Blog von Scott Hanselman. Scott ist relativ neu im ASP.NET Team und kümmert sich momentan wohl intensivst um das ASP.NET MVC Modell. Besonders interessant finde ich diesen Blog, weil er kein “Microsoft-Marketing” Blog ist, sondern er selber auch über den Tellerrand blickt. Das ASP.NET MVC Modell beispielsweise ist angelehnt an Ruby on Rails – einige MS Entwickler sind auch Fans von Ruby.Jedenfalls ist dies ein sehr aktueller und regelmäßig gepflegter Blog.

Als dritten Blog möchte ich einen eher “plattformneutralen” Blog erwähnen: Coding Horror ist der Blog von Jeff Atwood und er schreibt dort über allerlei Probleme oder Gedanken die in der Software-Branche vorhanden sind. Manchmal ist es mehr technisch, manchmal mehr allgemein gehalten, allerdings ist es ein sehr interessanter Blog auch für nicht .Nettis.

Als einen der wenigen deutschen Blogs, die ich in meinem Feedreader hab, möchte ich den Blog von Kay Giza noch erwähnen. Der Blog ist eher weniger technisch und auch etwas “marketing”-stärker ausgerichtet als die anderen 3 Blogs. Allerdings informiert er in regelmäßigen Abständen was in der Microsoft Community so passiert.

Diese 4 Blogs sind mir besonders positiv aufgefallen, da sie regelmäßig und mit sehr interessanten Posts auf sich aufmerksam machten – ich habe noch ca. 60 andere Blogs in meinem Feedreader, ein paar interessante werde ich am Ende noch erwähnen.

Um einen groben Überblick zu bekommen, was in der .NET Community los ist, empfehle ich DotNetKicks.com. Dort werden Blogposts nach dem Digg Prinzip verlinkt, sodass man die interessantesten (englischsprachigen) Blogposts nicht verpasst.

Für die deutsche .NET Entwicklerszene empfehle ich DotNetGerman Bloggers auf dotnetgerman.com. Jeder .NET Entwickler oder Interessierte Blogger kann dort seinen Blog registrieren. Momentan sind ca. 65 Blogs (darunter auch der Code-Inside Blog) dort als RSS Feed verfügbar – diesen einen RSS Feed im Feedreader und man hat auch interessante deutsche .NET Blogs im Auge und man ist ideal für das Jahr 2008 gerüstet :)

 Hier nochmal eine winzige Auswahl an weiteren interessanten .NET Blogs:

  • Rob Conerys Blog - vor kurzem von Microsoft ins ASP.NET Team geholt und arbeitet momentan am ASP.NET MVC Modell. Er hat das SubSonic Projekt begonnen (ein Open Source .NET O/R Mapper) und beschäftigt sich z.B. auch mit Silverlight oder Ruby
  • Brad Abrams Blog - Ebenfalls ein Microsofti und er arbeitet am .NET Framework und im Silverlight Team mit.
  • “Project Astoria Team Blog” – Kein Blog von einer einzelnen Person, sondern der Team Blog von der Projektgruppe rund um die ADO.NET Data Services, welche mit bei den ASP.NET 3.5 Extensions dabei sind. Dies ist einer der vielen “Teamblogs” die Microsoft veröffentlicht hat.
  • Phil Haack Blog – Phil Haack ist ebenfalls Microsofti und arbeitet mit im ASP.NET Team und beschäftigt sich zurzeit mit ASP.NET MVC und schreibt auch sonst, was so entwicklungstechnisch bei Microsoft passiert.

Es gibt noch viele weitere interessante Blogs, eine Auswahl an Blogs die ich auch lese, findet ihr wenn ihr bis nach ganz unten scrollt (es ist nur immer eine Auswahl von 15 Blogs dort zu finden, insgesamt hab ich ca. 50 Blogs in der Blogroll).

Wenn jemand dies von Microsoft liesst, möchte ich mich für das Informationsmanagement von Microsoft bedanken – die Microsoft Blogwelt finde ich wirklich sehr interessant und selbst neuste Entwicklungen wie Surface haben ihren eigenen Blog in dem die Entwickler sich zu Wort melden. Bitte behaltet dieses Blogverhalten bei und baut dies stärker aus (auch die deutschen MSler) ;)   

ASP.NET 3.5 Extensions – December CTP verfügbar

Die ASP.NET 3.5 Extensions bringen neben den neuen MVC Modell einige neue Features auch in andere ASP.NET Bereiche (nur immer ein paar Stichpunkte vom Besten ;) ) :

  • Für ASP.NET AJAX:
    • Browser History Support
    • Verbesserte Javascript Permalink Funktion
  • ASP.NET MVC:
    • Ich selber hab schon lange darüber berichtet (siehe hier) und freue mich schon darauf, es mal selber auszuprobieren.
    • Für alle die, die noch garnix darüber gehört haben: ASP.NET MVC ist eine Alternative zu den Webforms, welche eine bessere Kontrolle über den gerenderten HTML Code ermöglicht und durch das MVC Modell besser aufgeteilt und auch testbarer wird (siehe hier).
  • ASP.NET Dynamic Data Support:
    • Der Name klingt schonmal gut, was es direkt ist, weiß ich selber auch  noch nicht genau ;) – gibt es aber wohl für ASP.NET Webforms & MVC.
  • ASP.NET Silverlight Support:
    • Bessere Integration von Silverlight in ASP.NET, d.h. Silverlight Controls etc.
  • ADO.NET Data Services: Der Data Service part wurde früher unter dem Codenamen “Astoria” (siehe hier) entwickelt und ermöglicht es, die Daten in einer REST basierenden Art und Weise wiederzugeben bzw. vereinfacht es. Dazu kommt noch das ADO.NET Entity Framework – hier ein Überblick darüber.

Weitere Details natürlich direkt bei Scotts Blog oder man probiert es selber aus und lädt es sich hier runter

Ein paar Microsofts CTPs welche man im Auge behalten sollte: Sync Framework, Astoria, SQL Server 2008…

Microsoft bringt von vielen seiner Produkte CTPs – Community Technology Previews – heraus, welche Konzeptionen aufzeigen und somit eine Art “Richtung” anzeigen, wohin sich Microsoft bewegen kann.
Das CTPs natürlich auch komplett “eingestampft” werden, war z.B. bei dem “Acropolis” Projekt zu sehen. Allerdings ist das Wort “einstampfen” in dem Zusammenhang falsch, da die Entwicklungen anderweitig in das .NET Framework einfliessen.

Da es aber doch einige CTPs gibt, die eigentlich unbekannt sind, hier mal eine kleine Auflistung von Sachen, welche ich mir persönlich mal anschauen möchte:

Microsoft Sync Framework

Um “online” Daten mit “offline” Daten zu synchronisieren, hat Microsoft nun das Sync Framework in Angriff genommen:

Mircosoft SQL Server 2008

Sandcastle

Um Codedokumentationen automatisch zu erstellen gibt es von Microsoft dieses hier (Jan Welker hat ebenfalls in der Weihnachtsausgabe des dot.net magazines drüber geschrieben):

Parallel Extensions for .NET FX

Eine kleine Beschreibung worum es geht und wie sowas aussehen kann und jetzt direkt zur CTP:

Visual Studio 2008

ADO.NET

“Astoria”

“Jasper”