CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Brendan Tompkins [MVP]

Blog First. Ask Questions Later.

Two Years in the Life of an ASP.NET Website - What Worked and What Didn't

It’s been two years since we first launched our public ASP.NET web site here at work.  Along the way, we’ve implemented a host of .NET related technologies, some with good success, and others less successful.  Here’s a re-cap of what worked and what didn’t for us, and why:

What Worked

Test Driven Development

TDD with NUnit was one of the most valuable additions to our development process here.  I’ve mentioned this before, but our development time has been reduced, and we spend less time debugging with layers that were designed using TDD.

Application Layering

With a half-dozen solutions re-using business components, layering has enabled us to get a great deal of re-use from our code, simplify Visual Studio project management, and organize and simplify our coding process. We have 4 layers, UI, Business, Data and Common.  Simple, but works great.

Web Services

With ASP.NET Web Services we’ve very easily extended our business layer to our customers and partners.  They work like promised, and we’ve integrated partners in cross-platform environments.  We’ve also integrated 3rd party services into our architecture with equal success.

VS Installers

Early on, we made the decision to create installers for all of our applications, in order to push them into production environments. This has allowed us to keep our production application settings in one place, in an easily portable format.   In the past two years, we’ve changed servers a handful of times, and had to recover from hardware failures. Each time, our installers allowed us to setup new servers in a matter of minutes, not hours.

WSMQ

I would say that this worked wouldn’t I?  I wrote it, and yes, it’s working well for us.  A great alternative, IMHO, to MSMQ for simple queuing.

Cisco Systems CSS (Load Balancer)

If you can get a hold of one of these bad boys, I’d recommend it!  It works great for updating production code: Just starve traffic from a server, update it and bring it back into the mix.  Your end-users are none the wiser!

3rd Party Tools

Red-Gate and Resharper = Coding Bliss. I’m not even going to write about them here, because you owe it to yourself to find out why they’re so good. See www.red-gate.com and www.jetbrains.com for more information.

DataSets AND Business Objects

Yep.  We use em both, and they both have their place.  DataSets are a great method for quick data binding and updating, especially with one-off sets of data.  Business Objects are the way to go with your base business entities that are going to see lots of re-use.  But don’t take my word for it, read through the CodeBetter.Com archives and get into the debate.

ASP.NET Mobile Controls

These work exactly as promised, and are a great way to extend your current framework onto mobile devices.

MapPoint Web Services

If you need to provide GEO location and map data in your applications, Map Point Web Services are the place to look.  Very cool and full-featured SDK and Framework.

What Sorta Worked

Active Directory Integration

This has worked okay, and has it’s advantages such as single-sign on, and security management. It’s a hassle though, keeping the AD store in sync with your local SQL database, and updating and querying AD.  If I had to do it again, I’d use the Enterprise Library’s Security Application Block.

What Didn’t Work

Custom UI Controls

In the last two years, I’ve developed a whole host of custom UI controls for ASP.NET.  A TabStrip, a TreeView etc. These have been buggy and have had such bad code smells that they’ve smelled up other code around them. Now, in my defense, the tools available at the time were not all that great, but now with companies like Telerik and ComponentArt, don’t waste a second developing custom UI tools.  I’m currently in the process of ripping out all of my dumb code and replacing it with ComponentArt’s suite.

App Updater Application Block

I blogged about how to implement this once, and actually deployed some code with it.  Even when I figured out this complicated code, it was still buggy and difficult to maintain.  I’ve recently ripped all this code out, and manually updated all the clients that are using it. Let me just say that I can’t wait for ClickOnce.

Crystal Reports

Ugh. We’ve ripped out all Crystal Reports except one, and this one report still causes us headaches.   All I can say is ugh.

What Works and Works and Works, and keeps on Working…

ASP.NET and the .NET Framework. Really, what a joy it is to work with this technology. Thanks .NET, we have, IMO one of the best port sites in the world.

-Brendan



Comments

Jeremy D. Miller said:

Very nice post Brendan. I'd second the irritation about the Active Directory integration. I thought it ended up being more irritation than it was worth. We finally gave up and built a polling job to dump AD data into a database table and just used AD for authentication.
# September 29, 2005 11:48 AM

