First I used ASP.NET MVC web project template to generate Visual Studio solution structure for me. It is a standard project template that is shipped with ASP.NET MVC installation package. We can download it from ASP.NET MVC website or CodePlex.
Standard ASP.NET MVC web project template generates basic folders and files structure for our MVC web project. We can treat it as starting point where everything else will be added later. The standard template also can generate a test project that we can use to perform our unit testing. This is a good starting point also if we plan to perform TDD in our project.
In the standard template, all stuffs are grouped in a single web project. The models, views, and controllers are parts of the web project. For a simple web project this should be sufficient. Currently CommunityBlog is a simple web project. It should be sufficient to use the basic web project structure. But, CommunityBlog will evolve in time and likely it will become more complex. So, at this point I plan to divide those components into different projects.
The Model will be taken out from web project as a separate library project. This project will host LINQ to SQL generated classes as well as my POCO classes. Repositories will also be placed inside this library project. I mention repositories here because I plan to use (as I plan to use the repository pattern).
The Controller and Views remain in web project as they are coupled tightly by ASP.NET MVC framework. Controllers are POCO objects that inherit from Controller class in ASP.NET MVC library. Views are implemented by view engine. The view engine is highly configurable in ASP.NET MVC framework. We can choose one from many view engines that are available on the net (for example Brail, NHaml, nVelocity, XSLT). For CommunityBlog, the default web form view engine will be used.
There is one more separate Visual Studio project that has to be mentioned. The presence of this project resembles the SOA architecture that adapted by CommunityBlog. If SOA term seems to be too general, let me say that I used the Service Layer pattern from Martin Fowler. This project forms a layer of services that establishes a set of available operations.
This is a picture of Visual Studio project structure that I already described above.

I haven't mentioned the SampleDataGenerator project. This is actually only a utility project that I used to generate sample data into database. This is not part of the core projects in CommunityBlog, but it can be useful when testing.
As conclusion, here I already structure the Visual Studio solution based on the overall architecture consideration. Solution contains of four projects: 1 web project to host views and controllers, 1 C# library project to host data access and repositories, 1 C# library project to host service layer, and 1 test project.


