MVC for dummies

@KarandikarMihir

Front End Dev @Harbinger

SSE

3+ years of experience

Javascript, React, React Native

C#, F#, SQL Server

Microsoft Azure

GraphQL

First Name Last Name
SardarĀ  Khan
Ramadhir Singh
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['FirstName'] . "</td>";
    echo "<td>" . $row['LastName'] . "</td>";
    echo "</tr>";
}
echo "</table>";

mysqli_close($con);
?>

Database logic

Business logic + View logic

Database logic

But it works, right?

Not for real projects!

Why not?

Maintainability

Testability

Reusability

Security

MVC comes to rescue!

Separation of concerns

Code reusability

Cleaner code

Scalable

<?php
    function getPersonsFromDatabase() {
    
        $con=mysqli_connect("example.com","peter","abc123","my_db");
        // Check connection
        if (mysqli_connect_errno())
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        
        $result = mysqli_query($con,"SELECT * FROM Persons");
        
        mysqli_close($con);
        return $result;
    }
?>
<table border='1'>
<tr><th>Name</th></tr>
<?php
    foreach($users as $user)
    {
        echo "<tr>";
        echo "<td>" . $user['name'] . "</td>";
        echo "</tr>";
    }
?>
</table>
<?php
    if (!isAuthorized()) {
        return;
    }
    $users = getPersonsFromDatabase();
?>

Model

Controller

View

HTTP Server

Request

Response

Where the magic happens

HTTP Server

HTML Pages,

JSON/XML data,

Files

GET, POST, PUT, DELETE, HEAD, OPTIONS etc.

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["Title"] = "Home Page";
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

        public ActionResult About()
        {
            ViewData["Title"] = "About Page";

            return View();
        }
    }
}

Route Pattern: "{controller}/{action}/{id}"

GET http://server.com/home/about

GET http://server.com/home

Did we solve our problems?

Maintainability

Testability

Scalability

Security

Advanced topics

REST APIs

Single page applications aka SPA

GraphQL

Questions?

Thank you!

MVC for dummys

By Mihir Karandikar