Как реализовать MVC в локальной сети?


Я не хочу изобретать велосипед, поэтому спросите, как это делают другие...

У меня есть 2 предстоящих проекта, один на Delphi и один на PHP (плюс, возможно, один на Java), поэтому информация, относящаяся к ним, будет приветствоваться, но общий ответ также приемлем.

Итак, у меня есть несколько компьютеров и сервер баз данных (ODBC), и я хочу разработать приложение MVC.

Я предполагаю, что Модель находится на сервере d/b и что представление находится на каждом отдельном компьютере. Где находится контроллер? Один на д/б сервер или по одной копии на каждом компьютере?

При записи данных, я полагаю, достаточно заблокировать соответствующую таблицу d/b(?). Но как обновить все эти представления и сообщить им, что есть новые данные или что данные, над которыми они работают, были изменены при удалении другим пользователем?

Приветствуется любой код, а также URL-адреса или рекомендации по книгам... спасибо

Author: Mawg, 2011-08-23

2 answers

Предлагаю вам начать с этого

 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Это обычное приложение для внутренней сети, верно? почему вы хотите разделить все по отдельности? Модели, представления и контроллеры - это просто соответствующие файлы, в которых вы выполняете соответствующие действия, они физически не находятся в разных местах. Я думаю, что вы совершенно неправильно поняли концепцию mvc. MVC означает разделение и расслоение кода на основе их функций, не разделяя их физически.

Чтобы быть более понятным на языке непрофессионалов ваши представления моделей и контроллеры - это просто каталоги в вашем приложении. Ваши файлы представлений попадают в каталог представлений (не обязательно, однако, это можно изменить), ваши модели, то есть файлы операций, связанные с вашей базой данных, попадают в модели, а классы, которые управляют вашим приложением и управляют им, попадают в каталог контроллера.

Запустить его в интрасети очень просто. Все, что вам нужно сделать, это разместить свои файлы в системе со статическим IP-адресом или именем в вашей сети, а затем перейти из других систем перейдите в свой браузер и наведите его на

Http://myserver/myapp или http://192.168.100.100/myapp

Я ничего не знаю о delphi, но то, что я сказал выше, означает PHP и многие другие языки.

Таким образом, принимая во внимание все вышеперечисленные моменты, вы не собираетесь обновлять представления отдельно в каждой системе, все файлы находятся на вашем центральном сервере, и любые изменения, внесенные в них, автоматически отражаются по запросу клиентов.

От вашего вопрос я предполагаю, что вы совершенно новичок в веб-разработке или, по крайней мере, в mvc, поэтому сначала взгляните на некоторые простые mvc, такие как codeigniter в PHP. У CI очень хороший документ, так что вы можете войти в курс дела.

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

 4
Author: swordfish, 2011-08-23 03:16:59

Насколько я понял MVC, нет никакого правила о местоположении самого контроллера.

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

MVC - это шаблон , то есть, скорее, способ моделирование/взаимодействие объектов и классов, а не способ распределения вашего приложения по модулям. Фактически, вы можете (и IMHO должны) совместно использовать код MVC между клиентом и серверами, в то время как объекты по-прежнему реализуют модель/представление/контроллеры раздельно.

"Классическая" реализация MVC (например, используемая RoR или DOR или Relax в мире Delphi - как в состоянии черновика) использует каталоги или файлы для разделения представлений и контроллеров. Но это всего лишь один дизайн реализации этого шаблона.

У вас может быть чисто объектная ориентация MVC, как мы реализовали, например, в нашей структуре ORM. На самом деле у вас могут быть объекты повсюду, для обработки вашей модели, для доступа к базе данных, для обработки ваших бизнес-услуг.

В нашей платформе с открытым исходным кодом mORMot для Delphi 6-XE вы можете следовать следующей схеме разработки:

  • Уровень данных либо sqlite3 и/или внутренний очень быстрый база данных в памяти и/или любая другая внешняя база данных (через OleDB или OCI), большинство SQL-запросов создаются на лету ядром ORM;
  • Уровень логики выполняется с помощью чистого аспекта ORM: вы пишете классы Delphi, которые отображаются уровнем данных в базу данных, и вы можете написать свою бизнес-логику как на стороне клиента, так и на стороне сервера, просто добавив некоторые события или методы в классы; также доступна Сервисно-ориентированная архитектура (похожая на DataSnap), и может использоваться без какого-либо объекта;
  • Уровень представления - это либо клиент Delphi, либо приложение AJAX, либо любой другой сервер, способный взаимодействовать с помощью RESTful JSON по HTTP/1.1 - в этом случае клиенты PHP или JAVA являются идеальными кандидатами.

Я предлагаю вам потратить время на загрузку и взглянуть на документацию Мормота. Он далек от совершенства, но пытается быть полным. В ПЕЧАЛЬНОМ документе вы найдете несколько страниц об архитектуре мы внедрили, в частности, MVC, n-уровень, SOA и ORM. Не бойтесь 1000 страниц PDF - вам не нужно читать все это: я просто добавил несколько общих диаграмм, которые могут помочь вам смоделировать ваше решение.

Во всех случаях сделать вдох перед внедрением решения для вашего проекта - это очень хорошее решение. Время, которое вы потратите сейчас на изучение существующих архитектур, безусловно, избавит вас от боли в будущем. Хорошее начало!

 3
Author: Arnaud Bouchez, 2011-08-23 06:36:24