- The idea was to see what the Kit would look like using current framework technologies
- To port it in 16 hours or less
- To remain as close as possible to the original historical starter kit (this precludes any major enhancements, or added functionality)

Intro

When .NET 2.0 was released back in the Stone Age days circa 2005, there were a few starter kits to showcase the new technology and how to do a few things. The kits were largely intended as learning aids, examples, or simply as launch points for developers to extend and make their own.

As the years and new releases of the framework rolled by... 3.5, 4.0, 4.5, the kits were left behind on the side of the road, and I've always wondered what they might have looked like if they were built with the framework technology we have today. So here they are, all grown up (4.5.1) :)

Installation

  • download and extract the current changeset zip file from the download section
  • make sure that "Restore Nuget packages on Build" is enabled.
  • Rebuild the solution. That's it. By default, the kit is configured to use the XML files.

Big Note: If you open the solution in VS2013, you'll get 43 "errors". That's because the project started out using VS2013, but then switched to VS2015, and - oops - a couple of C# 6.0 features were used ~ one is string interpolation, and the other is the null-conditional operator.



Pick one of three easy "fixes".
  • The fun one is switch to VS 2015 :) - Not always possible for some, I know...
  • Change the null-conditional operators and the string interpolations back to C# 5.0 syntax
  • The easiest: Click the project in the Solution Explorer, and change the C# Language Level to 6.0 like below:


Quick overview

The Architecture

The application is divided into simple layers, each operating more or less independently. In a much larger real-world app, these layers would typically each be their own project within the solution. And because the app is tiny, things have been scaled down by an order of magnitude, and each layer is in it's own folder within the project. The four main pieces are:
  • UI: responsible for interaction with the outside world. It contains the views and controllers.
  • Models: contains the conceptual representation of the business - Entity Framework entities among other things, but also Data Transfer Objects if you use them, or any other class in your business model that is a noun.
  • Domains: responsible for any and all business logic for the app. This app is so tiny that it doesn't have any business logic. Nonetheless, the layer is there; it receives requests from the UI, makes calls to the data source layer, and returns data to the UI layer for presentation. It doesn't know how or where the data is stored, and it doesn't really care.
  • DataAccess: This one's sole purpose in life is to get data and return it to the domain layer; it doesn't know anything else above it's pay grade and doesn't want to know. More on this later.



...

Other**

The original kit has some inconsistencies within it. For example the sql tables have columns that have no corresponding element in the xml files. Some menus items have no pages, while others have simple circular references or are empty. So some tweaking and liberties were taken for the sake of consistency.

To add categories, items, etc, refer to the original kit's documentation.

There are some rough-edges in the solution; for example it has little-to-no exception handling, or the jquery UI could be beefed-up. These would be things to polish-up and plug in to make it suitable for a production environment. There are also many edge-cases that were not in the original kit, and consequently, are not in this release either. Tinker with it. Add your own stuff. Extend it. Just have fun with it.


Note: The documentation is a work in progress... and the above are just ideas from the back of a napkin...



Last edited Mar 29, 2016 at 1:05 AM by ScottDotNet, version 22