O que são provedores? Qual a diferença entre OLE DB e ODBC? – c# .net ado.net

Pergunta:


Preciso fazer a leitura de arquivos dbf. Achei um tutorial para leitura do mesmo onde o autor utiliza estes dois provedores. No código só vi diferenças na string de conexão.

O que são esses provedores? Qual a diferença entre eles?

Autor da pergunta Caique C.

Resposta Maniero:

ADO.NET

A documentação da Microsoft diz bem o que é. Vou só resumir.

São componentes para dar acesso (leitura) a dados vindos de uma determinada fonte, provavelmente um banco de dados. Existem operações comuns que estes provedores devem fornecer. O ADO.NET os trata de forma abstrata e os provedores os implementa de forma concreta de acordo com as especificidades da fonte de dados.

A ideia é que o acesso à qualquer fonte de dados seja feita de forma transparente. Que pareça que tudo vem de algo comum, que não seja necessário entender o funcionamento específico da fonte. isto simplifica inclusive a troca de uma fonte por outra.

Estes provedores funcionam como se fossem os drivers ODBC e OleDB mas implementam uma forma mais adequada para o .NET.

Se você entende como o dbf funciona, talvez entenda o que sejam os RDD (Replaceable Data Drivers). É basicamente a mesma coisa.

Alguns provedores definidos pela Microsoft podem ser achados aqui. Qualquer um pode definir seus próprios provedores. Há empresas especializadas nisto e alguns banco de dados do mercado fornecem provedores para o ADO.NET. Exemplos.

OleDB

Como se vê os próprios drivers ODBC e OleDB são provedores do ADO.Net.

O provedor OleDB apenas pode acessar fontes de dados que conseguem se comunicar com esta tecnologia. A própria Microsoft está abandonando seu suporte em alguns dos seus produtos.

ODBC

O ODBC é uma forma mais universal de acesso a fontes de dados.

Ambos devem ser evitados porque é uma camada a mais, tem um custo de processamento extra, embora o OleDB evita um pouco isto. Provedores mais específicos para um banco de dados ou outra fonte sempre é mais vantajoso. A implementação deles são mais eficientes por conhecerem como acessar os dados da melhor forma. Usa-se provedores mais genéricos, como os dois exemplos citados, quando não existe um provedor mais específico.

As definições formais podem ser obtidas no links acima.

A diferença está nos recursos que cada um conta e os bancos de dados que o mesmo suporta.

O ODBC (Open Database Connectivity) é um padrão para acesso a sistemas gerenciadores de bancos de dados (SGBD). São drivers para inúmeros Bancos de dados, como SQL Server, Oracle, PostgreSQL, MySQL entre outros.

O OLE DB é uma API desenvolvida pela Microsoft que atua com uma interface que permite o acesso universal a diversas fontes de dados.

Eles possuem basicamente a mesma função, com a diferença do OLE DB acessar outras fontes de dados além de Banco de Dados Relacionais.

Apesar de vários Banco de Dados fornecerem suporte ao OLE DB, a própria Microsoft desencoraja seu uso a favor do ODBC, tanto que o OLE DB será descontinuado a partir do SQL Server 2012 e o mesmo será removido em futuras versões.

Provedor é algo que te ajuda, que fornece algo no caso uma conexão.

OLE DB e ODBC são APIs que permitem o acesso a uma gama de fontes de dados.

  • (ODBC), é um padrão internacional para manipular dados relacionais
    usando a sintaxe de consulta SQL em diferentes fontes de dados. ODBC
    tem a vantagem de ser um padrão internacional que permite manipular
    uma grande variedade de fontes de dados relacionais através de
    diversos Drivers de ODBC da Microsoft e terceiros de fornecedores. A
    principal desvantagem do ODBC é que é limitado a relacional, sintaxe
    SQL com base em dados.

                                          X
    
  • OLE DB é a interface de baixo nível estratégico da Microsoft para
    dados em toda a organização. OLE DB é uma especificação aberta
    desenvolvida para proporcionar o sucesso do ODBC, fornecendo um
    padrão aberto para acessar todos os tipos de dados. OLE DB não impõe
    nenhuma limitação específica na sintaxe da consulta ou a estrutura
    dos dados expostos como ele pode ser recuperado em formato tabular.
    Um provedor de dados OLE DB é análogo a um Driver de ODBC, expondo
    uma fonte de dados para um OLE DB consumidor, como ADO. Uma variedade
    cada vez maior de dados provedores do OLE DB sendo disponibilizados
    por fornecedores de Microsoft e de terceiros. O primeiro provedor de
    dados OLE DB, provedor Microsoft OLE DB para Drivers ODBC, permite
    que você exponha a qualquer fonte de dados ODBC para um consumidor de
    OLE DB.

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *