2010-08-06 3 views
0

Недавно мне пришлось набрать некоторую документацию для поставщиков данных .net и ado.net. Я пытаюсь получить отзывы о моих выводах. Просмотрите и внесите исправления или мнения.Является ли мой обзор .Net Data Providers и ADO.Net правильным?

Резюме Это сводка высокого уровня основных API .Net для взаимодействия с базой данных. Как разработчик, в основном с Java и PHP, я не понимал, как ADO.Net относится к OleDb, и я понятия не имел, что подразумевается под термином «поставщик данных .Net». Я создал это, потому что документация msdn HEAVILY сосредоточена на ADO.Net и не дает четкого представления о том, как взаимодействуют многие пространства имен, интерфейсы и классы.

Поставщик данных .Net

  • http://msdn.microsoft.com/en-us/library/a6cd7c08(v=VS.71).aspx
  • Поставщик Структура данных .NET является используется для подключения к базе данных, выполнения команд, и извлечения результатов. Эти результаты либо обрабатываются , либо помещаются в набор данных ADOB.NET .
  • То, что на самом деле означает, что .Net Data Provider реализует интерфейсы , определенные в пространстве имен System.Data .
  • Поставщик
  • .NET-Data похож на драйвер JDBC в Java

System.Data

  • http://msdn.microsoft.com/en-us/library/system.data.aspx Эта страница содержит текст, который делает вы считаете, что ADO.Net является СЕРДЕЧНИКУ часть доступа к данным .Net, однако реальность такова, что ADO.Net является высокий уровень доступа к данным и , построенный на .Net Data Providers , которые реализуют интерфейсы в системе. System.Data.
  • На мой взгляд, это почти кажется, что Microsoft пытается скрыть, как базы данных соединений работы, так что пользователи улавливаются с помощью элементов управления предоставляемые Visual Studio. System.Data namesapce содержит интерфейсы, которые должны быть определены провайдеров ALL .Net Data

System.Data Основные интерфейсы

  • IDbConnection
  • IDbCommand
  • IDataAdapter
  • IDataReader

Примеры системы.Реализации данных

  • следующие пространства имен включают классы, которые реализуют ядро ​​«.Net Data Provider » интерфейсы определены в System.Data
  • System.Data.SqlClient
  • System.Data.OleDb
  • System.Data.Odbc
  • IBM.Data.DB2
  • ByteFX.Data.MySqlClient

ADO.Net

  • http://msdn.microsoft.com/en-us/library/27y4ybxw(v=VS.71).aspx
  • ADO.Net является запрос к базе данных и манипуляция API построен на вершине основных классов поставщика данных .NET. ADO.Net фокусируется на отключенном, взаимодействии между несколькими уровнями.
  • По моему мнению, классы ADO.Net должны быть в отдельном пространстве имен , например System.Data.ADO, только для большей ясности.

ADO.Net Основные классы

  • DataSet
  • DataTable
  • DataColumn
  • DataRelation

ответ

2

System.Data является "пакет", который содержит все, работающих с «Поставщиками данных» в .СЕТЬ. Это правда, что ADO - это одна из стратегий работы с данными, но это основная стратегия в .NET.

ADO меньше относится к конкретным технологиям БД (поскольку это не обязательно означает, что это технология, основанная на базе данных) и многое другое о связях данных. Термины: Set, Table, Column, Row and Relationship - хорошо понятые термины моделирования, и ADO.NET делает их объектами первого класса в пространстве .NET.

Поставщики данных предоставляют конкретные сведения о реализации конкретного уровня для поддержки основных концепций ADO.NET (таблицы, строки и т. Д.) И предназначены для абстрагирования деталей прямой реализации того, как подключиться к поставщику данных. Например, вы можете с относительно небольшим усилием обменять поставщика данных Jet Data с поставщиком данных Oracle с точки зрения DataTables, DataRows и DataColumns (подробности запроса в сторону), чтобы на ваш код минимально влияли изменение. Почему это важно? Потому что это означает, что вы можете работать с неоднородными источниками данных с аналогичной командной семантикой (т. Е. Вы можете работать с крупными таблицами Excel и MySql dbs в одном приложении с теми же объектами). Это делает повторное использование и перепрофилирование очень простым и очень простым.

По общему мнению, вы можете думать о системе таким образом:

  1. Поставщик данных .NET, где вы получите ваши данные. Вам нужно будет импортировать из системы.Данные каждого провайдера, используемого вашим приложением
  2. Классы ADO.NET - это концепции, с которыми вы будете работать с таблицами, строками, столбцами и т. Д. Они не имеют ничего общего с запросами, индексами и т. Д. Это детали поставщика
  3. Ваше приложение должно только редко (я бы сказал, никогда, но всегда есть исключения) должен знать о Провайдере и вместо этого сосредоточиться на потреблении и производстве DataSets, DataTables и т. Д.

Надеюсь, что это поможет.

+0

Это очень помогает. Я хочу, чтобы документы MSDN были ясны. Мой опыт работы на Java и php затруднял связь с ADO.Net (DataTable). Я полностью согласен с тем, что программирование не зависит от конкретного провайдера. Вы можете это сделать даже без классов DataTable и DataSet, которые, как вы сказали, являются независимыми поставщиками, потому что они являются конкретными классами в пространстве имен System.Data. Если вы скрываете реализацию «Поставщик данных» за интерфейсами в пространстве имен System.Data, вы можете в любой момент изменить своего провайдера. Thx для ответа. –

+0

@Welzie его истинно, вам не нужно использовать DataTable и DataSet, поскольку DataReader обеспечивает гораздо более понятную семантику чтения БД, но DataTable (DT) и DataSet (DS) предназначены для передачи другого значения, чем одностороннее движение данных. DT и DS предназначены для предоставления прокси-реализаций использования данных и предоставления вам отключенного интерфейса для вашего поставщика данных, так что DT/DS «действует» как база данных, а основные сведения не важны для использования кода. Я думаю, что на практике это не так, как используются DT и DS, обычно это просто контейнеры для данных. – GrayWizardx

2

Со ссылкой на:

На мой взгляд, это кажется почти как Microsoft пытается скрыть, как соединения с базой данных работают, так что пользователи улавливаются с помощью элементов управления предоставляемые Visual Studio.

Существование сторонних провайдеров не поддерживает идею о том, что MS пытается «поймать» нас во что угодно.

Скрытие «как работает соединение с базой данных» является своего рода абстракцией и не является подрывной.

+0

Понял, но скрытие того, как происходит критическая часть системы, ограничивает понимание разработчиков. В действительности на этом уровне все является абстракцией. Если вы узнаете только ADO.Net api и не узнаете о соединениях, транзакциях, командах, которые, как я понимаю, область разработки для взаимодействия с базой данных крайне ограничена. Thx для ответа. –

Смежные вопросы