Posts
208
Comments
1144
Trackbacks
51
ASP.NET MVC Application – AlbumCredits.com

Recently my company just released the first version of a new MVC web site: AlbumCredits.com.  This project, led by Oskar Austegard, is was I consider a highly successful real-world implementation of MVC. In a time when most music these days is downloaded, the production and performance engineers, and recording professionals that work on the music don’t always get credit because there is no CD booklet to look through.  Album Credits is almost like a LinkedIn for recording professionals.  From the about page:  AlbumCredits.com is “A fast, easy way to find production and performance credits from more than one million CDs and LPs.”

We leveraged a ton of great technologies during the development of this solution. To name a few:

  • Custom Controller factory based on StructureMap Inversion of Control (IoC) container
  • jQuery for all AJAX needs
  • T4MVC Templates
  • Data Annotations for Validation
  • xVal for client side validation
  • LINQ to SQL with stored procedures (including a few UDFs) for data access
  • SQL Server 2008 with Full Text Search
  • SQL Server Integration Services for the data feed
  • MvcFutures (functionality that will be baked in to MVC2)
  • Numerous custom HTML Helpers
  • Numerous third party jQuery plug ins including:
    • jQuery UI
    • jQuery Tools:
      • Tabs
      • Scrollable
      • Overlay
    • Tablesorter
    • jQuery Form
    • Jcrop
    • jWysiwyg
  • For unit testing – NUnit and NUnitEx
  • For mocking - Moq

Additionally, on the build server we used:

  • Cruise Control .NET
  • MSBuild
  • FxCop
  • StyleCop
  • NUnit

Album Credit starts with a nice AJAX auto-complete search box:

 

The site is then “deep linkable”. Want to see what engineers worked on a particular album?  What other albums did they work on? Which other artists?  You can literally relate any category together in your searching - think Six Degrees of Kevin Bacon but for the music industry.

 

It’s an example of a site that takes a very cool idea and melds it will a solid technical implementation.  Check it out!

posted on Wednesday, November 18, 2009 10:15 AM Print
Comments
Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
Raghuraman
11/18/2009 11:45 AM
A very good Initiative.

Best Wishes !!!
Gravatar
# Great app. Auto-complete search box a little sticky though
Nathan
11/18/2009 11:26 PM
First time I was not even aware it is auto-complete due to the delay. Is that delay time adjustable?
Gravatar
# Validation
Lei
11/18/2009 11:37 PM
Can you shed some light on the the recommended client-side and server side validation technologies? I assume it would be xVal and data annotations since they have beenused for this site?
Is Enterprise validation block still a viable choice for MVC?

Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
Steve
11/18/2009 11:48 PM
@Nathan - The delay time is adjustable. But there may be some DB latency in there as well. We're still tuning.

@Lei - Given that this is an MVC 1.0 site and we wanted automatic client side validations, we went with xVal and DataAnnotations. This baseline functionality will be baked into MVC 2.0. Enterprise Library VAB absolutely is still a viable option in MVC and I still love the VAB. However, due to the implementation choices on the VAB it does not easily lend itself to incorporating client side validation which is unfortunate though the server side validation works great and is incredibly robust.
Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
Oskar Austegard
11/18/2009 11:55 PM
@Nathan:

The delay is currently set at a full sec - it was 500 ms, but we had certain important users who apparently typed too slow, and they got confused by the updating search results.

In addition to that, the queries can run a bit slow, depending on input, as each query goes against 5 resultsets with a total of ~ 14million rows.

The auto-complete is at this point intended more as a in-case-you-forgot-to-hit-enter function more so than a live search/google suggest kind of thing....
Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
Matt
12/3/2009 5:01 PM
How did you guys handle composition of the various parts of the ViewModel? I have a project with similar "areas" of the page that need to be pulled from database and are re-used in other sections of the site.
Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
T
12/3/2009 6:33 PM
It is a great site.

Thanks for listing out all the tools that you used. Since there are no clear patterns and practices on MVC projects, it would be great if you can share details of the architectures you used?

- Did you really have view models?
- Was your data annotations on the view model or on the domain model
- Do you validate when persisting or on model binding
Gravatar
# re: ASP.NET MVC Application – AlbumCredits.com
Steve
12/6/2009 8:51 PM
@Matt - The ViewModels have been handled a few different ways - not just on this project but on some other projects we've done. Have a look at this link for how we typically handle view models: http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx.

@T - Yes, we used view models (see the link I just gave to Matt for how we handle View models). In general, we put data annotations on the view models but there may have been some mix of both in this project. And yes, we handle validation during view model binding.

Post Comment

Title *
Name *
Email
Comment *  
Verification

View Steve Michelotti's profile on LinkedIn

profile for Steve Michelotti at Stack Overflow, Q&A for professional and enthusiast programmers




Google My Blog

Tag Cloud