And here is the summary of the last day of the Tech Days. Definitely too short !
Session 1 : ASP.NET MVC Framework (By Matt Gibbs)
Find some information on Scott Guthrie's blog, or download it here.
Matt Gibbs has presented today this new framework designed by Phil Haack (for which no shipping date has been planned) that should enforce the separation of concerns. Some key points ?
-
The DLLs have been reorganized and for exemple the new System.Web.Routing.dll could be used for another project, as for example for the Dynamic Data Framework?
-
Creating a MVC project will generate a new test project and we can decide to use some other tools like Brail for the Views or NHibernate for the Models
-
The page in the MVC model will not contain any form. As a consequence, some controls will not be used (all the controls doing postbacks, the UpdatePanel, ...)
-
Some constraints can be set on the routes using regular expressions
Session 2 : Domain-Specific Development with Visual Studio DSL Tools (By Jelle Druyts)
Jelle Druyts has presented the DSL tools by presenting its project Configuration Section Designer that will help creating class for reading sections from the config file. Note that it will also generate an XSD for having intellisense.
-
He has presented quickly the different Software Factory Technologies
-
The DSL authors will need the Visual Studio 2008 SDK. Note that the DSL consumer will need a normal VS 2008 installation (it was not the case in VS 2005)
-
He has shown the use of "Bring Tree Here" in the DSL designer
-
He has explained the two views to define in the designer : the domain model and the shapes, and has shown the mapping between the two in the designer
-
Explanation of the constraing (soft or hard) by using some exceptions or some rules
Inspiration Session 2 : Fun In .NET (By Chad Hower - website : Woo-Hoo)
Well... Fun indeed but not of great interest. Ok we can control Powerpoint or a rocket launcher with a WIImote... Cool but what for ?
Chad Hower has also presented quickly COSMOS - its C# Open Source Managed Operating System.
Session 3 : Custom LINQ Providers - LINQ to anything (By Bart De Smet)
Crazy Session ! Very exciting !
-
Started with a quick C# 3.0 test
-
Given some existing LINQ provider
-
LINQ to Flickr
-
LINQ to Desktop Search
-
-
LINQ to File System
-
LINQ to Sharepoint
-
Quickly explained the two query sources
-
Precised that the transformation from LINQ to "code" will not necessarily search for extension methods. We can use some instances methods
-
Explanation of how to create a IQueryProvider
-
Note that the Execute method will be called only when a single result will be returned like when calling .Single, .First, .Default, ...
-
Note that "Linq to AD" support only Select and Where mehods
-
Demo of the Debugger Visualizer to see the Expression Tree
-
Note that there are some Extensions classes (SqlMethods, CamlMethods) to expose some functionality of a richer target language
-
He has described some difficulties of the transformation from an expression tree to the target language
-
having a client doing .ToString().ToString().ToString()...
-
having several syntax leading to the same things like "a" == "b" and "a".Equals("b") and string.Equals("a", "b") and ...
-
Bart De Smet is now working on a tool to normalize an expression tree
Session 4 : .NET 3.5 : Winforms & WPF (By Chad Hower - website : Woo-Hoo)
Once again, It didn't caught my eye. He has presented the strengh and weakness of the Winforms and of WPF
Session 5 : Deep Reflection (By Roy Osherove)
Great conference !
-
In the case of clone or serialization, there are two solutions
-
Explanation of the CodeDOM
-
Explanation of Reflection.Emit
-
Explanation of the Lightweight Code Gen (LCG)
-
With DynamicMethods, we can use SkipVisibility="false" to improve performance : the CLR will not test the visibility of the called members
-
DynamicMethods are garbage collected
-
We can create a delegate from a DynamicMethod
-
Quick demo of
RunSharp that can ease the emit
-
Explanation of the ReflectionOnly mode to avoid being exposed to malicious code and some of the methods
-
Assembly.ReflectionOnlyLoad
-
Type.ReflectionOnlyGetTypes
-
CustomAttributeData.GetCustomAttributes
-
Explanation of how to create and compile an expression tree
Unfortunately, due to my spanish course, I could not see the Closing Keynote. But anyway, it was a great year. I will just regret that there was so few time between each session so I could not speak enough with the seakers I wanted to see or with other people present there I wanted to see.