logo
Проектирование инт-прил / лекции / Проектирование инет приложений

КонцепцияMvc

MVC=Model-View-Controller= одна из возможных русскоязычных интерпретаций термина выглядит как "Модель - Представление - Поведение".

Основная идея концепции заключается в том, чтобы разделить между собой данные, взаимодействие с пользователем (реакция на его запросы) и представление этих данных на экране пользователя. Поскольку все эти шаги разделяются между собой - то появляется ряд преимуществ. Например, можно изменить внешний вид Web-приложения, не меняя ничего больше. К одной модели присоединить несколько видов, отображая одни и те же данные в виде таблицы, графиков, гистограмм - содержимое самой модели при этом не меняется. Не затрагивая реализацию видов, можно изменить реакцию приложения на действия пользователя (работа с клавиатурой или мышью), для этого достаточно изменить контроллер.

Состоит из трех компонентов:

Как представления, так и контроллеры зависят от модели. Модель в свою очередь не зависит ни от чего. Таким образом, модель можно строить без учета того, как это все будет выглядеть на экране. И одной и той же модели придавать несколько вариантов внешнего вида.

MVC- это концепция, она не зависит от конкретного языка, реализующие данную концепцию программные пакеты (framework, русскоязычные термины - "каркасы", "шаблоны") существуют практически во всех языках программирования. ИспользованиеMVCпозволяет создавать (и сопровождать) очень большие приложения и гибкие приложения, работа с которыми без примененияMVCбыла бы сложна.

    1. PHP

Название происходит от первых букв PersonalHomePage. На сегодняшний день название расшифровывают какPHP:HypertextPreprocessor, "препроцессор гипертекста". Из самого термина вытекает, что по структуре своейPHPпредставляет собой некую программную систему, через которую предварительно проходит исходный текстHTMLперед выдачей его клиенту. Язык программированияPHPотличается тем, что его код может быть встроен напрямую в текстHTMLстраницы. При этом две части кода - выполняемая на серверной стороне и выполняемая на клиентской стороне - могут идти в странице друг за другом. Однако выполняться они будут - и в разное время, и в разных местах.

<html>

<head>

<title>Тестируем PHP</title>

</head>

<body>

<!-- Этот кусок кода будет выполняться на серверной стороне -->

<?php

echo 'Hello, world!';

?>

<!-- А этот кусок кода будет выполняться на стороне клиента -->

<script language="javascript>

alert("Hello, world!");

<script>

</body>

</html>

Стандартным механизмом включения скрипта PHP в HTML документ является использование тэгов <?php и ?>. Как правило, препроцессор поддерживает еще несколько видов тэгов: <? и ?>, <script type="text/php"></script>. Однако стандартом оговорено использование только первого способа. В любом случае, эти тэги отрабатываются - препроцессором PHP, а не браузером. До браузера они вообще не дойдут, в выдаваемой пользователю странице их не будет. Если, конечно, препроцессор настроен корректно и если эти строки не закомментированы полностью. PHP является кросс-платформенным языком, на его основе можно создавать различные приложения. Начиная от CGI и выполняющихся из командной строки утилит и заканчивая графическими приложениями, для чего в языке существуют "обертки" нескольких библиотек виджитов: Qt, Gnome (GTK) и других. PHP имеет достаточный набор функций и является объектно-ориентированным языком программирования. Кроме встроенных функций, существует великое множество расширений, позволяющих из языка PHP работать с электронной почтой, офисными документами, сокетами, файловой системой, архивами и так далее.

Применительно к Web-приложениям, возможны следующие варианты использования языка PHP:

    1. Python

Название не имеет ничего общего со змеей и берет свое начало от британского комедийного телешоу. Язык достаточно старый, его разработка началась еще в конце 80х годов голландцем Гвидо Ван Россумом. Считается, что Pythonимеет свою философию, называемуюTheZenofPython("Дзен питона").

Текст этой философии выводится интерпретатором в ответ на команду importthis;

Синтаксис языка построен таким образом, чтобы специально затруднить написание нечитабельных программ. Отличительной особенностью языка является обязательное использование отступов при форматировании блоков кода. Несмотря на "старость" языка, он является очень современным вследствие его популярности: новая версия выходит примерно раз в 2-3 года. Pythonявляется одновременно и интерпретатором, и компилятором. Основной единицей является модуль, логически завершенный блок программы. Если данный модуль не менялся и для него существует скомпилированный байт-код - выполняется последний (имеет расширение .pyc). Если не существует или устарел - сначала выполняется компиляция, потом выполняется сгенерированный байт-код. Компиляторов существует несколько, наиболее распространенный из них -CPython. Отдельных процессов компиляции и компоновки нет, компиляция происходит "на лету", что позволяет экономить время при написании программ. Однако наличие компиляторов в байт-коды не исключается возможности работы чисто в режиме интерпретатора, прямо из командной строки.

Существует несколько MVC-фреймворков для реализацииWeb-приложений наPython. Вероятно, самым популярным из них являетсяDjango. Но не единственным: есть еще событийно-ориентированный фреймворкTwisted, естьWeb2Py,Pylons,Pyramidи другие.

    1. Java

Авторство языка - SunMicrosystems(ныне -Oracle), официальная дата выхода - 23 мая 1995 года. Назван в честь марки кофе по имени одноименного острова, где этот сорт кофе производится. Поэтому эмблемойJavaявляется дымящая чашка кофе.

Идеология создания языка Javaвключала в себя 4 постулата:

Иными словами, Javaизначально разрабатывался как мультиплатформенный и как сетевой язык.

Из-за наличия двух ступеней (текст программы -> компиляция -> байт-код, байт-код -> интерпретатор -> исполняемые машинные коды) за языком Javaпрочно закрепилась репутация медленной, ресурсоемкой технологии. И в первых версиях языка (точнее - виртуальной машиныJava) это утверждение имело под собой реальные и серьезные основания. Но в последнее время, в силу ряда факторов, производительностьJavaлишь незначительно уступает бинарным кодам, скомпилированным с языка С++. А именно, на производительности отразились следующие факторы:

Вообще говоря, называть Java"языком программирования" вряд ли правильно, скорее,Java- это "технология программирования". Существует несколько вариантов распространения программного обеспеченияJava.

Язык Javaна серверной части может быть применен несколькими способами. Для него тоже существуютMVCфреймворки:Play,Springи другие. Но на этом возможности его применения в качестве серверного программного обеспечения не заканчиваются.