Как реализовать MVC в локальной сети?
Я не хочу изобретать велосипед, поэтому спросите, как это делают другие...
У меня есть 2 предстоящих проекта, один на Delphi и один на PHP (плюс, возможно, один на Java), поэтому информация, относящаяся к ним, будет приветствоваться, но общий ответ также приемлем.
Итак, у меня есть несколько компьютеров и сервер баз данных (ODBC), и я хочу разработать приложение MVC.
Я предполагаю, что Модель находится на сервере d/b и что представление находится на каждом отдельном компьютере. Где находится контроллер? Один на д/б сервер или по одной копии на каждом компьютере?
При записи данных, я полагаю, достаточно заблокировать соответствующую таблицу d/b(?). Но как обновить все эти представления и сообщить им, что есть новые данные или что данные, над которыми они работают, были изменены при удалении другим пользователем?
Приветствуется любой код, а также URL-адреса или рекомендации по книгам... спасибо
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 очень хороший документ, так что вы можете войти в курс дела.
Надеюсь, я ответил на все вопросы.
Насколько я понял 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 - вам не нужно читать все это: я просто добавил несколько общих диаграмм, которые могут помочь вам смоделировать ваше решение.
Во всех случаях сделать вдох перед внедрением решения для вашего проекта - это очень хорошее решение. Время, которое вы потратите сейчас на изучение существующих архитектур, безусловно, избавит вас от боли в будущем. Хорошее начало!