Абстракция DataLayer (DAL) трехуровневого приложения - PullRequest
0 голосов
/ 18 сентября 2010

В качестве продолжения моего предыдущего вопроса (см. /2979177/sozdanie-slabosvyazannoi-masshtabiruemoi-programmnoi-arhitektury

) Кто-то предлагает также абстрагировать DAL, как я абстрагировал BLL из уровня представления в моем трехуровневом проекте. Любое предложение о том, как это сделать«Мне также нужна фабрика между BLL и DAL? Мне нужны ваши входные данные, ребята .. спасибо.

1 Ответ

2 голосов
/ 20 сентября 2010

Интересно - я бы поставил абстракцию между BL и DAL, прежде чем я сделаю это для уровня представления.

Подход, использованный в вашем другом вопросе, кажется разумным - почему бы вам просто не использовать это снова?

  • Да, вам нужна фабрика; но вы можете включить это в общий класс / сборку и заставить его просто возвратить object, который затем можно будет разыграть, когда он будет возвращен - т.е. в точке BL, где он вызывается.
  • (для полноты :) использование Activator.CreateInstance() (как вы уже использовали в своем другом вопросе) - правильный путь.
  • Для DAL я склонен использовать значения, хранящиеся в конфигурации (в качестве аргументов для передачи на фабрику); нередко часто меняют реализацию DAL - так что конфиг у меня хорошо работает.
  • При проектировании подрядчика / абстракции между BL и DAL соблюдайте Принцип разделения интерфейса (ISP) - если вы все сделаете правильно, вы сможете смешивать и сопоставлять различные физические реализации DAL на один раз.
  • Если вы храните DTO и фабрику в общей сборке (возможно, в той же самой), то их легко повторно использовать с BL и различными реализациями DAL - с предупреждением , что вы сохраняете это общее класс, лишенный зависимостей, как возможный. Если вы сделаете это, вы сможете добавлять / обновлять реализации DAL без повторной компиляции и повторного развертывания всей системы.
...