This is the first article of a series of articles which will target building application using ASP.NET MVC Framework. The purpose of this series it to put spotlight on the ASP.NET MVC framework and explore popular third party tools. These tools include NHibernate, Subversion, Git etc. The series will also cover unit testing more specifically behavior driven development.
Why ASP.NET MVC Framework?
ASP.NET MVC Framework is build on top of the MVC design pattern which allows separation of concerns and easy testability. The MVC Framework is usually an ideal choice for large scale applications where the lifetime of the application is spread to a number of years.
If you have performed development in WebForms environment then you are already familiar with the idea that how hard it is to test different components of the page. This is because the business logic is very tightly coupled with the user interface code. The MVC Framework breaks this tight coupling and allows the developer to easily test the components.
We wanted to choose an application domain which is closely related to the real world. Blogs and forums though real are not that complicated to build. For this reason we picked a school domain where students take their exam.
The users of the domain are students, teachers and admin. Teachers have the ability to upload a custom exam for their course. Students enrolled in classes are presented with the exam. Once, the exam is submitted it is graded according to the options specified by the teacher. These are just the few features of the application. More features will be discussed and implemented during the course of this article.
The application will also exhibit the use of build automation, unit testing, source control system etc. This will be a learning experience for both the reader as well as the author of this series.
This article outlines an upcoming series which will demonstrate how to build an ASP.NET MVC application. The series will exhibit different technologies and practices including NHibernate, behavior driven development, build automation, source control management etc.