Building EquipmentBarn
a Step-By-Step guide to building a complete .NET Website from the ground up.
 

This page details the step by step approach I used to build EquipmentBarn.com. This a very brief overview and is coming from the perspective of a Java developer who knew very little about Microsoft.Net (the primary technology used to build EquipmentBarn). In addition I list the resources used at each step in the process.

Should you decide to do a site in .Net I hope my resources listed and lessons learned will save you a little time and avoid overlooking some of the details that I missed starting up. I have also listed the approximate time it took to complete each step so maybe this can help you gauge your own progress.
 
Step 1 - Read an intro to .Net Architecture book
Step 2 - Evaluate Technologies Surrounding .Net Architecture
Step 3 - Complete architecture research, evaluate and determine implementation tools & specifics
Step 4 - Write a requirements and general planning document
Step 5 - Complete Brochureware to learn IIS idiosyncrasies and Microsoft Web Environment
Step 6 - Read a SQL Server Book & Lay out DB Schema Step
Step 7 - Completed Data Access Layer Development
Step 8 - Developed Main Pages (Auction Search, User Registration, Auction Input, etc.)
Step 9 - Completed first WebService Call
Step 10 - Developed Email notification sytem
Step 11 - Read IIS Security Book and locked down servers-begin QA testing.
Step 12 - Launched Beta test & Final QA Testing
Step 13 - Monitoring, Maintenance, and Promotions
 
Step 1 - Read David Chappells Book Week 1
Reading David Chappells book at the same time I started looking for Farm Equipment on the internet was probably the catalyst for this whole project. Since I had already completed a couple Java projects I was contemplating doing the project in Java. However when I learned about .Net seemed like something new and refreshing. I started the process by reading Understanding .Net book cover to cover gave me a good foundation.
 
Step 2 - Evaluate Technologies Surrounding .Net Architecture. Week 2 & 3
While this step should usually start technology agnostic I ware pretty much predisposed to having .Net at the core-for the reason of learning it more than it was screaming at me to be the correct toolset. At this point I was not sure what supporting technologies I was going to have surrounding the .NET application.

I considered Oracle and MySql for the database and considered Microsoft Exchange for the Email server. Given the fact that I wanted to use Web Services in this project I settled on Qmail on a Linux server (the cost of MS Exchange also played a factor), in addition that created an convenient excuse to create some cross platform webservices.

In order to get the full picture I spent quite a bit of time on the web reading both sites that promoted Microsoft and .Net and their detractors.

Ultimately I decided upon Microsoft SQL Server for the database, primarily because it is so tightly integrated into .Net...especially when the next version (Yukon) is released in 2004.

For speed and simplicity considerations I decided to develop most of the scheduled tasks and email related tasks in Perl. The selection of Perl for the backend systems also allowed my to independently determine which processes were going to run on the Linux platform and which were going to run under Windows.

 
Step 3 - Complete architecture research, evaluate and determine implmentation tools & specifics. Week 4
Given the fact that all of my web related experience had been in J2EE/Java world I did not take this step lightly. Mistakes here can cost hours of rework later. Chappells book (from Step 1) gave a good overview but I spent quite a bit of time on the internet reading about successes and failures that other developers had encountered on similar projects.

I spent an extra amount of time reading messages from the guys new to .Net and from the ones doing it the most-this gave me insight on what hurdles to expect as well as some insight on the right way to do things.

The thing that helped me a LOT here was past J2EE experience. No offense to Microsoft but .Net is a complete ripoff of J2EE. It actually makes it pretty simple for a Java guy to move in and get up to speed relatively quickly. The only choice left was to decide what .Net language to use.
J# .Net just seemed like a 1/2 hearted attempt by Microsoft to woo some Java devlopers and my concerns about long term support ruled it out pretty quickly. That left either C# or VB.Net. Since I had some VB experience in the past I was assuming I would use VB.Net.

At this point I read the ASP.Net fast and easy and C# fast and easy in their entirety. Having a stronger C++ and more recent Java background I did a 180 and chose C# primarily for the syntax familiarity.

 
Step 4 - Write a requirements and general planning document Week 5
Having a good idea of .Net was good at I had already commited a development sin and planned a bit to much of my technology begfore setting a real problem statement for the site. In this rare case where 50% of the reason for the project was to learn the tool it worked out ok.

I did however sit down at this time and layout a general site map, some UI elements I wanted to play with and some high level data mapping.
 
Step 5 - Complete Brochureware to learn IIS idiosyncrasies and Microsoft Web Environment Week 6 to 8
The next step was to develop the Brochureware. At this point I learned the Visual Studio development environment, debugging tools, etc. Completing the Brochureware allowed me to see some results and work out the simple problems without getting bogged down in the details. At this point there was no database access. I utilized the 4GuysFromRolla.com and the ASP Quickstart Tutorials website to complete most of this. I had quite a bit of HTML and JavaScript experience in the past, if you have not then this would be a good time to get a book and learn those topics well.

There was some C# work here to get custom tags going for the header, etc.
 
Step 6 - Read a SQL Server Book & Lay out DB Schema Step Week 9 & 10
Having quite a bit of past database experience in the past made this step go pretty quickly. Though most of my experience was in MySql and Oracle the concepts of good database structure and normalization were the same so all I really needed was the SQL Server specific syntax and operation minutia. The SQL Server learning curve that initially concerned me turned out to be very quick and overall I found the development and administration much simpler than Oracle. To get up to speed I read the SQL Server 7 in 24 hours book in its entirety.

