2012-01-05 3 views
3

Я довольно новичок в ColdFusion ORM, и у меня есть некоторые вопросы, на которых я надеялся получить помощь.Использование ORM со строкой MVC Framework

Я работаю над фреймворком, который использует довольно стандартную и строгую архитектуру MVC. Эта структура также имеет «сервисный уровень», который находится между контроллером и моделью. Уровень сервиса обрабатывает всю бизнес-логику и проверку.

Стандартный процесс CRUD выглядит следующим образом:

пользователь отправляет форму через представление -> вид представляет на контроллер -> контроллер посылает на уровне услуг для обработки -> уровень службы может выполнять любая бизнес-логика и проверка на запрос -> уровень сервиса затем отправляет данные модели -> модель запускает транзакцию с EntityNew() и EntitySave() -> модель, а затем отправляет обратно ответ с идентификатором обратно на уровень обслуживания -> уровень сервиса применяет некоторую логику и создает сообщение для пользователя -> уровень обслуживания, чем отправляет ответное сообщение контроллеру -> контроллер затем отправляет его в представление -> представление затем отображает его пользователю.

Этот процесс работает хорошо, и я доволен разделением ролей. Он сохраняет всю логику от представления, контроллера и модели и изолирует его на уровне обслуживания.

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

Еще одна вещь, о которой я не уверен, - это то, что мне нужно заполнить выпадающее меню в представлении из базы данных. Я запускаю EntityLoad() прямо в представлении, чтобы получить данные для раскрывающегося списка. Опять же, это технически идет вокруг модели для связи с базой данных через ORM.

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

Просто пытаюсь обдумать вокруг этого.

Любая помощь по этому вопросу будет принята с благодарностью.

Заранее спасибо.

ответ

3

На мой взгляд, использование ORM прямо из сервисного уровня в порядке. Вероятно, нет веской причины отвлечься дальше. Подумайте о функциях ORM как шлюзе или DAO. Вы можете поместить эти функции в шлюз или DAO, если вы действительно этого захотите, некоторые делают.

Использование ORM непосредственно с его просмотра, однако, неверно. Не делай этого. Есть несколько лучших способов справиться с этим.

  • Имейте данные, которые вам нужны, с другими данными, чтобы построить страницу с контроллера (что говорит с моделью).

  • Сделайте удаленный вызов из представления на сервисный уровень (Ajaxy), чтобы получить данные.

Возможно, существуют (возможно?) Другие способы его обработки. Но суть в том, что ваш взгляд не должен разговаривать с уровнем модели.

+0

спасибо за помощь. Я собираюсь переработать способ доступа к базе данных. еще раз спасибо – Sequenzia