Concept and Basics: It19 - Advance Programming
Concept and Basics: It19 - Advance Programming
NET MVC
CONCEPT AND
BASICS
6
Model
• Set of classes that describes the data we are working with
• Rules for how the data can be changed and manipulated
• May contain data validation rules
• Often encapsulate data stored in a database
• as well as code used to manipulate the data
• Most likely a Data Access Layer of some kind
• Apart from giving the data objects
• It doesn't have significance in the framework
7
• A model is a file of C# code and an associated data store, e.g., an SQL
database or XML file.
• The file of C# code manages all access to the application’s data through
objects.
• Linq to SQL and Linq to XML create queries into these data stores
• This can be direct
• More often it is done through objects that wrap db tables or XML files and have one
public property for each attribute column of the table.
FirstMVCDemo Model
namespace MvcApplication2.Models
{
public class FileHandler
{
public string path { get; set; }
public string[] files { get; set; }
public bool GetFiles(string pattern)
{
try
{
int pos = path.LastIndexOf("Home");
path = path.Substring(0, pos) + "Views\\Home";
files = System.IO.Directory.GetFiles(path);
return true;
}
catch { return false; }
}
}
}
View
• Defines how the application’s user interface (UI) will be
displayed
• May support master views (layouts)
• May support sub-views (partial views or controls)
• Web: Template to dynamically generate HTML
10
FirstMVCDemo View
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
12
FirstMVCDemo Controller
namespace MvcApplication2.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "First Model-View-Controller Demos";
return View();
}
return View();
}
14
The MVC Pattern for Web
HTTP Request
Front controller
/Some/Page/
(dispatcher)
Delegate request
User
Controller
HTTP Response CRUD
Select view &
model
pass data
View Model
(render UI) Use model data (data)
15
MVC Frameworks
• PHP: CakePHP, CodeIgniter, Laravel
• Java: Spring
• Perl: Catalyst, Dancer
• Python: Django, Flask, Grok
• Ruby: Ruby on Rails, Camping, Nitro, Sinatra
• JavaScript: AngularJS, JavaScriptMVC, Spine
• ASP.NET MVC (.NET Framework)
16
ASP.NET MVC
ASP.NET Core
ASP.NET ASP.NET Presentation
WebForms MVC
ASP.NET
Caching .NET Globalization
18
ASP.NET Web Forms
• Stable and mature, supported by heaps of third party controls and
tools
• Event driven Web development
• Postbacks
• Viewstate
• Less control over the HTML
• Hard to test
• Rapid development
19
ASP.NET History
• Classic ASP introduced in late 1990's
• 2002 – ASP.NET 1.0 (Web Forms)
• 2008 – ASP.NET 3.5 (First version of MVC)
• Two more versions in next two years
• 2010 – ASP.NET 4 (VS 2010, MVC 2.0, Razor)
• 2012 – ASP.NET 4.5 (First version of Web API, VS 2012)
• 2013 – SignalR
• 2013 – Visual Studio 2013, One ASP.NET, MVC 5
• 2014 – ASP.NET vNext, Roslyn, OWIN, …
20
One ASP.NET
• Web Forms
• Component-based
• ASP.NET MVC
• Web Pages
• Lightweight framework for dynamic content
• Web API
• Framework for building RESTful Web services
• SignalR
• Real-time client-server communication
21
ASP.NET MVC
• Runs on top of ASP.NET
• Not a replacement for Web Forms
• Leverage the benefits of ASP.NET
• Embrace the Web
• SEO-friendly URLs, HTML 5, SPA
• Adopt REST concepts
• Uses MVC pattern
• Conventions and Guidance
• Separation of concerns
22
ASP.NET MVC (2)
• Tight control over markup
• Testable
• Loosely coupled and extensible
• Convention over configuration
• Razor view engine
• One of the greatest view engines
• With intellisense, integrated in Visual Studio
• Reuse of current skills (C#, EF, LINQ, JS, etc.)
• Application-based (not scripts like PHP)
23
The ASP.NET MVC History
• ASP.NET MVC 1.0
• Released on 13 March 2009
• ASP.NET MVC 2.0 (Areas, Async)
• Released just one year later, on 10 March 2010
• ASP.NET MVC 3.0 (Razor) – 13 January 2011
• ASP.NET MVC 4.0 (Web API) – 15 August 2012
• ASP.NET MVC 5.0 (Identity) – 17 October 2013
• ASP.NET MVC 6.0 – soon enough
24
ASP.NET MVC: Separation of
Concerns
• Each component has one responsibility
• SRP – Single Responsibility Principle
• DRY – Don’t Repeat Yourself
• More easily testable
• TDD – Test-driven development
• Helps with concurrent development
• Performing tasks concurrently
• One developer works on views
• Another works on controllers
25
Extensible
• Replace any component of the system
• Interface-based architecture
• Almost anything can be replaced or extended
• Model binders (request data to CLR objects)
• Action/result filters (e.g. OnActionExecuting)
• Custom action result types
• View engine (Razor, WebForms, NHaml, Spark)
• View helpers (HTML, AJAX, URL, etc.)
• Custom data providers (ADO.NET), etc.
26
Clean URLs
• REST-like URLs
• /products/update
• /blog/posts/2013/01/28/mvc-is-cool
• Friendlier to humans
• /product.aspx?catId=123 becomes
/products/chocolate/
• Friendlier to web crawlers
• Search engine optimization (SEO)
27
MVCHTTPPattern
Request
in ASP.NET MVC
Web ASP.NET MVC
/Users/Ivo/
server Routing engine
Select controller and
invoke action (method)
User Controller
HTTP Response
(C# class)
(HTML, File, JSON, …) Select view & CRUD
pass data (model) model
30
The Technologies
• Technologies that ASP.NET MVC uses
• C# (OOP, unit testing, async, etc.)
• ASP.NET
• HTML(5) and CSS
• JavaScript (jQuery, Bootstrap, AngularJS, etc.)
• AJAX, Single-page apps
• Databases (Microsoft SQL Server)
• ORM (Entity Framework and LINQ)
• Web and HTTP
31
Visual Studio 2012: New Project
32
Default Layout for ASP.NET MVC
Apps
33
Visual Studio 2013: New Project
34
VS 2013: Default Layout
35
Internet App Project Files
Static files (CSS, Images, etc.)
View templates
38