Независимый дизайн DAL - специфический и общий

2

Сценарий: создание приложения для учебных целей и попытка сделать его независимым от базы данных.

Я рассмотрел архитектуру пива совсем немного, где каждая база данных имеет свою собственную dal смесь SqlCommands и DataReaders и т.д. Я не уверен, что это правильно или неправильно, но в целом с точки зрения обслуживания, скорости и т.д. что архитектурная сторона приложений .net для меня совсем нова, вы бы склонялись к тому, чтобы пересказывать свои собственные специфические классы, такие как пивная или использовать что-то вроде dbProviderFactory, где уже есть много функций?

Есть ли какие-либо плюсы и минусы с использованием общих классов в System.Data.Common, таких как DbCommand, DbDataReader, против конкретных классов SqlCommand, SqlDataReader и т.д.

Спасибо заранее.

  • 0
    Независимость базы данных переоценена. Но если вы настаиваете на этом, вы можете сблизиться с NHibernate.
Теги:
database
data-access-layer

1 ответ

1
Лучший ответ

Насколько я знаю, использование DbDataReader напрямую происходит быстрее. Но он не расширяется, если вы хотите изменить свой интерфейс. (например, ваши проекты Winforms и Webforms используют один и тот же DAL).

В моей точке зрения, если вы хотите больше гибкости, вы, вероятно, потеряете производительность. Дело в том, что вы (как разработчик) отвечаете за баланс производительности и сложности/расширяемости. Например, предположим, что вы разрабатываете приложение winforms для компании. Вы уверены, что компания не изменит поставщика своих данных (например, от SQL Server до Oracle). Тогда нет необходимости разрабатывать вашу программу, чтобы иметь возможность подключаться к различным поставщикам данных. Как говорится: KISS. (Keep It Simple Stupid!; P)

  • 0
    Спасибо за быстрый ответ. Я полностью согласен с большей гибкостью = меньшей производительностью и, возможно, большей сложностью. Обращаясь к первой половине моего вопроса, для небольшого / среднего приложения, которому необходимо сменить своего провайдера БД, вы бы выбрали конкретную реализацию провайдера или DBProviderFactory?
  • 0
    @geepie: Это зависит. Но в целом я бы выбрал DbProviderFactory, так как для этого требуется меньше работы. читать больше на forums.asp.net/p/1605716/4096890.aspx
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню