Как реализовать MVC через локальную сеть? - PullRequest
2 голосов
/ 23 августа 2011

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

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

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

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

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

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

http://myserver/myapp или * 1012.*http://192.168.100.100/myapp

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

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

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

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

3 голосов
/ 23 августа 2011

Насколько я понял 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 являются идеальными кандидатами .

Я предлагаю вам потратить время на скачивание и взглянуть на документацию mORMot . Это далеко от совершенства, но оно пытается быть полным. В документе SAD вы найдете несколько страниц об архитектуре, которую мы реализовали, в частности, MVC, n-Tier, SOA и ORM. Не бойтесь 1000 страниц PDF - вам не нужно читать все это: я только добавил несколько общих диаграмм, которые могут помочь вам моделировать ваше решение.

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

...