Artigonal.com - Leia e Publique Artigos
Diretório de Artigos Gratuitos
01.12.2008 Login Cadastro Olá
E-mail:
Senha:
Salve meus dados neste computador 


Usando Namespaces profissionalmente

Por: Caio Azevedo Ranking do Autor Azul | Publicado em: 14-02-2008 | Comentários: 1 | Acessos: 311 | Avaliação:  (111) Ranking do Artigo Azul (?)

É 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).

Tags do Artigo: .net, Programação, Namespace

Fonte Artigos - Artigonal.com

Imprima este Artigo Imprimir artigo   Envie o Artigos a um amigo Enviar a um amigo   Publique este Artigo no seu site Publique este Artigo   Mande mensagem ao Autor Mensagem ao autor  
Caio AzevedoPerfil 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

Comente este artigo Comente este artigo
Nome
E-mail:
Comentário
Digite o código de segurança: Captcha

+1
1. Moroni (10:54, 03.07.2008)
Onde eu pego/vejo os exemplos que você citou no artigo?

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.

Categorias do Artigo





Webmasters

Leitor de RSS
RSS
Links

Business Info

Anunciar