St. Louis Day of .NET 2010

This past weekend was my first time attending the St. Louis Day of .NET, a very nicely executed two-day local conference.  Kudos to the organizers and presenters. 

Following are my notes on the individual sessions that I attended.  I’ve tried to clean these up, but apologies if I’ve misrepresented anything that was presented:

DAY 1 (AUGUST 20)

Separating Concerns with the Model-View-ViewModel (MVVM) Design Patterns – Jacob Adams

  • MVVM got a LOT of attention at the conference.  It seems to be THE hot pattern right now.
  • The purpose of the ViewModel is to provide a view-specific version of the model which contains the state and actions of the view
  • Drawbacks of the MVVM pattern are that 1) there is as yet no standard implementation and 2) it can result in redundant ViewModel code.  Note: Several other sessions that I attended showed specific implementations of MVVM that attempted to mitigate the problem of redundant code.
  • iCommand – An interface, implemented of the ViewModel, that is used by the View to send commands to the ViewModel.  It is available in WPF and Silverlight 4, but not prior versions of Silverlight.  For earlier versions, use a 3rd party library like Prism.
  • iNotifyProperyChanged – An interface, implemented on the ViewModel, that is used to allow the ViewModel to notify the View of changes to the data (the Model).

ASP.NET MVC Quick Primer – Gus Emery

  • Not yet fully baked.  I was surprised at how tightly coupled the Model, View, and Controller seem to be; especially in comparison to MVVM.
  • The current version of MVC is 2.0, with 3.0 in Beta (and promising significant changes).
    There are issues installing on Windows Server 2003.  These issues were not specified; it was simply notes that installation on that platform is not seamless.
  • The Controller handles requests, combines Views and Models, and serves up the results (of combining the View and Model).
  • The Model contains Data and Business logic.
  • MVC 2.0 projects automatically incorporate the jQuery libraries. 

SharePoint Server 2010: Getting Started with New Features for .NET Developers – Robert Fischer

  • This session turned out to be exactly what I was looking for; an overview of the SharePoint platform for developers who have never used it before.
  • With SharePoint 2010, standalone installations are possible on 64-bit versions of Windows Vista and Windows 7.  Previously, a server OS was required, making the tool difficult to approach for a beginning developer.  The caveat: installation on Vista/Win 7 is tricky.  Expect to spend at least a day getting it set up.
  • Microsoft offers Virtual Labs as an alternative to a local install.
  • Key initial concepts for beginners are Lists, Content Types, Site Definitions, and Features.
  • Additional important features are SharePoint Designer, Web Parts, and Powershell.
  • Business Connectivity Services allow developers to integrate external data with SharePoint.  It allows for reading and writing to databases, WCF, and data services.
  • There is a lot of functionality that is enabled via point-and-click programming (an example given was reading/writing to a database).
  • While debugging a SharePoint add-on, the solution is deployed to the server for testing, and then automatically retracted when the debugging session is complete.
  • The presenter suggested that large enterprises are replacing their built-from-the-ground-up websites with sites built on top of SharePoint.  He suggested that ASP.NET programmers should learn SharePoint, because the bare-metal ASP.NET sites would be going away.

DAY 2 (AUGUST 21)

JumpStart: DotNetNuke Module Development – Christopher J. Hammond

  • Not exactly what I was looking for, but that was my fault for not reading the session overview closely enough.  I was looking for an overview of DotNetNuke itself, rather than an overview of module development.  Still, it was interesting to compare module development in DotNetNuke with the little I know about module development in Drupal.
  • The recommended setup is for each developer to have an instance of DotNetNuke (including the database).
    For module development, the source code for DNN is not necessary. Only the running application is needed.
    DNN itself is not a web application (pre-compiled), it is a web site (on-the-fly compilation).  Modules can use either model.
  • Virtually everything in DNN is a user control (ascx).
  • Modules will work with the version of DDN on which they are compiled, and on any future version.  They are not guaranteed to work with older versions of DNN.
  • Modules should catch and handle exceptions so that they do not crash the entire container page (and any other modules on that page).
  • A file named module.css contains the style settings for the module.  It must not be renamed.

Building Backward-Compatible HTML5 and CSS3 Applications in .NET – Nik Kalyani

  • Nice overview of the coming features in HTML5 and CSS3.  However, the best information shared was a working example of a HTML4/CSS2 table-less form layout.
  • Code samples available at www.kalyani.com.
  • Modernizr.com provides a javascript library for sniffing browser compatiblity with HTML5 features.
  • Multiple video formats can be listed within the new <video> tag.  The browser will choose the appropriate format to render.  The Flash <Object> tag can also be included within the <video> tag.  HTML5-compliant browsers will ignore it in favor of one of the other formats listed, and older browsers will ignore everything EXCEPT the Flash <object> tag.
  • The HTML4/CSS2 table-less forms example is an example of semantic web markup.  It used CSS and following tags to render a form:  <fieldset>, <legend>, <ol>, <li>, <label>, and <input>.
  • CSS frameworks like Blueprint, 960 (?), and YUI were demonstrated.  Personally, I prefer using CSS without a framework.

Dependency Injection: Don’t Leave Home Without It – Perry Simeroth

  • Disappointing.  This session started well enough, but the second half of the session was dominated by a discussion between the speaker and two or three attendees that questioned aspects of the design pattern.
  • “Code without tests is bad code”
  • “Most applications ignore the last two principles of SOLID, leading to strong coupling and limited testability.

Real World Line-of-Business Development in VS.NET 2010, Silverlight 4.0, and RIA Services – Kevin Grossnicklaus

  • An all-code session in which an application was built from the ground up in one hour.
  • WCF RIA services is a layer on top of WCF that is intended to reduce the complexity of WCF.  Something I should probably pay more attention to.
  • Entity Framework can handle all CRUD applications without the use of stored procedures.  In general, the use of EF 4.0 rather than stored procedures was strongly advocated.

LINQ to XML: A New Way to Parse/Create XML Files – Shawn Mehaffie

  • LINQ to XML can be used to parse CSV files using code similar to the following:

var contacts = from line in File.ReadAllLines(@”contactslist.csv”)
 let parts = line.Split(‘,’)
 select new ContactSimple
 {
  age = parts[0],
  firstName = parts[1],
  lastName = parts[2]
 } 

OTHER STUFF I LEARNED ABOUT

  • HerdingCode podcast – a .NET podcast which I had overlooked
  • Html5Doctor.com – as the site’s tagline says, “helping you implement HTML5 today”
  • Html5Test.com – visit the site and it tests your browser (and assigns a score) for HTML5 compatiblity
  • Book recommendation: “Pro Silverlight 3 in C#”

IF I COULD CHANGE JUST ONE THING

I’d add video recordings of the sessions.  It would be great to be able to watch the sessions you missed.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: