Совет. Microsoft включает провайдера OLE DB в ADO.NET, так что вы можете использовать имеющиеся у вас драйверы OLE DB. Однако если удается найти специализированного провайдера для вашего источника данных, имеет смысл использовать именно его. Например, вы можете подключиться к базе данных SQL Server, используя либо специализированный провайдер SQL Server, либо провайдер OLE DB, однако провайдер SQL Server всегда лучше.

Стандартизация в ADO.NET

На первый взгляд может показаться, что ADO.NET предлагает фрагментированную модель, поскольку не включает обобщенного набора объектов, которые работали бы с множеством типов баз данных. В результате, если вы переходите от одной реляционной СУБД к другой, вам приходится модифицировать код доступа к данным для использования другого набора классов.

Но даже несмотря на то, что разные провайдеры данных .NET используют различные классы, все они некоторым образом стандартизованы. Точнее говоря, каждый провайдер основан на одном и том же наборе интерфейсов и базовых классов. Так, например, объект Connection реализует интерфейс IDbConnection, который определяет такие центральные методы, как Open() и Close(). Подобная стандартизация гарантирует, что каждый класс Connection будет работать одинаковым образом и представит один и тот же набор центральных свойств и методов.

"За кулисами" различные провайдеры используют совершенно разные низкоуровневые вызовы и программные интерфейсы. Например, провайдер данных SQL Server применяет патентованный протокол TDS (Tabular Data Stream — поток табличных данных) для взаимодействия с сервером. Преимущества этой модели не вполне очевидны, но весьма существенны:

ADO.NET также имеет другой уровень стандартизации — DataSet. DataSet — это контейнер данных общего назначения, которые вы извлекаете из одной или более таблиц источника данных. DataSet полностью обобщен; другими словами, специализированные провайдеры не определяют собственных специализированных версий класса DataSet. Независимо от того, какой провайдер данных вы используете, вы можете извлекать данные и помещать их в полностью автономный DataSet одинаковым образом. Это облегчает отделение кода, извлекающего данные, от кода, обрабатывающего их. Если вы меняете базу данных, вам приходится менять только код, извлекающий данные, но если вы применяете DataSet, и ваша информация имеет одну и ту же структуру, вам не придется модифицировать способ ее обработки.

предыдущая    следующая страница   оглавление

300

Hosted by uCoz