I spent a much more time researching and installing and tuning the database than than actual development work. Take a look if you want to see the lastest EB schema.
 
Step 7 - Completed Data Access Layer Development Week 11 to 13
Now it was time to develop the database access layer. This shouldn't have taken as long as it did but I was anxious to get coding and I initally made several mistakes and a couple bad architectural choices, resulting in a good bit of rework. After the 3rd attempt I broke down and got the ASP.NET Databases using C# book and read through all the case studies-and it finally clicked. Plan on spending quite a bit of time to get this right but learn from me, the time spent here will save you hours and hours later-and a poor design will limit your performance and future development speed.
 
Step 8 - Developed Main Pages (Auction Search, User Registration, Auction Input, etc.) Week 14 to 17
Develop the dynamic content pages. This is where it started to get challenging and fun! The login screen and cookie/security approaches were developed. All of the data input and display screens were built. For more information see the EB Architecture document. I did get a little stuck a couple of times and ended up getting the ASP.NET Tips, Tutorials, and Code book here.

In hindsight I am amazed that of this whole 6 month project only 4 weeks of it were doing the actual core development stuff I wanted to do and learn. Everyone developer should try to do one project womb to tomb on their own-it makes you appreciate all the DBAs, System Administrators, QA People, Documentation, Graphics, and business staff that seem like a sidebar to many projects!
 
Step 9 - Completed first WebService Call Week 18 & 19
Web services are so incredibly easy in Visual Studio that you miss how much is really required. My first couple calls were both on the Microsoft side and I was AMAZED at how easy web services were!.

Integration with the Unix world was an entirely different animal! Microsoft hides all the details you really need to know to successfully pull it off in a cross platform environment and it is easy to start thinking they don't exist.

After a couple frustrating days it was going I finally broke down and bought the SOAP Cross Platform Development book. A word of warning-consuming the MS Web services (from Perl to Windows) is relatively simple. Consuming webservices on the Linux box FROM .Net is much more complex so plan on spending some time if that is to be your approach.
 
Step 10 - Developed Email notification sytem Week 20 to 23
Developing the email notification system was really nothing more than writing producers and consumers for the web services. To see more detail on this see the EquipmentBarn architecture document.

The templated EMail system EquipmentBarn used turned out to be a little challenging and took much longer than I anticipated but it is is really flexible and part of the \ system I am most proud of. More more details see the EquipmentBarn Architecture And Design PDF document.

Integrating with Linux/QMail via web services. I had a pretty good advantage starting this project in that I already had a working Linux box running qmail for my own personal mail system so nothing more than a little admin was required to get the mail running. If you are interested in running a Qmail server (which I highly recommend) then here is the book Running QMail I used. Again, I had a fair amount of Perl experience in the past. If you do not have Perl experience and want to use it here are a couple books I have read in the past and highly recommend.
 
Step 11 - Read IIS Security Book and locked down servers-begin QA testing. Week 24 & 25
As it came closer to time to deploy I had to face one of my early fears IIS/Windows security....coming from a UNIX background I had heard the horror stories about securing IIS and Windows Server platforms. As I learned more it actually turned out to be a rather enjoyable and educations parts of the process. I did quite a bit of online reading (hacker sites are a great place to learn how to secure your server) and read the IIS Security book and put together a process I now will use when putting any other IIS servers into production. From what I see so far the key to solving 99% of the problems is having a good tightly locked up firewall that only allows necessary traffic, not running any unnecessary services, and keeping up to date on Microsoft Patches
 
Step 12 - Launched Beta test & Final QA Testing Week 26 to 29
Finally it starts to get real exciting, Beta Testers! My sites are linked and serve as failover points for each other as shown in the EB network diagram Network Diagram JPEG, deployment was relatively straightforward. Launch dates were 3/1/2003 for http://test.equipmentbarn.com for the beta testers and 4/1/2003 for the http://www.equipmentbarn.com production release. Before launching for beta test you should have a test plan. Here is a link to the quickie that I drew up. In the real world if this site were larger I would have had screenshots, expected results, etc. Also at this time I developed a Perl script to just pound the site from other machines, this was used for load testing and to find any load related bugs. For a link to the EquipmentBarn Test Plan PDF..
 
Step 13 - Monitoring, Maintenance, and Promotions
Now that the site is launched the only thing left is monitoring, maintenance, and promotions. I highly recommend you put together a reminder document for monitoring and maintenance, you can find a sample copy of my " Equipment Barn Operations PDF (sanitized for security reasons of course).

I am still researching Search Engine ranking and what promotions I want to approach promotions from both the web and more traditional advertising methods. The only thing I know for sure I will be using is GoogleAds and a couple different banner exchanges and webrings.

As for maintenance I have automated all the reporting and backups so the site should pretty much run itsself. The production database is backed up nightly to the test box and vice versa. I will probably end up burning and offsite copy of the production DB about once a week. In order to develop backup strategies I needed a little help and finally ended up with one last book, the Mastering SQL Server 2000 book.


Paul's Page  |  Julie's Page  |  Madison's Page  |  Allison's Page  |  Boston's Page
Home  |  Equipment Barn  |  Contact Us  | Technology Consulting  | Farm Page  |  Photo Albums