John Papa said:

Nice post. I agree on using the Ent Lib Security Block. I used it on a project where we needed authentication ans single sign on and it really made life much easier than my previois HORRIBLE encounters with AD integration.

I also like your approahc of a few simple layers and a few simple projects. I am amzed at how may projects I get to review that have dozens of projects (one had over 90!) and/or 8, 9 and sometimes 10 or more layers. One project I worked on had 6 layers that made up what they called the business layer and 4 layers for the UI!

I agree on Crystal too. Unfortunately I still don;t like any of the reporting tools out there. THey all seem to have major issues. I hold a lot of hope out for the new SQL Reporting Services. I have not played with the latest Sep CTP but I am hopeful.
# September 29, 2005 1:44 PM

Sergei Shelukhin said:

Hi, great post. I'd agree on Crystal reports. In fact, I don't think there's a suitable web report building solution anywhere; or is there? :)
One question, what does "Common" application layer do?
# September 29, 2005 1:59 PM

Brendan Tompkins said:

I'm not sure what other's call this layer, but I usually have a .Common project which contains stuff that every other layer can make use of, and utilites that every project may or may not need. Honestly, a lot of stuff in our Common layer *should* really reside in our business tiers (like business entities) but often for dumb objects (think structs) it's just nice to have them in a common layer, which has no other dependencies, and not worry about project dependency issues.
# September 29, 2005 2:18 PM

Fregas said:

I have to say my experience with ASP.NET has been almost identical on almost every point.

So you just use the Built in Setup & Deployment Project within VS.NET? My problem with that is it is pretty limited (or my understanding of it it.) I haven't been able to get it to run database scripts or include/exclude specific directories of files without changing my projects' structures. I've been looking for a more robust product to make .MSI's that doesn't cost an arm and a leg.

# September 29, 2005 6:12 PM

Brendan Tompkins said:

Fregas,

Yes, it is tough to configure. I've managed to work around it a bit, but mainly just use the out of the box features. Let me know if you find anything better.
# September 30, 2005 9:16 AM

Charles Fisher said:

I'll toast to that!!

I may have had just a tad bit better experience with Custom UI controls though. Some are tough but at they challenge you to think creatively. :)

Also, ComponentArt controls are the best of anything I've used (including Microsoft's Web Controls). I hope you get the version in which they give you the source. It's interesting how they do a few things. :)
# September 30, 2005 11:35 AM

darrell said:

If you used ADAM (Active Directory for Application Mode), then there is a built-in integration tool:
http://www.microsoft.com/downloads/details.aspx?FamilyID=d9143610-c04d-41c4-b7ea-6f56819769d5&DisplayLang=en
# October 5, 2005 4:47 PM

Josh said:

Nice entry Brendan, I agree with you about custom UI controls for ASP.NET. Finally we decided to use Chart FX .NET from the people of SoftwareFX avaioable at http://www.softwarefx.com/SfxNetProducts/ for all our charting needs.
# February 20, 2006 2:08 PM

Josh said:

Nice entry Brendan, I agree with you about custom UI controls for ASP.NET. Finally we decided to use Chart FX .NET from the people of SoftwareFX avaioable at http://www.softwarefx.com/SfxNetProducts/ for all our charting needs.
# February 20, 2006 3:05 PM

Vikas said:

At times ComponentArt and Telerik seems to be on the same page. Which would you recomend and why?

# June 11, 2008 7:19 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Brendan Tompkins

Brendan has been programming with .NET since the first public beta and is owner and operator of Port Technology Services, a consultancy company providing .NET application development services to the Maritime industry. In July, 2007, he was awarded the Microsoft MVP award for ASP.NET. He's also a proud co-founder of failed .COM startup Intrinsigo, and has had a hand in the failure of numerous other businesses. He currently runs CodeBetter.Com and Devlicio.us, and lives in Norfolk, Virgina with his wife Tiara and son Ian.

View Brendan's profile on LinkedIn

Check out Devlicio.us!

Our Sponsors

Free Tech Publications