Heroes

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Usando public interface

por Mauricio Junior em 1/1/2011 0

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.

voltar   comente  subir

Download Copy





 
Mauricio Junior 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 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.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.org, Site 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):

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

Podcast publicado no site
Microsoft AdventureWorks Database
User Control Windows executando no Internet Explorer (parte 1 de 2)
Novo Firefox 3.0 - o chamado Minefield
Visual SourceSafe - Série 3
Ebook Grátis Microsoft
CES 2008: Keynote do Bill Gates
NDOC para versão framework 2.0
Convertendo e salvando imagens via código
Skyfire - browser mobile
Como criar uma tabela dinâmica com ASP.NET
Dll Ajax
O futuro da tecnologia com a Microsoft
WebServices usando soapHeader
Aplicativo iCantada Free
SQL Dinâmico Compilado
Padrão de Codificação
Método SHA384
Vídeo: Aprendendo a trabalhar com o Office
Loja Apple (a2you.com.br) feita em .NET (Microsoft)
Windows Phone no Brasil
Saiba ganhar dinheiro navegando na internet
Dica ReportViewer
Orientação a Objetos com Visual Studio.NET (parte 2)
Agrupar Email no Mail - MacBook
Finanças para os filhos
Pegando erro na aplicação web
Inside Xbox Live Game
Montando estrutura de um site MVC 2 com Visual Studio .NET 2010
Escrever log de erro e warning
LG Optimus 7 com Windows Phone 7
Mais detalhes sobre o HTC Touch HD 2 com o possível Windows Mobile 7
Sistema de Login em ASP – Parte V
Aspirador de pó inteligente
Plataforma Web ou Windows Forms ?




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...

Promoções de livros móveis .NET

Baixa agora o seu e aprenda a programar....

A Era dos UltraBooks

Os modelos mais dos Ultrabooks...




NETITC