October 2007 Entries


VSLive! Conference Schedule

In all my cross-posting, I forgot to include the conference schedule indicating which classes and workshops we attended.  Here it is for reference. The following table details the schedule for the conference.  I've highlighted the talks and workshops that Laura attended as well as those I attended to show our coverage of the available material. Pre-Conference Workshops - Monday, October 15th 2007 ...

VSLive! Notes

Disclaimer: The series of notes that I have posted from the sessions I attended at VSLive! are just that: notes.  I have tried where possible to turn them into posts that have some cohesion but having attended nine hours of talks per day for four days, editing time was falling a little sparse.  As I fill out these notes and write sample projects in some of the new technologies I have learned, I will update these posts accordingly.  For now I wanted to get them posted and out there in a timely fashion to avoid the ideas and thoughts falling...

VSLive! Day Three - Creating Custom WCF Behaviors

Presenter: Rob Daigneau Code: http://www.designpatternsfor.net I think it must either be Rob Daigneau or the topic of Windows Communication Foundation because this was yet again another superb talk.  WCF was of little interest to me when I first arrived at this conference, however now I found myself extremely interested in learning more about how it might improve the architecture of my projects.  It doesn't feel, like so many unfortunately do, like a technological solution in search of a problem.  I can already see where I could apply WCF to bring a robust communication framework into the design of my applications. Aspect-Oriented Programming Aspects encapsulate the handling of...

VSLive! Day Three - Using the Windows Workflow Rules Engine Standalone

Presenter: Michael Stiefel Windows Workflow Foundation contains a very powerful rules engine.  However, the applications for such a rules engine do not always lend themselves to a Windows Workflow implementation.  In this talk, Michael was able to show how the rules engine can used outside of the WWF framework.  These notes will be updated in future posts as I work through the development of a custom wrapper and service class for abstracting the use of the rules engine. Policy Activities Policy activities contain rule sets.  It is these rule sets that are processed when this policy activity is executed. Rule Sets A rule set consists of...

VSLive! Day Two - WCF for .ASMX and Remoting Developers

Presenter: Richard Hale Shaw To understand why WCF was developed, first take a look at the existing technologies in the .NET framework: Remoting Remoting was one of the earliest parts of the .NET framework that was developed.  While extremely powerful, the APIs themselves do not conform to a lot of the common trends established in other parts of the framework.  It is rumored that Remoting was not initially intended for release with the .NET framework. ASMX Web services were a huge part of the hype involved in the initial release of the .NET framework.  There are a number of limitations with the implementation regarding the areas of performance,...

VSLive! Day Two - Implementing SOA Design Patterns with WCF

Presenter: Rob Daigneau (Chief Architect, SynXis) Blog: http://www.designpatternsfor.net Author of an upcoming book on SOA Design Patterns published by Addison Wesley. This was definitely the most interesting talk of the conference so far.  It's pleasing to see an advanced course that really got into some great architectural discussions and provided applicable techniques for solving difficult SOA problems such as maintenance, versioning, forward, and backward compatibility.  This session is geared towards the WCF developer who is looking to improve their service oriented design architecture.     There are two typical types of SOA services: Domain Services These are the elemental building blocks upon which everthing else is built. Enterprise...

VSLive! Day Two - Creating Custom Data Source Controls

Presenter: Rocky Lhotka Code: http://www.lhotka.net This discussion contains information about creating custom data source controls.  Before diving into the concepts involved, lets first consider a justification for such development.  This is provided in the form of an analysis of the two most commonly used controls that are available for that purpose: SqlDataSource The SqlDataSource object allows developers to retrieve data from a database directly and use data-binding to display and edit the data inside of web or windows forms.  However, this is really only useful in 2-tier applications and leads to a poor architecture.  I find the SqlDataSource control to be most useful in prototyping. ObjectDataSource The ObjectDataSource, while vastly...

VSLive! Day One - Architecting ASP.NET Applications Part 7 - State Management

Session Management In much the same way as the configuration management class was written, a session management class can be written to encapsulate access to session variables.  This allows for first-class properties to be used when writing to and reading from session.  This provides for Intellisense when working with session variables as well as garnering the advantage of receiving compile-time errors when mistakes are made while architecting the session management class. Page Request Life Cycle The following diagram was shared by Paul because the workshop had ended a little early.  It's a picture I've had in my mind ever since I started developing ASP.NET pages, but...

VSLive! Day One - Architecting ASP.NET Applications Part 6 - Skins and Themes

Skins & Themes Styling complex controls such as Calendars and GridViews can be very difficult because of the way in which they render.  To address this problem, Microsoft developed the concept of skins and themes.  Skins and themes can be thought of as a server-side version of style sheets. Skins Skin files have a .skin file extension.  They live in the "App_Themes" folder.  There are two types of control skins: default skins and named skins.  Default skins apply to all controls of the same type when a Theme is applied to a page.  Default skins do not have a SkinID attribute.  Named skins have a SkinID attribute set and...

VSLive! Day One - Architecting ASP.NET Applications Part 5 - CSS

Structure versus Design The structure of a web page is the physical HTML elements (not the server controls) as opposed to the design which is the application of styles such as color, font size, or setting whether some text is bold.  Cascading style sheets provide a mechanism for separating the structure of a page from its design.  This is desirable because it removes duplication within the structure of a page.  Fixing errors with styles that are declared inline with the structure of a page can be very time consuming: i.e. if a color=blue is declared on every td (table cell) within a page and...

VSLive! Day One - Architecting ASP.NET Applications Part 4 - Exception Handling

Exception Providers Exception providers can be used to publish exception information to a variety of sources.  This is useful because user's of an application often fail to capture exception information when they encounter a failure.  To address this, an ExceptionManager class could be developed to publish exception information to a collection of subscribers.  These subscribers might be common destinations such as the event log, a table in a database, a file on disk, or an email address.  When an exception is caught, something along the lines of: try {     ... some code ... } catch (System.Exception ex) {     ExceptionManager.Publish(ex); } could be used to invoke the functionality of a ExceptionManager class.  The purpose...

VSLive! Day One - Architecting ASP.NET Applications Part 3 - Example Providers

Encapsulating ADO.NET A couple of real world examples of providers that are useful in almost every application are that of an encapsulated data access layer and a configuration management component.  Data access layers use providers to perform dependency injection, allowing for multiple different implementations of a set of data access interfaces, with each implementation exposing functionality to communicate with different data sources.  This is a fairly common form of encapsulation that many developers are already familiar with implementing, but there are still many areas in which the correct provider and package design can return many architectural, maintenance, and extensibility benefits.  Providers should be completely...

VSLive! Day One - Architecting ASP.NET Applications Part 2 - Custom Providers

Custom Providers The second part of the discussion is opening with a discussion of custom provider development.  This is of great interest to me as my recent work with the Model View Presenter pattern has caused me to research and implement dependency injection for many of the layers of my application.  The current product that I'm working on is implementing the MVP pattern and is using dependency injection to dynamically load a data layer at run time.  There is a need within the product to use a different data access layer assembly for the administrative tools than for the public side of the application.  The...

VSLive! Day One - Architecting ASP.NET Applications Part 1

Getting Situated For the preconference, I decided to attend Paul Sherrif's talk on Architecting ASP.NET Applications.  Fortunately, I was able to get to the room about an hour early and find one of the few seats situated close to a power outlet.  I really didn't want to have to transfer my notes from paper to my laptop later; I'd rather just type them out directly! N-Tier Development Benefits The workshop has begun with a discussion of n-tier development; the benefits of logically separating services into different libraries and isolating functionality into discreet sections.  The advantages of this approach are that the maintenance and extension of...