Вопрос архитектурного / дизайнерского образца - PullRequest
2 голосов
/ 26 февраля 2011

Итак, вчера у меня и моего друга возникли сомнения по поводу архитектуры этого сайта для электронных покупок, который я сейчас разрабатываю.Обратите внимание, что я работаю с ASP.NET для этого.Он был очень удивлен, узнав, что я не сохраняю товары, добавленные в корзину, в ArrayList или другом универсальном списке, а скорее вставляю их прямо в базу данных с помощью LINQ To Entities.Могу ли я пройти только для этого веб-приложения и не использовать n-tyre, или я должен делать то, что предложил мой друг: есть методы, которые выполняют обновления, удаления и т. Д. Я очень ценю ваши отзывы, так как это очень важная для меня дилемма.Спасибо!

Ответы [ 2 ]

4 голосов
/ 26 февраля 2011

Я думаю, что здесь нужно подумать о двух вещах:

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

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

Во-вторых, следует ли вам бросать эти вещи вБаза данных, как пользователь добавляет вещи в корзину.Я не думаю, что это обязательно проблема n-teir.Поездки в БД являются дорогостоящими, особенно когда вы можете просто хранить их на стороне клиента / сеанса до тех пор, пока ...


С учетом сказанного, мне лично нравится использовать уровень доступа к данным, и я считаю, что он делаеточиститель кода, и он заставляет вас стандартизировать, как вы получаете доступ и изменяете свои данные.Вместо того, чтобы каждый класс / метод мог изменять данные в режиме adhoc, они должны делать это через четко определенный набор интерфейсов на уровне DAO, которыми вы можете управлять, проводить аудит и т. Д. Используя уровень DAO, это также помогает имитировать объект, которыйнеоценимо, когда дело доходит до тестирования.

Ссылки для разработки N-Teir:

  1. Сначала просто поймите, чего вы пытаетесь достичь!
  2. Что такое архитектура N-Teir
  3. Учебник Asp.net
  4. MSDN по разработке приложений (от N-уровня до.NET)
2 голосов
/ 26 февраля 2011

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

Это правильное резюме?

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

Но я не согласен с комментарием о чрезмерной инженерии. Многоуровневую архитектуру не так сложно построить. Он централизует вашу логику постоянства в одном четко определенном пакете, который вы можете протестировать отдельно и отложить в сторону.

В многоуровневом подходе много достоинств. Вся разработка - это проблема управления сложностью путем разделения больших задач на более мелкие, более управляемые. Мы используем объекты и пакеты для этого. Я думаю, что это лучший подход по мере роста вашей системы. Это одна из причин, почему клиент / сервер не так широко используется, как это было 15-20 лет назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...