Рекомендации по созданию веб-приложения .Net, которое может использовать «подключаемые» слои доступа к данным. - PullRequest
0 голосов
/ 12 апреля 2011

Я создаю приложение, которое первоначально будет использовать SQLServer 2008 в качестве СУБД.Как я должен структурировать свое приложение так, чтобы на более позднем этапе я мог использовать другую СУБД, например Oracle, без изменения своего кода, т.е. только через конфигурацию.

Я подозреваю, что мое основное приложение будет вызывать код в сборке / слоеон инкапсулирует все вызовы базы данных, необходимые для работы приложения.Этот уровень затем вызовет уровень, специфичный для СУБД (на основе конфигурации), чтобы сделать фактический вызов БД?Может кто-нибудь указать мне на четкий пример этого?

Спасибо!

Добавил объяснение ниже:

Я думал, что у меня может быть несколько сборок, например, MyApp, MyApp.База данных, MyApp.Database.SQLServer, MyApp.Database.Oracle и т. Д.

MyApp сделает вызов, подобный:

DataSet ds = MyApp.Database.GetSomeData();

... который выглядит как ...

public DataSet MyApp.Database.GetSomeData()
{
  return GetDataFromDBMS();
}

GetSomeData - это общий вызов, т. Е. MyApp для выполнения каких-либо действий требуется «GetSomeData ()».Не имеет значения, откуда берутся данные.

Тогда GetDataFromDBMS узнает через файл конфигурации, что нужно вызвать MyApp.Database.SQLServer.GetTheData () ИЛИ MyApp.Database.Oracle.GetTheData ().,Эти методы могут делать все, что требуется для получения / обработки данных из каждой СУБД.

1 Ответ

2 голосов
/ 12 апреля 2011

То, на что вам следует обратить внимание, это использовать инструмент ORM, который абстрагирует базу данных для вас (nHibernate), или определить набор интерфейсов, представляющих ваш DAL, а затем использовать реализацию IoC (Ninject, Castle и т. Д.) Для заменыбазовой реализации по желанию, при условии, что она реализует интерфейс.

Однако проектирование интерфейса, который ориентирован на будущее (т. е. может справиться с тонкими причудами работы с другими базами данных), не является простым, поэтомув любом случае вам может понадобиться внести изменения.

Я бы сделал одну из двух вещей в следующем порядке:

  1. Просмотрите, если вам действительно нужнопоменяйте местами базы данных.
  2. Пройдите по маршруту инструмента ORM, так как для вас проделана большая работа.

Хороший пример абстрагирования базы данных, не обязательно DAL для-se - это блок приложения для доступа к данным Enterprise Library от Microsoft.

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