Как логика базы данных должна храниться на веб-сайте? - PullRequest
1 голос
/ 23 августа 2010

Я новичок в веб-разработке и создаю мини-проект на простом сайте социальной сети.

Я использую ASP.NET с C # и SQL Server 2008 Express.

Я читал статьи о том, как следует стремиться создать слой доступа к данным (DAL) для используемой базы данных. Одним из методов является создание строго типизированных наборов данных и адаптеров с помощью инструментов конструктора, предоставляемых Visual Web Developer.

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

Затем я прочитал о том, как неразумно хранить наборы данных в переменных сеанса. Моим первым впечатлением было то, что после входа в систему я мог создать экземпляр своего строго типизированного набора данных, заполнить его, а затем сохранить его в объекте сеанса для использования на различных страницах.

Итак, как мне это сделать? Должен ли я создавать и заполнять свой экземпляр набора данных при каждом доступе к странице? Должен ли я вызывать Update () на каждом выходе страницы?

Извините, если я выгляжу так, будто чувствую себя в темноте, но я в замешательстве ... даже после долгих поисков.

EDIT: Для тех, кто интересуется подробностями, я разместил комментарий, но решил включить его и здесь:

Но это относительно маленький сайт. Регистрация, логин, приглашение друзей и список друзей, сообщения друзей, страницы профиля. Это все. Кроме того, это будет единственный веб-сайт, который я разрабатываю в течение долгого времени, поэтому я не хочу, чтобы СЛИШКОМ увлеклись удивительными практиками

Ответы [ 3 ]

0 голосов
/ 23 августа 2010

Вы должны быть как можно без гражданства. Хранение большого количества материала в сеансе вредит производительности и масштабируемости вашего сайта.

Может быть, если бы вы могли привести нам конкретный пример, мы могли бы дать вам больше информации о возможном решении?

В любом случае, попробуйте прочитать это в свободное время, это интересный и независимый от языка (хотя его примеры в java и c #) взгляд на архитектуру программного обеспечения: альтернативный текст http://ecx.images -amazon.com / images / I / 511D6FdsbXL.jpg

0 голосов
/ 23 августа 2010

Что ж, вас может заинтересовать чтение этих статей: http://www.asp.net/web-forms/data. Лично я почти не использую наборы данных, а скорее использую шаблон Репозиторий в сочетании с пользовательскими объектами (модель предметной области) и использую ORM для отображения объекта базы данных (с Linq на Sql, Entity Framework или NHibernate).

Хранение большого количества данных в сеансе на самом деле не сделано. Я предлагаю вам хранить в Session только небольшие объемы данных и все, что является общим для всех пользователей, в объекте Cache .

Я также предлагаю вам прочитать книгу Домен-ориентированный дизайн: решение сложных задач в основе программного обеспечения Эрик Эванс.

0 голосов
/ 23 августа 2010

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

Я не знаю, насколько сложным является ваше приложение, но в большинстве случаев имеет смысл наличие бизнес-уровня.

Пусть ваш бизнес-уровень позаботится об обновлении ваших данных, предоставит методы, которые затем могут быть вызваны вашими страницами.

Если вам нужно больше исследовать, изучите принцип под названием « Высокая когезия и низкая связь »

...