I am preparing for the development of an enterprise-style application for a very small business of 6 employees (including myself -- before you question why a 6-person company would need an enterprise application, we have a lot going on with a lot of processes and tools needed to simplify it). As always I'm trying to follow best practices in setting up the project; I'm going to be using .NET 3.5, with the database being on Windows Server 2003/SQL Server 2005.
While I'm developing and testing the solution, should I have everything in my main project? What I mean is... Visual Studio 2008 Professional lets you have "database projects" as well as all of the other types of projects. For this application I'm going to need:
- Database Project containing the create and test scripts for the new data schema
- C# projects containing the actual code/application:
- Customer-facing web site(s) using ASP.NET MVC
- Back-end order processing system, probably web-based but possibly a "smart client"
- SSIS project containing packages to ETL the "live" application data provided by our vendor(s) and migrate over existing customer and order data from the legacy database.
- Reporting project for SQL Server Reporting Services
Basically, I am wondering if it's a good idea to have all of these as part of one massive Visual Studio solution (let's call it "EnterpriseSolution"), or if I should break them out and tackle them separately. Most of the books and websites I've looked at include them all together, but they also assume a team of developers, DBAs, architects and the like - in this case I'm all of them rolled into one. The database project and at least some ETL processes need to be done and loaded into production before the rest of the application is written, since we need to load the new vendor's products in a live environment (to start selling them).
I'm a little overwhelmed as to how I should begin to structure this, but I want to come up with an overall plan before I begin to lay things out and start coding.
Any suggestions on how to tackle a project like this?
I would recommend creating a "Blank Solution" to start that would be a *.sln file (Say EnterpriseSolution.sln) that would sit in a folder named EneterpriseSolution. A blank solution can be created from "Other Types". I would then add in the additional parts you described as seperate projects, each within its own folder under the "EnterpriseSolution" folder.
For instance, each of your client facing websites would each have their own project folder. It looks like you will have more than one website so you will need to make sure you setup different "ports" for each to run under if you use one solution wrapper. However, you can aslo create different solution "wrappers" (as a blank solution to start and then project reference the projects you want) to include each website sperately in your folder structure so you can focus on a portion of your enterprise solution. But physically you will know where everything is and how it is organized.
This way, when you look at your Enterprise Solution folder thru windows explorer the only thing you will see is your solution file(s) and your project folders.
Thanks and good luck with your project.