Где писать базу данных и бизнес-логику в MVC?
Поскольку я изучаю и работаю над приложением ASP.NET MVC, я хочу знать, что лучшее место для написания Business Logic
и Data Access logic
в MVC
.
Где я должен писать DataAccess и Business Logic среди трех уровней (Model, View and Controller
)??
Может кто-нибудь, пожалуйста, скажите мне правильный способ написать код для этого.
Сценарий: я хочу retrieve all the employees where employee name like 'Mi%'
(у меня SQL procedure to execute and retrieve the data.
)
PS: Хотите знать, где я должен создать экземпляр класса Business Logic и где я должен создать экземпляр класса слоев доступа к данным?
Спасибо заранее.
Ответы
Ответ 1
Бизнес-логика должна быть в Модели.
Доступ к данным может быть либо собственным, либо вашим вызовом контроллеров, либо автоматическим в ORM, который ваш контроллер вызовет через репозитории.
Прозрачное покрытие можно найти в Nerd Dinner, найдите скачать бесплатно.
Ответ 2
Бизнес-логика (BL) и доступ к данным (DAO) должны быть в отдельных слоях. Модели должны сохранять только данные и не содержать никакой логики. Контроллер должен получать данные только от просмотра и отправлять его на уровень BL (или отправлять из BL для просмотра).
Это не строгие правила, а самый последний использованный подход
Ответ 3
В представлении указывается код интерфейса.
Контроллер - это место, которое соединяет представление с моделью.
Модель хранит бизнес-логику и, возможно, доступ к базе данных. (Некоторые ORM-уровни могут использоваться также)
Ответ 4
Вы можете полностью пропустить трехуровневое мышление и пойти на другой способ мышления;
Действия пользователя; который отправляет команду или событие в фоновое обслуживание. Фоновая служба, которую вы можете запустить в процессе, для стартеров. Фоновая служба публикует события, опять же, в памяти. Вы создаете несколько мнений, которые подписывают событие из справочной службы. Каждый просмотр имеет событие "последний раз"; это целое число. Каждый из них запускает все последующие события из "глобального журнала".
Представления отбрасываются, потому что у вас есть глобальный журнал событий/команд из графического интерфейса и из фоновой службы, и во всяком случае они будут читать все пропущенные события.
Это эквивалент "сделать что-то, и я ожидаю увидеть это" изменение "в этом другом представлении". У вас также есть:
Взаимодействие - это когда у вас есть один или несколько событий из графического интерфейса или фоновой службы, и вы позволяете некоторым игрокам, скорее всего, Saga, выполните какое-либо действие, возможно, с компенсациями, основанными на других событиях, если действие не выполнено.
Кроме того, я рекомендую просматривать эту презентацию