Busca online em todo site:
NETITC

Você não está logado, deseja logar na comunidade? clique aqui.




Título do Artigo

Usando public interface


Data Publicação: 28/5/2009 21:13:18
Total de visualizações: 1348

comente
 


Visual Studio .NET 2008

Olá pessoal, quero mostrar algumas coisas importantes no meio da programação. Hoje ficou muito comum falar de “interface” pra cá, “interface” pra lá. Mas pra que serve essa coisa de “interface” na programação?
Bom, nesse artigo vou explicar algumas coisas e mostrar alguns códigos de interface usando o framework da Microsoft.

Referência:
Ferramenta Visual Studio.NET
Linguagem C#.NET
Framework 3.5 / 2.0 / 1.x

A interface é geralmente tratada como uma camada de abstração, ou seja, uma cama acima que sabe identificar qual a melhor forma de acessar a fonte de dados, método ou função. Um exemplo básico disso é: imagina criar uma interface que sabe qual banco de dados acessar; oracle, sql server, mysql, access ou outros.
Você só manda o comando e a interface detecta qual banco de dados está na sua aplicação. O comando “select * from tabela” na interface; pega o dado para a camada de dados correta. Criei primeiro uma classe helper com o método principal. (Referência 1.1)

public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)
{
try
{
base.OpenConnection();
sqlCommand.Connection = sqlConnection;

System.Data.IDbDataAdapter dataAdapter = new System.Data.SqlClient.SqlDataAdapter();
dataAdapter.SelectCommand = sqlCommand;
DataSet dtSet = new DataSet();
dataAdapter.Fill(dtSet);
return dtSet;
}
catch(SqlException e)
{
throw new NotImplementedException(e.Message);

}
finally
{
base.CloseConnection();
}
}
Referência 1.1

O método executa um dado e retorna um objeto do tipo dataset. Recebe como parâmetro de entrada chamado IDbCommand, uma interface da classe Command. No decorrer do método utilizo sempre a interface de métodos, o DataAdapter por exemplo possui uma interface chamada IDbDataAdapter que recebe um objeto do tipo SqlDataAdapter().

Essa helper é apenas para o banco de dados SQL Server. (Referência 1.2)


? Referência 1.2

Note na imagem que tenho uma HelperSQL.cs, tem todos os métodos específicos para o banco de dados SQL Server. O próximo passo é gerar um helper para o Oracle. (Referência 1.3)

namespace Bancoob.Data {
public class HelperOracle : IDTec
{
public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)
{
try
{
System.Data.IDbDataAdapter dataAdapter = new System.Data.Odbc.OdbcDataAdapter();
dataAdapter.SelectCommand = sqlCommand;
DataSet dtSet = new DataSet();
dataAdapter.Fill(dtSet);
return dtSet;
}
catch (OdbcException e)
{ throw new NotImplementedException(e.Message);

}
}
}
}

Referência 1.3

Nesta classe HelperOracle.cs possui um mesmo método para um outro banco de dados, Oracle por exemplo. Para acessar o banco, o comando ODBC é importante, em vez de fazer outro método na helper SQL, coloco na helper Oracle. Veja a mudança no System.Data.OdbcDataAdapter() , a Exception também é do tipo Odbc. (Referência 1.4)


? Referência 1.4

O próximo passo é gerar uma interface que saiba qual classe Helper acessar em determinados momentos. Uma hora na HelperSQL e outra hora no HelperOracle. Geralmente a interface possui apenas o cabeçalho do método, por exemplo: note que na referência 1.3 e 1.1 possui todo o método que recebe um comando e retorno o objeto do tipo DataSet; dessa forma, na interface fica apenas o cabeçalho que por sinal um é igual ao outro. (Referência 1.4)

public DataSet ExecutaDataSetParameter(IDbCommand sqlCommand)

Referência 1.4

No caso de ter outra helper para acesso a outro banco como o access, terá a mesma assinatura e no seu interior irá tratar direto com o banco e interfaces do access. O passo seguinte é mostrar a interface.

Na classe da interface não terá public class e sim public interface. (Referência 1.5)

public interface IDTec
Referência 1.5

Terá apenas um public interface e o nome que achar melhor. Veja mais abaixo a chamada do método criado nas referências acima. (Referência 1.6)

public interface IDTec {
DataSet ExecutaDataSetParameter(IDbCommand sqlCommand);
}
Referência 1.6

A interface possui apenas a chamada com o retorno do tipo do método, é o mesmo tipo. Com isso a interface escolhe qual herper utilizar. Você pode colocar um tipo na sua classe que chama para definir o helper de forma mais dinâmica; pode ser de acordo com o arquivo de configuração ou como uma propriedade com get e set.
No sistema, basta chamar a interface, ou seja, public interface IDTec que o resto é definido dinamicamente.

Bom eu fico por aqui, qualquer dúvida pode entrar em contato. Espero ter ajudado.



Total de visualizações: 1348
voltar   comente  subir

Autor:


Por:Mauricio Junior
Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org


Comentários:

Comentado por: Luis - 29/5/2009 0:00:00
O artigo está bom mas incompleto. Faltou a ultima parte que é mostrar código de exemplo utilizando esta técnica.
Comentado por: Luis Madaleno - 29/5/2009 0:00:00
O artigo está bom, mas falta a parte final e mais importante que era mostrar o código usando o conceito. Quem é iniciado não vai entender nada.

Comente (dê sua opinião): VOCÊ PRECISA ESTAR LOGADO

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Código fonte do livro DESENVOLVENDO WEBSERVICES
e-Book gratuito Microsoft Office 2010
Windows 7
O vírus do curriculum
Windows 7 funciona até no Mac
Tata Motors (Grupo TCS)
QR Code com ASP.NET
Public Interface
Windows Mobile Phone
SQLEngine Utilizando Upgrade
Ebook Grátis Microsoft
Heroes {Community} Launch - Brasilia/DF
Vírus - Email com viagra
Orientação a Objetos com Visual Studio.NET (parte 2)
Saiba ganhar dinheiro navegando na internet
Projeto Natal é mostrado para a mídia
Visualizar no Próprio Mail (Macbook)
Não publicação
Criando Pastas no Mail com o Macbook
Fazer Log, precisa ou não precisa?
Mudar de MasterPage em Tempo de Execução
Litl um computador web
Anime-se com o Silverlight
Google Sync Mobile
CRIANDO MENU DINÂMICO COM C#.NET Passo 1
Calcular Média de Combustível
Trabalhando com STORED PROCEDURE
Criando uma aplicação de uma maneira nova para melhor publicação
Public Interface
Visitas na Comunidade ASPNETi.COM
Sistema de Login em ASP – Parte 10
Vídeos Online Gratuitos
Sistema ASP 3.0 utilizando 3 camadas – Parte 1
Tech Fest 2009
Limpando Cache do Brownser

Publicidade:

[sumir] [aparecer]
NETITC




Informações Online:

Usuários Online: 821
Artigos:  649
Vídeos:  47
PodCast's:  31
Fórum:  3098
Empregos:  1223
Usuários Cadastrados: 5777

Categoria de Artigos

Vídeos

Enquete - Dê sua opinião

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 377 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC