in Personal

Web Application Design Patterns?

I’ve been working on a very complex ASP.NET web application for about the past 3 months.  It’s only complex because of the interaction between the users and the system and the amount of data that interaction involved.  What it seems like each page is boiling down to is something like this:

  1. Data Access Layer to handler fetching the data and keeping the data in sync with the “real” database
  2. Business Logic Components which are used in this case to provide something very similar to a strongly typed dataset (which basically allows you do use intellisense to access database fields plus a couple of other benefits)
  3. User Controls representing the underlying business component (basically at least one web user control for each business object we have)
  4. Presentation Layer which is just the ASPX web form that is basically nothing but a container for each page with a little bit of the controller logic in it

What I keep seeing, is that there has to be a better way to generate the user controls that represent the business components.  My business partner and I spent about a week writing the business logic components and then we needed to make a change so I sat down and figured out how we were designing them and then I wrote a program in an hour that generates all of our classes in approx. 30 seconds…  What I’m really wondering is if it is possible to do this for the user controls as well, because it seems like we always need to see the following views on the business components:

  1. Summary View (just a short one line type deal that can be used in a dataList when you need to list out a group of items)
  2. Detail View (shows all of the data contained in the business component)  This one also has to optionally be editable for the admins so they can change any details they see
  3. Some view that allows for adding & deleting the business component

It seems like we would be able to finally get done with this site if we could figure out a good way to do this and it seems there is a pattern there that I would imagine other people have ran into… I was just curious is anyone has had this problem before or if anyone had seen a design pattern that addresses this issue (MVC pattern doesn’t really help with this part of the problem).  Sorry if that’s too vague to get across my point.  I didn’t want to get into too many details of the project unless it was needed because it’s something I don’t want to think too much about at this particular moment. 🙂