PROGRAMANDO EM ASP.NET

 Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Usando public interface



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

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


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: 2012
voltar   comente  subir


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 LOGAR

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

Exemplo do livro Programando em C# para Web
Um desejo de felicidade
Vídeo - Tecla de Atalho
Acessibilidade
Page.Header
Vírus - Email com viagra
Nova geração HTML
Vem ai a semana de Interoperabilidade
Trabalhando com GridView e DataKeyNames com Várias Chaves
Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Vídeo: Série Atlas.NET - Parte II
Lançamento do e-Book Dicas DotNet
CSS no VS 2003
Java J2EE – Primeiro Passo
Cortando String XML
Saiba ganhar dinheiro navegando na internet
Membership
Teclas de atalho - Visual Studio .NET 2005
Vídeo: Aprendendo a trabalhar com o Office
Ajax com Visual Studio.NET 2005
Misturando dados
URL Indexável – Reescrever URL de uma forma amigável
Vídeo - Criptografia e Descriptografia
Desenvolvendo Sistema para Celular
Sistema ASP 3.0 utilizando 3 camadas – Parte 1
OpenWave SDK 6.2.2
Convertendo String para Guid
Tata Motors (Grupo TCS)
Windows Mobile Phone
Descobrindo e criando tecla de atalho com Windows Forms
Formatando String de Vários Tipos
Public Interface
Desenvolvendo para iPhone com ASP.NET
Trabalhando com STORED PROCEDURE
Java J2EE – Segundo Passo
Sobre o Autor
  [sumir] [aparecer]
 
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

Informaes Online
Usurios Online: 288
Artigos:  750
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC