CommunityBlog is the name of my new community project as implementation of LINQ to SQL and ASP.NET MVC technologies in the real world. It is a blogging engine just like dottext, subtext, or BlogEngine.NET, with main additional feature: supporting multiple users in the same website; and each user may have more than one blogs.
As someone who mainly works in .NET environment, I always welcome new stuffs and eager to learn them. ASP.NET MVC is one of the new stuffs coming from Microsoft production line that now becomes my primary interest. Combined with LINQ to SQL as data access mechanism, I want to prove them can work well together in a real world application.
I'm following what is Rob Conery doing now with his Storefront application. From my point of view, he is trying to migrate the Commerce Starter Kit application that he made using SubSonic to ASP.NET MVC framework. In doing so, he also employs LINQ to SQL as data layer mechanism. It's interesting watching Rob trying new ideas with LINQ to SQL. He is a smart and communicative guy, so it is not difficult following his Storefront episodes especially for me whose mother language is not English.
Process and Project Plan
I want to apply agile process in doing this project. I know that agile is a broad term as well as a buzzword. Everyone can have different view about what agile is. For me, by being agile means that I will make it as iterative process where each iteration deals only some set of functionalities that have been defined for that iteration. At the end of each iteration I will deliver product quality software to my users to obtain their reviews. Based on these reviews I will make necessary adjustment in the next iteration.
On the next iteration, my knowledge of underlying problem domain should become better. Inline with that, I can also fine-tune the architecture and source code of the application. This iterative nature of running the project by continuously performs customer reviews and program fine-tuning is the heart of agile process.
As a consequence of applying iterative process, I will divide my projects into five iterations, in which each iteration is two weeks long. The exception is the first iteration which I decide to take three weeks long. In the first iteration I have to prepare everything to form the foundation for next subsequent iterations. That's why I decide to make it a little longer than other iteration.
I started this project on Sep 1st, 2008. Based in the number of iteration and time-span in each iteration, here is my project schedule:
| Iteration No | Start/End DateM | Time-span |
| 1 | Sep 1st, 2008 – Sep 21st, 2008 | 3 weeks |
| 2 | Sep 22, 2008 – Oct 5th, 2008 | 2 weeks |
| 3 | Oct 6th, 2008 – Oct 19th, 2008 | 2 weeks |
| 4 | Oct 20th, 2008 – Nov 2nd, 2008 | 2 weeks |
| 5 | Nov 3th, 2008 – Nov 16th, 2008 | 2 weeks |
Platform
This is a .NET Framework 3.5 SP1 and ASP.NET MVC web project, which is currently running in Windows environment. SP1 has to be installed because ASP.NET MVC relies heavily on it. Currently ASP.NET MVC is available as separate package from .NET Framework. If in the future ASP.NET MVC is packaged as integral part with .NET Framework, we won't need separate ASP.NET MVC installation.
On the back-end, I use Microsoft SQL Server 2005 database server. This decision is made because I use LINQ to SQL which currently only works on SQL Server 2005. However, the architecture has been made very flexible. We can provide data sources other than LINQ to SQL as long as we provide repository for the data source.
Modeling Tools
For the analysis and design phases, we certainly require some modeling tools to draw diagrams. I'm using UML as primary modeling language. There are many tools available on the market, free or commercial, which we can use for UML modeling. So far, I'm happy with Enterprise Architect 7 from Sparx System (EA). However, I also need Microsoft Office Visio to draw other kind of diagrams not available in EA.
Development Tools
Visual Studio 2008 (VS 2008) is my choice for developing ASP.NET MVC web application with LINQ to SQL, using C# 3 programming language. On the database side, I won't need any tool to develop database objects. Data Definition Language (DDL) queries are generated by EA. I also won't work with stored procedures anymore, since all data access queries will be constructed on-the-fly by LINQ to SQL. However, I still need Query Analyzer from Microsoft SQL Server 2005 package to monitor query execution from LINQ to SQL to the actual database. When developing with LINQ to SQL this tool should become your companion to monitor whatever fired to database by LINQ to SQL.
Conclusion
CommunityBlog is a multi-user and multi-blog blog engine build on top of Microsoft .NET Framework 3.5 SP1 using ASP.NET MVC architecture and LINQ 2 SQL as data access provider. It is a real world implementation of LINQ 2 SQL and ASP.NET MVC technologies by applying iterative process in doing the project. Enterprise Architect 7 and Microsoft Office Visio will be used as primary modeling tools. Microsoft Visual Studio 2008 and SQL Server 2005 will be used as primary development tools.


