 |
Usando Namespaces profissionalmente
Por: Caio Azevedo  | Publicado em: 14-02-2008 | Comentários: 1 | Acessos: 311 | Avaliação: (111) (?)
É isso ai pessoal, NAMESPACEs, eis o nosso tema de hoje. O que a princípio aparenta ser mais um dos novos conceitos do .net, veremos que o mesmo tem muito a ser explorado, e assim faremos, tentando extrair todo o potencial dessa funcionalidade do Framework, além de aproveitarmos a oportunidade para analisar a diretiva using[Imports, seu correspondente no VB.NET].
Didaticamente, namespaces são agrupamentos lógicos de elementos, sejam eles classes ou mesmo outros namespaces, e que dentre outras, tem como funcionalidade evitar conflito de nomes nesse universo da computação distribuída na web. A seguir temos um exemplo da utilização dos namespaces com o objetivo de evitar conflito de nomes [conflito do nome de classes]. Interessante observar que temos mais de um namespace num mesmo assembly.
Particularmente prefiro postulá-los, bem como implementá-los e utilizá-los, como um agrupamento lógico de funcionalidades que compõem uma aplicação. Lógico, porque os namespaces independem do assembly que o implementa, podendo inclusive ser composto por vários deles [como veremos em nosso exemplo adiante]. Quanto às Funcionalidades, prefiro essa definição pelo seguinte: Dentre as boas práticas de programação, sempre vi o “Reaproveitamento de Código” como uma das mais importantes, por meio dela obtemos alguns benefícios tais como, produtividade, segurança e facilidade de manutenção. Era assim com as linguagens estruturadas, onde tínhamos as funções, rotinas e procedures, geralmente agrupadas em bibliotecas. Na codificação ASP, as tínhamos agrupadas em arquivos, e essas que eram utilizadas via diretiva Include, hoje, no período .net da programação, temos os namespaces que vão bem além de tudo isso, sendo, o agrupamento de funções mais uma das benfeitorias obtidas.
O fato é que nossos programas são organizados e compostos de namespaces, sendo, do ponto de vista do programa que os utiliza, classificados em: internos [quando o programa implementa seus próprios namespaces internamente – ver Código 1] ou externos, quando esse faz uso de funcionalidades implementadas em assemblies diferentes.
O Framework .Net, nos disponibiliza um conjunto considerável de funcionalidades agrupadas em vários namespaces [implementados em diversas dlls] e utilizados em nossos programas conforme necessidade do projeto e as características específicas de cada namespace [daí a funcionalidade], por exemplo, o code-behind de um webservice, precisa das funcionalidades implementadas no namespace System.Web.Service [assembly, System.Web.Service.dll], para tal precisamos utilizar a diretiva using [vista com mais detalhes adiante] além de referenciar a dll que implementa o namespace [opção de compilação /r, do utilitário CSC].
Os namespaces, como muita coisa no mundo .net é hierárquico, assim em nosso exemplo dos webServices, fazemos referencia ao namespace System.Web.Service, que hierarquicamente está contido no namesace System.Web [também contido no System], que contém várias funcionalidades para implementação das aplicações Web [as ASP.Net Applications], no entanto, o grau de especialização dos WebServices é tamanho que suas funcionalidades foram implementadas num assembly diferente. [o namespace System.Web, esta implementado no assembly System.dll; e o assembly System.Web.dll, contém algumas especialidades para aplicações Web como System.Web.UI, System.Web.Configuration, System.Web.Mail, etc.
Em nossas aplicações, podemos [e devemos] seguir o mesmo princípio, agrupando funcionalidades em namespaces, assim, no desenvolvimento de uma solução web, ganharíamos em produtividade [uma vez que teríamos equipes desenvolvendo um namespace com Web Controls personalizados, outras desenvolvendo o namespace para acesso à dados, controle de transações, e uma terceira equipe implementando webServices para integração com outros sistemas]. Simplicidade na manutenção, “dividir para conquistar”, nada mais desgastante em grandes projetos que sua manutenção, principalmente num emaranhado de códigos, e ai a especialização das rotinas em namespaces auxilia consideravelmente nesses casos. Além disso, o desenvolvimento de classes agrupadas em namespaces abre caminho para comercialização de idéias inovadoras e funcionais, como referencia temos empresas especialistas na implementação de controles [Windows ou Web] como por exemplo a ComponenteOne – http://www.componentone.com, Infragistics - http://www.infragistics.com dentre outras. Por fim, um aspecto interessante é a possibilidade de personalizarmos, nosso código nomeando os namespaces como o nome da nossa empresa ou mesmo do projeto.
A diretiva Using
Falar em namespace, praticamente nos obriga comentar sobre essa diretiva, afinal, é através dela que os namespaces são utilizados, bom, não necessariamente, afinal se considerarmos a hierarquia: Namespace -> Classe -> Método, podemos até dispensar o uso da diretiva, mas imaginem códigos escritos dessa forma:
Nesse simples exemplo, fazemos uso de várias classes/métodos [Console, StringBuilder, XmlDocument, ReadLine], tendo que utilizar seu “caminho” completo, para programas mais complexos isso seria realmente impraticável, o using permite que façamos referencia aos namespaces e assim podemos utilizar as classes diretamente.
Nota 1: Durante o processo de geração do IL , o compilador, quando encontra uma classe/método e não lhe identifica localmente, recorre aos namespaces indicados nas diretivas using e assim o IL é gerado sem problemas.
Nota 2: Nunca faça referencia, via using a uma classe, como por exemplo using System.Console, e no código invocar um dos métodos da classe diretamente [WriteLine(“texto”); ]. Ah, Isso foi umas das questões na prova de certificação.
A diretiva using tem uma funcionalidade interessante no C#, como já dissemos não é possível fazer referencia direta a uma classe continda no namespace, no entando é possível utilizá-la para definir um alias, de uma classe como no código abaixo:
Uma prática interessante no desenvolvimento de uma aplicação seria criarmos um conjunto de namespaces, cada um com sua especialidade, de modo que possamos aproveitá-los por diversas aplicações, aumentando consideravelmente a produtividade, uma vez que boa parte do trabalho de implementação já estaria feita.
A seguir simularemos um projeto [web, conforme sugerimos] distribuído em vários namespaces proprietários, além dos fundamentais [System e Cia.] disponibilizados pelo Framework, sendo um deles implementados em vários assemblies. Abaixo temos sua estrutura:
É claro que a implementação das classes dos namespaces em momento algum corresponde aos nomes sugeridos [webControls, webServices, dataLayer], em breve veremos cada uma dessas funcionalidades detalhadamente [ou se preferir veja artigos de nossos colunistas]. Nosso objetivo agora é deixar claro a importância e os ganhos obtidos no modelo de implementação sugerido. A seguir segue para download todos os códigos envolvidos em nosso artigo. Atenção com o arquivo de comandos em lote [para quem não conhece/lembra, são os velhos .bat], que compila todos os assemblies bem como o aplicativo do projeto proposto. namespace.zip
É isso ai pessoal. Quem imaginaria que um conceito tão “bobo” como os namespaces faria tanta diferença na implementação de nossas soluções, boas práticas de programação são sempre bem vindas, espero que essas mostradas aqui tenham sido realmente úteis. Lembramos que estou sempre aberto à críticas e sugestões para que a cada coluna possamos apresentar um conteúdo interessante e acima de tudo funcional para nossos leitores.
Até a próxima!
Avalie este artigo:
Current: 2.5 / 5 stars - 2 vote(s).
Fonte Artigos - Artigonal.com
Perfil o autor:Caio Azevedo é arquiteto de softwares, especialista em soluções corporativas nos ambientes intranet/internet. Graduado em Ciência da Computação, Mestrando da Escola Politécnica da USP. Certificações Microsoft [MCP, MCAD e MCSD .NET]. Gestor da célula Microsoft da Magna Sistemas Consultoria (www.magnasistemas.com.br).
|
Submeter artigos se tornou um dos meios os mais populares de gerar links de qualidade e tráfego para o seu site. CADASTRE-SE JÁ, É DE GRAÇA! |
|
Comentários
|
|
|
+1
1. Moroni (10:54, 03.07.2008)
|
Artigos Relacionados
Fundamentos teóricos sobre C# Por: Caio Azevedo | 14/02/2008 | Programação Partiremos dos fundamentos teóricos da tecnologia, e através de exemplos tentaremos prover soluções para as situações do nosso dia a dia. Seria interessante contar com a interatividade de vocês leitores com críticas e sugestões sobre os assuntos abordados.
Especial sobre .Net Por: Caio Azevedo | 14/02/2008 | Programação Estamos a beira de uma revolução, a plataforma .Net é um fato, boa parte dos desenvolvedores seguirá esse caminho. Enquanto isso na “vida real” nos deparamos todo dia com a boa e velha formula: ASP, VB 6.0/COM+, JavaScript, SQL Server. E é nesse ambiente que tenho dedicado meu tempo nos últimos seis meses, e o que pretendo nesse espaço é compartilhar o que aprendemos nesse período.
ADO .NET - Recomendações para estratégia de acesso a dados Por: José Carlos Macoratti | 17/02/2008 | Programação Se você está iniciando o aprendizado ou migrando para a plataforma .NET, pode estar confuso quando o assunto é acesso a dados. Motivos não faltam, afinal você tem a sua disposição diversas opções na plataforma .NET para realizar acesso a dados com classes e métodos distintos: DataSets, DataReaders, XML, TableAdapters, DataAdapter, Command, etc.
O novo modelo de compilação e os novos controles Por: José Carlos Macoratti | 17/02/2008 | Programação Com o advento da ASP.NET 2.0, houve uma grande mudança em relação as versões anteriores 1.x. O processo de criação de uma aplicação Web Form na versão 2.0 não depende mais da definição de um diretório virtual. Não existe também na nova versão um projeto ASP.NET web.
A Gestão de Requisitos Por: José Carlos Macoratti | 17/02/2008 | Programação Conhecer e dominar uma linguagem de programação é bom, mas não é tudo. Para criar sistemas robustos e com qualidade, é preciso mais do que uma boa linguagem e um bom programador.
Como Ganhar Dinheiro Na Internet Para Newbies Por: makecash | 24/02/2008 | Marketing na Internet Este artigo explica como comecei a ganhar dinheiro na internet. Serve para transmitir os cohecimentos adquiridos durante todos estes anos aos meus leitores.
O Porque E Como Do Siw Por: Ruben Zevallos Jr. | 08/03/2008 | Programação Já vi muitos projetos para Internet irem para o buraco, porque o ele teria muito dado dinâmico, relatórios etc, mas foi totalmente guiado por profissionais de design e não de sistemas.
A Personalidade, o Comportamento Dos Marginalizados E Suas Conseqüências Por: Adriano Martins Pinheiro | 22/07/2008 | Desigualdades Sociais A personalidade é composta por vários fatores ao longo da vida.
Uma pessoa é atualmente fruto do que foi construído anteriormente, ou seja, como foi construída sua personalidade.
O meio social, a família, as influências do grupo social, a educação e as experiências, integram-se na formação do indivíduo e influenciam seu comportamento por toda sua vida.
Últimos Programação artigos
Phpmyadmin - Administrando Tabelas Por: Amilcar Junior | 12/10/2008 Usado no gerenciamento de dados no MySQL administração de banco de dados e tabelas.
Vamos nessa matéria abordar o script phpMyAdmin , usado no gerenciamento de dados no MySQL. Para fazer o download da última versão, vá nesse link. Você precisa ter instalado em sua máquina o Servidor Apache, o PHP e o MySQL para usar o phpMyAdmin. Após seu download e tudo funcionando corretamente ...
Mysql - Contruindo Tabelas Por: Amilcar Junior | 12/10/2008 O uso direto do MySQL dentro do PhpMyAdmin construido tabelas.
Recordset - Dreamweaver Cs3 Por: Amilcar Junior | 12/10/2008 Uso de Recordset para ligar um banco de dados a uma página dinâmica no Adobe dreamweaver.
Segurança - Trocando A Porta Do Sql Server 2000 Por: Tulio Rosa | 24/05/2008 Existem várias configurações que podemos fazer para garantir a segurança do banco de dados, entre elas temos a opção de alterar a porta default utilizada nas conexões, fazendo isso somente as solicitações direcionadas a nova porta terão respostas, as demais receberão erros como se o banco não existisse.
Data Por Extenso Por: Yunis Carvalho | 15/04/2008 Vamos descrever como colocar a data por extenso em um site e o detalhe é que a data será atualizada automaticamente, de acordo com a data do sistema do servidor que está hospedado o site.
O Porque E Como Do Siw Por: Ruben Zevallos Jr. | 08/03/2008 Já vi muitos projetos para Internet irem para o buraco, porque o ele teria muito dado dinâmico, relatórios etc, mas foi totalmente guiado por profissionais de design e não de sistemas.
Um Pouco De Siw Por: Ruben Zevallos Jr. | 08/03/2008 Muitas pessoas já me perguntaram o que é SIW. SIW é a sigla de Sistemas com Interface Web. O SIW é o desenvolvimento de Sistemas normais utilizando a Interface Web, que tem diversas vantagens perante a interface gráfica normal
Como instalar e configurar o Php5 e o Apache Por: Alexandre Silveira | 21/02/2008 Este artigo trata sobre a instalação e configuração do php5 e o apache.
Mais artigos de Caio Azevedo
Especial sobre .Net Por: Caio Azevedo | 14/02/2008 | Programação Estamos a beira de uma revolução, a plataforma .Net é um fato, boa parte dos desenvolvedores seguirá esse caminho. Enquanto isso na “vida real” nos deparamos todo dia com a boa e velha formula: ASP, VB 6.0/COM+, JavaScript, SQL Server. E é nesse ambiente que tenho dedicado meu tempo nos últimos seis meses, e o que pretendo nesse espaço é compartilhar o que aprendemos nesse período.
Fundamentos teóricos sobre C# Por: Caio Azevedo | 14/02/2008 | Programação Partiremos dos fundamentos teóricos da tecnologia, e através de exemplos tentaremos prover soluções para as situações do nosso dia a dia. Seria interessante contar com a interatividade de vocês leitores com críticas e sugestões sobre os assuntos abordados.
MSIL - Microsoft Intermediate Language Por: Caio Azevedo | 14/02/2008 | Programação Minha proposta nesse espaço inicialmente seria de analisarmos a linguagem C#, sua sintaxe, implementações dos conceitos de orientação a objetos, etc. Para tal ,acredito que a implementação de programas console [aqueles que rodam no DOS], seja a melhor alternativa nesse primeiro momento.
Desmistificando as Classes Por: Caio Azevedo | 14/02/2008 | Programação A Linguagem C# é totalmente baseada no modelo de programação orientada à objetos, sendo assim, profundos conhecimentos em alguns de seus elementos principais são de fundamental importância para que possamos extrair o máximo do modelo/linguagem, sobretudo aqueles desenvolvedores acostumados com outros modelos tais quais, programação estruturada e orientada à eventos.
Problemas com modelos de aplicações web Por: Caio Azevedo | 14/02/2008 | Programação Em minhas recentes atividades como arquiteto de soluções .net, deparei em alguns clientes com uma situação no mínimo inusitada...
Exemplo de otimização de armazenamento de dados Por: Caio Azevedo | 14/02/2008 | Informática Esse artigo tem como objetivo propor a solução de um problema no qual deparamos com razoável freqüência, e se você ainda não o teve pela frente, provavelmente ainda o terá especialmente se você desenvolve aplicações comerciais.
|
 |