2014-12-26 4 views
0

Я проектирую систему с нуля. Я созерцая:сеансы пользователя с архитектурой DAL

  1. ли использовать DAL вообще против прямого доступа к БД (ОРМ, например)
  2. Если я использую DAL, я хранить/управлять своими пользовательскими сеансами непосредственно через мое приложение или в DAL ?

базовая архитектура клиент -> Приложение BackEnd -> DAL -> DB

ответ

0

Ваш Data Access Layer может использовать ORM инструмент (например, Hibernate (Java), NHibernate (.Net)), чтобы сделать доступ к базе данных , Нет проблем с этим. Вы могли бы абстрагировать funcionalities в модели слоя и реализовать его на DAL проекта, для образца:

public interface ICustomerPersistence 
{ 
    Customer Get(int id); 
    bool Save(Customer customer); 
} 

и реализовать его с помощью ОРМ или другой способ доступа к базе данных (ADO.NET или JDBC).

Используя инструмент ORM, у вас будет внутренний слой между вашим приложением и базой данных. С другой стороны, инструмент ORM может предоставить вам и вашей команде некоторые продуктивные сохраняющиеся объекты вместо написания SQL-запросов. В обоих случаях SQL должен быть чистым, чтобы обеспечить производительность. С инструментами ORM, вероятно, вам понадобится инструмент трассировки, чтобы увидеть команды SQL, созданные ORM. Для NHibernate существует NHProf.

Для второго вопроса, как вы должны реализовать. Большинство реализаций ORM, таких как Hibernate/NHibernate, контролируют объект ISession с верхнего уровня из DAL. Для примера, как хорошая оценка в веб-приложениях, ISession открывается в запросе на начало и закрывается в конец запроса. Иногда это также делает транзакция.

+0

Спасибо @felipe, я отредактировал первый вопрос для большей ясности. –

+0

Я добавляю еще немного контента. В любом случае, я рекомендую вам реализовать свой DAL с помощью инструмента ORM, но убедитесь, что вы знаете, что происходит, когда вы используете ORM. Не забудьте проверить, является ли это anwser, если он поможет вам найти решение. –

Смежные вопросы