a Step-By-Step guide to building a complete .NET Website from the ground up.
|Overview Technology Step-By-Step Resources|
|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
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
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
you have not then this would be a good time to get a book and learn those
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.
|Overview Technology Step-By-Step Resources|
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