We are going to build together a web application, using the MVC pattern and Entity Framework. Data Centric because, as I come from the Clarion world, the logical process for me is to start by defining the data structure before starting to define a User Interface and start coding. There is nothing wrong doing things differently, it just seems to “flow” more naturally for me that way.
What tools you need to follow along?
We will be using the latest Web technologies existing today in the Microsoft world. If you don’t already have a version of Microsoft Visual Studio, I suggest to download Microsoft Visual Studio 2012 for Web, or the equivalent 2013 preview. If you already have an Express version of Visual Studio, be sure to have the Web Version. The other versions, Professional, Enterprise and Ultimate will all have the required features.
To see what’s happening under the hood, have a better understanding and eventually debug the html side of things, we need a tool allowing us to spy on our html communications. So I suggest that you download “Fiddler”. We will be using it quite a bit, in the beginning and later, from time to time.
The code itself will be shared on GitHub, but setting up Github on your machine with Visual Studio will be a step of this tutorial, so there is no point worrying about it now.
I may back track on this later if I see there something not working as expected, but I plan to use MySQL as a database. Not because I am specially in love with this particular database engine, but to show that, in contradiction with most other guides and tutorials, you have the choice to use the kind of data server you want, and are not tied to use exclusively MS SQL Server (Even if some things are easier with it); Besides, while being inferior to PostgreSQL, MySQL is the most used database engine for Web applications, so it seems to make sense to use it. You don’t need to install MySQL right now, we will do that in due time.
What application are we going to build?
The plan is to build what I name a “Personal Challenge Accountability Program” ( I hope our collective brain will be able to come up with a better name!). The idea is that, to achieve a project (challenge), a great help is to tell others and keep them updated on your progress.
Say that the project is to loose 30 pounds in 60 days. You tell some people that’s what you want to do, and “peer” pressure” will be there to keep you on track. Each day, you tell them what you did (good AND bad), note your results, and your intent for the next day (Or week, it does not have to be every day). Now, the challenge could be just as well to write and deploy your first Web Application in 3 months, the principles of “Personal Accountability Program” would stay the same and work just as well.
It seems to me that a great way to tell the world (or just a filtered group of friends), in this high tech cyber world we all live in, is an Internet Application.
So that is the starting idea we will work on, obviously your input is more than welcome.
The way I see it, this application obviously requires some kind of database, registration, public and restricted access to selected people, calendar, etc. Not overly complicated, but enough to be a “real world” application, quite typical of many web tools, and maybe interesting enough to get some real use.
Tutorial Table of Content (Subject to changes)
So, what’s the plan, and what are we going to learn along the way? Obviously, nothing is casted in stone here, as I need your input to help me to decide on which subject we need to spend more time, but here it is, for now:
Stateless nature of HTTP, what it means. GET and POST. Browser, Server, what each does and do not do. Modern browsers and their capabilities
MVC Introduction. Why this pattern, differences with more traditional approaches
Entity Framework Introduction, Code First, Similarities between Code First and, for example, the Clarion Dictionary.
Coding the data classes, relation to the actual database, Introduction to Migrations
Scaffolding, Controllers and Views
CSS to make it look better
Security, restricted access
Deployment of a Web Application
These are the main points, but in between and in no particular order, we will be talking about Version Control (with Git), using NuGet, LinQ, Tasks and Parallel programming, Open Source, some JQuery libraries, and so on.
There is a lot of material to cover, and it will not be possible to dig into each one of those different tools and technologies. The goal of this tutorial is to guide you on starting your own journey in web programming, not to explore in depth all possibilities. As with any projects, choices will have to be made. I’ll do my best to explain the reasons, but, again, I am not going to dig into alternatives where they exists. Where it make sense, I will point to books or web posts, so that you can explore by yourself.
What I will be striving for in this tutorial, is to give you a good “taste” for MVC 4.0 Web Application development, saving you time in regards to a lonely exploration. I will try to show you a molehill where one is, and not a mountain, but there are also mountains, and I am not going to climb them for you….The good news is, most of the time, you don’t HAVE TO climb the mountain, just to know where the pass is…
If you are interested by this tutorial, and wish to quickly know when a new step is published, I invite you to subscribe to email updates : Subscribe to BGSoftFactory “Le” Blog by Email
Thank you in advance to use comments to react, let us know what you like and want, let us know about difficulties you may have. I hope to make this tutorial as interactive as possible.