OffTopic: Считаете ли вы HTML + CSS + веб-сервер MVC? - PullRequest
1 голос
/ 06 ноября 2008

это просто мои чудеса, и я решил поделиться ими ...

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

Если вы уже видите, куда я иду, мне очень интересно услышать ваше мнение по этому вопросу. Конечно, MVC относится к механике на стороне сервера и всем остальному, но подумайте здесь из коробки со мной на секунду.

"Посетители" сети, люди и роботы / Google, скорее всего, увидят HTML и все, что с ним связано. Написание структурированного и осмысленного HTML вместе с отделением его от представления с использованием CSS с годами становится все более важным, и будущая технология, такая как HTML5, только способствует этому разделению, предлагая более ориентированный на контент набор элементов и механизмы для работы с чисто визуальное представление.

Учитывая все это, мне было интересно, было бы правильно как-то сказать, что парадигма MVC применима и к внешнему интерфейсу, где:

  • Модель будет HTML, как в чистом httpwise содержимом, которым она стала
  • Вид, являющийся CSS; это делает ваш контент представлен определенным образом
  • Контроллер, являющийся веб-сервером и всем, что находится под ним, это то, что собирает и разделяет модель и представление, и принимает все решения

Имеет смысл? Не

Спасибо

Martin

Обновление: VonC указал мне на статью, которая определенно изменила мои мысли о контроллере. Браузер также занимает большую часть контроллера, поскольку он в значительной степени обрабатывает взаимодействие с пользователем и взаимодействие между моделью и представлением.

Ответы [ 5 ]

4 голосов
/ 06 ноября 2008

Как правило, вы можете найти MVC в любом месте, если посмотрите достаточно внимательно.

1 голос
/ 06 ноября 2008

Я понимаю вашу точку зрения, но я думаю, что я бы описал HTML-CSS-сервер / браузер скорее как просмотрщик документов, а не как MVC. Если весь контент статический, то это выражение модели, правда, но модель встроена в разметку. Несмотря на то, что я могу переопределить это с помощью CSS, CSS на самом деле является просто фильтром для базовой презентации, описанной в HTML. HTML описывает вид данных, а также сами данные. Конечно, я могу отключить CSS, и у меня все еще есть представление данных. В MVC это невозможно.

Существует также тесная связь между вашим HTML и вашим CSS - оба должны быть очень осведомлены о другом. Это нарушает ключевую парадигму MVC, где компоненты слабо связаны. В частности, представление не налагает ограничений на модель (кроме ограничения на просмотр данных). Разработчики HTML вынуждены работать в домене CSS или изменять CSS, чтобы сделать его применимым к домену HTML.

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

Это не делает его плохим или бесполезным. Не все должно быть MVC. MVC просто описывает один конкретный способ организации ваших данных и кода. Он обладает некоторыми особыми преимуществами в отношении несвязанной архитектуры и тестируемости, но это не значит, что это единственный действительный доступный архитектурный шаблон.

Статический HTML-контент, на мой взгляд, не является MVC и не должен быть.

[РЕДАКТИРОВАТЬ] Я не утверждаю, что вы не можете использовать MVC в дизайне браузера или что MVC не применим для отображения статического контента в браузере. Я действительно смотрю на это с точки зрения поставщика контента, а не программиста браузера. MVC может быть вполне логичным выбором для дизайна браузера.

1 голос
/ 06 ноября 2008

Нет, вроде ...

Ваш HTML-код также находится на уровне представления (представление), хотя ваш CSS-файл должен содержать такие особенности представления, как шрифты, цвета и т. Д.

Ваша модель должна содержать ваши данные + бизнес-логику, и я действительно не надеюсь, что вы захотите хранить их в HTML - это для реальных языков программирования, хранимых процедур и СУБД для обработки. И они должны быть на стороне сервера.

Но, следуя вашему образу мышления, я бы предложил:

  • Модель: Серверные программы + СУБД
  • Просмотр: HTML + CSS
  • Контроллер: веб-сервер
1 голос
/ 06 ноября 2008

Я бы согласился, хотя можно поспорить о контроллере.

Джефф иллюстрирует, что указывает в своем посте , с ZenGarden

С:

  • Модель = HTML
  • View = CSS
  • Контроллер = Браузер (который более «передний», чем веб-сервер)

На самом деле, это правильная перспектива со стороны на стороне клиента .

Со стороны сервера (сервер более сложный, чем простой сервер html-страниц), MVC будет другим.

С ASP.Net, например ;

  • Модель = вся логика вашего приложения, которая не содержится в представлении или контроллере. Модель должна содержать всю бизнес-логику вашего приложения и логику доступа к базе данных. Например, если вы используете LINQ to SQL для доступа к вашей базе данных, вы должны создать классы LINQ to SQL (файл dbml) в папке Models
  • Просмотр = HTML-разметка и контент, отправляемый в браузер, плюс сценарии
  • Контроллер = отвечает за контроль взаимодействия пользователя с приложением MVC. Контроллер определяет, какой ответ отправлять обратно пользователю, когда пользователь делает запрос браузера. Контроллер - это просто класс (например, класс Visual Basic или C #).

Это перспективный сервис MVC

0 голосов
/ 06 ноября 2008

CSS определенно не вид. Скорее рендеринг браузером (который объединяет ввод HTML / DOM и CSS в 2d макет) является представлением. HTML / DOM - это модель. Контроллер наполовину встроен в пользовательский интерфейс браузера, но может быть расширен с помощью JavaScript.

Это правда, что CSS считается уровнем представления , когда речь идет о разделении контента / представления - однако это другая (ортогональная) модель.

В MVC CSS является частью модели наряду с HTML / DOM, потому что это базовые данные, которые могут отображаться в разных представлениях. Например, макет печати представляет собой отдельный вид, основанный на той же модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...