mars 22


Again for this day, I exclusively followed the Developper and Solution Architect track, but switched between the sessions related to Client & Web, Tools & Languages and Servers and Services. Definitely good sessions ans goof speakers. So many lessons to learn ! 

Session 1 : The Daily Scrum (by Joel Semeniuk and Stephen Forte)

I am now working for 3 years and a half, and so I try to follow all the agile related sessions to learn a maximum of things and compare other practitionners method implementation with mine. Some key points of this session:

  • The daily stand up meeting
    • The daily stand up meeting is not a status meeting
    • The scrum faster is a facilitater
    • Three questions to answer during the meeting :
      • What did you do yesterday ?
      • What will you do today ?
      • Is anything in your way ?
    • You should not attack anyone during the meeting --> See him after the meeting
  • An important question to answer : What is "done" meaning ?
  • Some book references :
  • The duration of sprint is fixed in advance, but all the sprint may not have the same length (we can plan in advance that the next spring will be longer or shorter, but once it has started, we do not re-schedule it)
  • There are three key parts in a project (Functionality, Cost and Schedule), and only two of them can be fixed

Session 2 : ASP.NET MVC for Smart People (By Scott Galloway)

I was already knowing quite well the model of ASP.NET MVC so this session didn't show lots of things new. However, some key information :

  • When creating a new MVC solution, the template will create among all:
    • a "Content" folder that will hold images, ...
    • a "Scripts" folder including JQuery 1.3.1
  • The template will create the controller and the associated views (on demand)
  • We can use the [OutputCache] attribute on a view
  • When doing some POST to the server, the controller works by default with the FormCollection. However, we can use the ModelBinding to replace this FormCollection by the currently typed object we are managing
  • The Model is a partial class and so we can "extend it" (creating another partial class) to add some validation. For that purpose, we can use the IDataErrorInfo interface
  • Two goals of the MVC framework
    • to have a tight control on the HTML markup
    • to have user and SEO (Search Engine Optimization) friendly URLs 

In my view, this framework is interesting, but I'm not totally convinced by its added value. More specifically if we note that

  • in ASP.NET 4.0 we'll be more free to manage the HTML markup (by avoiding to have long generated IDs)
  • we can already use the Routing namespace to get friendly URLs

I think it's currently generating extra work for limited added value. Well let's see and try !

Session 3 : Fastest to Market : RAD Web Applications with ASP.NET Dynamic Data and Entity Framework (By Ingo Rammer)

One of my favorite speaker for an interesting session even if Dynamci Data is not really new for me.

  • Some new templates are available, among them we can note "Dynamic Data Entities Web Site" to have a web site using Dynamic Data and entity Framework. Another template will use LINQ to SQL.
  • You will need to install the latest hot fixes of Entity Framework
  • In configuration : ScaffoldAllTables means that some CRUD (Create, Read, Update, Delete) interface will be generated for all the tables of database we are targeting. But we can decide to scaffold only the tables we want
  • Dynamic Data will fo automatic form generation
  • We can use Routing
    • Be careful, if the routing you specify creates URLs not finishing with .aspx, IIS Will not redirect to ASP.NET We need to change the HttpMapping to redirect all the URLs to aspnet_isapi.dll
  • We can use the [MetadataType] attribute to specify wich class will contain the definition of the attributes. This will be usefull if we want to add some extra attributes on the generated members of the entity framework model
    • Ingo has published on his blog a small tool to generate al the metadata type class based on a model. It is available here
    • We can use a [DataType] attribute to interecept the formatting of a column thru the Format method
    • It is not possible currently to reorder the columns, except if we use the IAutoFieldGenerator interface of classical ASP.NET 

The conclusion of Ingo ? Dynamic Data will never get used to generate a business web site where high performance is needed as everything is done here at runtime. Moreover, managing business rules thru this model could be tricky. However this could be very usefull to generate some maintenance pages very quickly.

Session 4 : ASP.NET 4.0 what is coming? How do I prepare my app? (By Scott Galloway)

No so many information to remember here. Let's just say that:

  • Lot's of snippets will now be available in the HTML code
  • Some web.config transformation files have been added. This will allow to change osme attributes dependent of the configuration we are using (development database versus production database for instance)
  • An OutputCacheProvider has been added, targeting "On Disk", "In Memory", or even "Azure"
  • We can now control more the client ids that will generated : a new ClientIdMode property is available on the controls:
    • static: the ids will "forget" the naming containers part and will restart to this point
    • predictable: we can use a pattern to generate the Ids as for instance the identity of a data row in a grid
  • Visual Studio 2010 will be shipped with JQuery and Ajax Control Toolkit

Session 5 : ASP.NET AJAX 4.0 (By Jurgen Postelmans)

Jurgen has posted the slides of his session on his blog on

  • Jurgen has reinsisted on the fact that the UpdatePanel is doing an asynchronous POST to the server, sending all the data of the pages (view state included), and that the server will thus process all the page (running all the events Page_Load, ...) to send back the HTML of the parts to update (ie the panel itself AND the view state)
  • POX : Plain Old XML
  • If we want to use WCF from Javascript, we must declare our service using webHttpBinding and adding a behavior declaring enableWebScript
  • To view the WCF service proxy that can be used in the javascript, we can use the WCF service URL and adding at the end /js or /jsdebug. This URL can be simply referenced on the page where we wantr to use the service
  • In javascript, the OnSuccess and OnFailure method take three parameters : The data received (or the error), the context and the method name
  • To do some binding in our HTML, we must use the syntax:
    • {{expression}}
    • where "expression" can contain method call, variables, ...
  • A new client class DataView has been added
    • One method set_data to fill the dataview
    • The method render has been replaced by updated
  • ASP.NET AJAX recognize tthe CSS class sys_template and will remove it when rendering an object. This class should be reponsible of hiding one element (typically visibility=hidden and display=none)
  • The prerogative sys:activate="*" is used to define the elements (here all of them) where we allow the creation of a control we have referenced in an xml namespace
  • A class Sys.Observer has been added. The method remove must be used to inform a grid that we have removed an element. This class is similar to the .NET classes ObservableCollection and INotifyPropertyChanged

 Session 6 : Azure - A lap around cloud-hosted Services (By Ingo Rammer)

Last session of the TechDays, and last one about Azure. Some more information to get:

  • SQL Services is a high scalable database available in the cloud, that should support up to a peta bytes of data
  • A Web Role can be seen as equivalent of an ASP.NET application that has medium trust
  • The Development Fabric allow to debug a cloug computing project locally
  • Azure provides us with a Zero Downtime Environment
    • Two platform are available online : Production and Staging
    • A simple click will swith between these two platforms
  • A new SessionStateProvider has been provided to target Azure
  • A WebRole is done to perform Synchronous Operations, while a WorkerRole will be in charge of Asynchronous Operations
  • The WorkerRole is based on a queue
    • It's important to (explicitely) delete a message from the queue once it is processed. Otherwise, it could be treated by another worker role later
    • This process (without implicit deletion) has been done to counter a potential message loss if a server has a problem while processing it



Posted on mardi, 8 avril 2014 11:08

Spot on with this write-up, I seriously feel this site needs a lot more attention. I'll probably be returning to see more, thanks for the info!

Here is my homepage; Paddy O'Brian [ Carri - ]

Ajouter un commentaire

  • Commentaire
  • Aperçu immédiat