Лучшие практики Entity Framework с приложением asp.net webforms

Я создаю приложение asp.net на платформе .net 4.0, и я буду использовать Linq для сущностей (Entity Framework) в качестве моей модели DataModel (DAL), мой шаблон проектирования будет трехуровневым слоем, где Entity Framework будет DAL слой.

Мой вопрос: должен ли я иметь слой BLL для моих таблиц, чтобы я работал с ним из уровня представления (мои страницы), где я вызываю свои функции выбора, вставки, обновления и удаления, или лучше вызвать Entity Framework непосредственно в мой презентационный слой?


person Ali Issa    schedule 05.04.2012    source источник


Ответы (1)


Это зависит от приложения; слои не определены, потому что они хороши, слои определены, потому что они необходимы.

Если ваше приложение большое и бизнес-правила часто меняются, то создайте слой BLL. В остальном, ИМХО, это просто сверхинженерия. Масштаб вашего приложения и скорость изменений должны быть вашей главной заботой при принятии решения.

Обратите внимание, что если вы вызываете EF напрямую, ваши бизнес-правила будут находиться внутри вашего уровня представления. Если они подлежат изменению, то рефакторинг уровня представления будет беспорядочным, а возможность повторного использования будет ниже.

Но опять же, это зависит от масштаба вашего приложения, графика вашего проекта, скорости изменения бизнес-правил и других факторов.

person daryal    schedule 05.04.2012
comment
мое приложение является новостным порталом, и я не хочу повторять те же методы, как addarticle (), например, 2 или 3 раза, когда я могу сделать слой BLL для статей и заполнить его свойства, а затем вызвать метод Addarticle (), который будет выполнять остальная часть работы. - person Ali Issa; 05.04.2012
comment
Вы можете просто определить метод addarticle в презентации и повторно использовать его, это не означает реализацию бизнес-уровня. - person daryal; 05.04.2012
comment
вы совершенно правы, но разве это не значит, что мне придется 3 раза модифицировать этот метод, например, если позже я добавлю новое поле в таблицу? - person Ali Issa; 05.04.2012
comment
Не используйте один и тот же метод AddArticle во всех необходимых местах. Если вы его измените, он будет изменен для всех. - person daryal; 05.04.2012
comment
но это не изменит его во всех местах, если у меня есть AddArticle () в a.aspx и b.aspx, тогда мне придется изменить оба, я не хочу, чтобы это произошло - person Ali Issa; 05.04.2012
comment
Но в этом случае я ожидаю, что страницы тоже изменятся. Если метод addarticle принимает параметр article, вам не нужно его изменять? - person daryal; 05.04.2012