Visual Studio, Visual Studio Team System, Team Fondation, Ferramentas Express – O que muda a partir de 2005

 

  

 

No dia 7/11/2005 foram lançadas as novas versões do Visual Studio, o que causou uma grande confusão de nomes, versões, o que faz o que, para que serve um ou outro, e assim vai. Tudo isso porque a Microsoft transformou uma ferramenta de desenvolvedores para uma ferramenta mais completa, uma ferramenta para todos envolvidos no projeto.

 

Toda essa mudança veio para acabar com o problema de comunicação e integração de ferramentas necessárias para todos que estão envolvidos em um projeto. (Todos: Arquiteto, Gerente de Projeto, Desenvolvedor, Tester, Etc.etc.etc.).

 

 Vamos por partes:

 

Ferramentas Express

 

    Ferramentas de desenvolvimento para pessoas (estudantes, entusiastas, etc.) que querem aprender/conhecer a plataforma.Net. São ferramentas com algumas limitações pensando em desenvolvimento corporativo, porém uma ferramenta com recursos incríveis e produtivos para pequenas aplicações. É possível sim desenvolver projetos de todos os portes com as ferramentas Express. Os benefícios das versões que em breve serão apresentadas, fazem com que as ferramentas sejam limitadas, porém é uma ferramenta poderosa para o desenvolvimento.

 

    São encontradas as seguintes versões:

 

 

 

Saiba mais em: http://msdn.microsoft.com/vstudio/express/

 

    Indico a leitura dos livros da série express (http://www.projetoexpress.net), sou um dos três autores desta série J

 

Visual Studio Standard

 

    O Visual Studio Stardard trás em um único produto a possibilidade de desenvolvermos aplicações Windows, Web e Mobile, voltada para o desenvolvimento profissional. A diferença para as ferramentas express é que em uma única ferramenta pode-se desenvolver todos os tipos de aplicação, inclusive mobile.

 

Saiba mais em: Saiba mais em: http://msdn.microsoft.com/vstudio/express/

 

Visual Studio Professional

 

    Semelhante ao Standard, porém com alguns recursos como Remote Debug, Desenvolvimento com SQL 2005 via Wizzards, etc. Os dois produtos, Standard e Professional, são ferramentas voltadas ao desenvolvedor, assim como o Visual Studio 2003. Para empresas onde este cenário é coberto, são as ferramentas recomendadas.

 

Saiba mais em: Saiba mais em: http://msdn.microsoft.com/vstudio/express/

 

Visual Studio Team System

 

    Essa é a grande novidade, o grande produto, a grande aposta da Microsoft.

 

    Com recursos para todos os envolvidos em um projeto, o VSTS traz ferramental para Arquitetos de Softwares, Testers e Developers em três versões de VSTS.

 

VSTS Architect

 

    Os principais recursos:

·   Diagrama de aplicação

·   Diagrama de infra-estrutura lógica

·   Diagrama de distribuição

 

O principal objetivo destes diagramas é trazer uma comunicação entre a infra-estrutura e a aplicação trazendo a possibilidade de simular o deploy de uma aplicação em um servidor desenhado pelos arquitetos.

 

Alguns recursos são compartilhados, ou seja, estão em mais de uma versão.

 

·   Class Designer (disponível em todas as versões do VSTS) – um diagrama de classes completo, com muitos recursos disponíveis, totalmente sincronizado com o código fonte da aplicação.

·   Integração com o Visio

 

 

VSTS Tester

 

·   Load test

·   Manual test

·   Test case

 

Alguns recursos são compartilhados, ou seja, estão em mais de uma versão.

·   Unit test  (disponível na versão Developer) – recurso integrado para criação de testes unitários de código

·   Code Coverage (disponível na versão Developer) – analisa quantos % do código testado por teste unitário.

 

VSTS Developer

 

·   Analisador de código

o   Dinâmico

o   Estático

·   Code Profiler

 

As principais funcionalidades estão voltadas ao controle de qualidade de código, onde é possível definir algumas regras no código e visualizar se estas regras estão sendo cumpridas.

 

Cada versão é um produto diferente, porém existe o Visual Studio Team System Team Suíte que traz as três versões no mesmo produto.

 

Saiba mais em: http://msdn.microsoft.com/vstudio/express/

 

Team Foundation

 

    O Team Foundation é um serviço servidor voltado para todo o controle de gerenciamento de um projeto. Gerenciamento de pessoas, tarefas, versões, código fonte, etc. Tudo isso em um servidor, armazenando os registros no banco de dados. Trazendo assim um recurso central onde o gerente de projetos consegue saber tudo que está acontecendo em um projeto.

 

    Os principais recursos:

 

·   Gerenciamento

·   Relatórios

·   Itens de trabalho

·   Relatórios

·   Portal do Projeto

·   Integração de Serviços

·   Controle de Código Fonte

·   Integração com project e excel.

 

Como ferramenta cliente deste serviço utilizamos o Visual Studio Team System, assim todos envolvidos em um projeto acessam as informações em uma ferramenta única, acabando principalmente com o problema de comunicação, ou seja, ninguém vai mais perguntar pra ninguém: – O que você está fazendo.

 

Saiba mais em: http://msdn.microsoft.com/vstudio/teamsystem/team/default.aspx

 

Conclusão

 

    O objetivo deste artigo é de mostrar as versões do Visual Studio 2005, trazendo uma pequena introdução sobre cada versão. Nos próximos artigos serão mostrados os novos recursos do VSTS e do Team Fondation.

 

Se você tem interesse em aprender .net ou discutir .net entre no grupo de usuários Codificando.net – São Paulo.

Se tiver alguma dúvida, crítica, sugestão de artigo, fale comigo: alexandretarifa@gmail.com. 

 

Add comment Maio 17, 2008

.Net – Smart Client – Introdução

Nos últimos anos, nos projetos de software comerciais e corporativos, uma pergunta que ocorre no início do projeto acaba tendo uma resposta simples e “óbvia”:

 

Esta aplicação será Windows ou Web?

 

A resposta em coro é dada pela equipe de desenvolvimento ou afins:

 

Web… é claro!

 

Esta resposta está certa ou errada? Depende! Aliás, depende muito e de inúmeros pontos que devem ser discutido antes desta resposta.

 

Acompanho diversos projetos em empresas de diversos ramos e portes e vejo em pelo menos 70% dos casos um erro de arquitetura. Às vezes erros grotescos que geram a necessidade de simplesmente refazer o sistema. Isso porque a resposta “óbvia” foi seguida.

 

Nada contra a Web, muito pelo contrário. A idéia principal deste artigo é apresentar os pontos de cada tecnologia e dependendo de cada caso, teremos uma resposta coerente e significativa.

 

Outro cenário baseado em fatos reais.

 

O Consultor chega a um cliente para uma reunião onde o cliente vai pedir um sistema:

 

- Olá amigo consultor. Eu gostaria de um sistema Web de controle de estoque!

 

Veja: o cliente já definiu a arquitetura do projeto!

 

Tipos de aplicações

Arquitetura Thin Client

 

São baseadas em navegador, ou seja, executadas dentro de um navegador, seguindo suas características e limitações.

 

Principais vantagens:

 

  • Eficiência na exposição – Seu sistema pode funcionar na China! Em “qualquer” browser, em qualquer sistema operacional;
  • Gerenciamento centralizado – O sistema fica em um ponto único (servidor) e o controle de quem controla a aplicação é muito mais simples. O gerenciamento engloba: configurações, versões, controle de acesso, etc;
  • Solução interna e externa – Seu sistema funciona tanto na intranet da sua empresa como na internet para todos.

 

Principais desvantagens:

 

  • 100% conectado – O sistema fica em um servidor e toda a sua execução ocorre no servidor. Com isso para que o usuário manipule o sistema a cada ação tomada no sistema, deve-se ocorrer uma conexão com o servidor da aplicação;
  • Limitações do navegador – Controles pobres, recursos simples e para funcionalidades relativamente simples, deve ter um conhecimento absurdo de DHTML e Java Script;
  • Produtividade do usuário baixa – O usuário (cliente) que é a pessoa que deve ficar feliz com o sistema, acaba perdendo muito na usabilidade e produtividade no seu dia-a-dia;
  • Produtividade do desenvolvedor baixa – Mesmo com novas tecnologias AJAX, desenvolver recursos mais avançados para melhorar a usabilidade acabam sendo de extrema dificuldade e trabalhoso e ainda sim não chega a ser uma tecnologia que oferece uma usabilidade 100% efetiva, porque nunca podemos esquecer: estamos dentro de um navegador.

 

Arquitetura Rich Client

Principais vantagens:

  • Baseada em Windows – Todo o poder do sistema operacional Windows;
  • Trabalha conectado e desconectado – Podem-se criar aplicações com funcionalidades Off-line e a aplicação não depende de nenhum serviço servidor para executar a não ser que tenha dependência de Banco de Dados ou algum outro recurso;
  • Solicitação ao servidor somente quando necessário – A aplicação só faz uma solicitação ao servidor caso algum recurso externo da aplicação é solicitado;
  • Produtividade do usuário – O usuário ganha em produtividade já que ele está utilizando uma aplicação que utiliza todos os recursos do sistema operacional;
  • Produtividade do desenvolvedor – O desenvolvedor praticamente só gasta o seu tempo no negócio da aplicação e praticamente nada com funcionalidades de interface, já que a tecnologia oferece os recursos nativamente.

Principais desvantagens:

  • DIFICULDADE NA DISTRIBUIÇÃO – A distribuição é muito complicada já que cada máquina tem suas particularidades que pode afetar no funcionamento do sistema ou até mesmo na não instalação do sistema.

 

Resumindo

Comparando as duas arquiteturas apresentadas, temos então Thin Client como a arquitetura ideal para termos uma distribuição e gerenciamento centralizado, já Rich Client acaba sendo uma arquitetura ideal para produtividade tanto do usuário como do desenvolvedor.

 

Arquitetura Smart Client

Combina as principais vantagens das duas arquiteturas já apresentadas.

 

  • Gerenciamento e distribuição centralizada e inteligente (click once);
  • Aplicações executadas localmente, trazendo todos os recursos do sistema operacional;
  • Produtividade para o desenvolvedor e usuário;
  • Trabalha conectado e desconectado;
  • Flexibilidade de dispositivos;
  • Etc etc etc etc etc.

 

Resumindo

 

A arquitetura Smart Client consolida as principais vantagens das arquiteturas Thin Client e Smart Client tornando-se muito efetiva e funcional para aplicações corporativas e comerciais.

O funcionamento é simples:

 

  • Gerenciamento e distribuição são feitos através da Web (IIS);
  • Execução da aplicação é local (Computador do usuário);
  • Comunicação da aplicação com regras de negócio com Web Services (Veja outros tipos a seguir).

 

Opiniões

Algumas opiniões de sites internacionais:

 

 

Tipos de clientes

  • Windows Forms;
  • Aplicações Windows Mobile;
  • Visual Studio Tools for Office.

 

Obs.: Lembrando que os clientes não devem conter absolutamente nenhuma regra de negócio do sistema… Somente interface de apresentação, já que todo o negócio deve estar em um serviço servidor.

 

Escolhendo entre Smart Clients e Thin Clients

· Fatores determinantes

Analisar bem antes do início do projeto.

Uma arquitetura Thin Client é, freqüentemente, a mais apropriada se você precisa tornar uma aplicação externa disponível para um grupo externo diverso, enquanto uma arquitetura Smart Client é geralmente a mais apropriada para uma aplicação interna que necessita integrar-se com ou coordenar outras aplicações ou hardware do cliente, ou que seja requerido que trabalhe offline ou forneça funcionalidade de alto desempenho específico por meio de uma interface de usuário com boa resposta.

 

Tabela comparativa:

 

Descrição

Smart Client

Thin Client

Fornece uma rica interface de usuário

Sim e sofre uma evolução no Windows Vista (WPF).

Sim, mas não tão rica (ATLAS)

Pode interagir com outras aplicações/hardware locais

Sim

 

Em poucos casos

 

Qualquer plataforma

Não, somente Windows (Desvantagem? J).

Sim, Browser atualizado.

 

 

Desafios da Arquitetura Smart Client

· Separar completamente: camada de apresentação da camada de negócios

· Colocar dados em cache no cliente, fará com que o desempenho e a aproveitamento de uma aplicação melhorem significativamente, mas você deve assegurar-se de que os dados sejam atualizados adequadamente e que dados desatualizados não sejam utilizados.

· Distribuição simples

· O advento de arquiteturas orientadas a serviços significa que você pode projetar Smart Clients para utilizar serviços. Todos esses serviços são fornecidos em padrões de mercado, o que melhora a interoperabilidade, suporte à ferramenta de programação e a facilidade com que novos atributos podem ser desenvolvidos em uma aplicação Smart Client.

 

Manipulação de Dados

  • Os dados da aplicação podem ser disponibilizados ao cliente por meio de uma aplicação de servidor, ou a aplicação pode utilizar seus próprios dados locais.
  • Cache de dados.
  • Simultaneidade de dados.
  • Utilização dos DataSets ADO.NET para gerenciar dados
  • Vinculação de dados no Windows Forms.

 

Conexões e Serviços

  • Microsoft® .NET Enterprise Services;
  • Microsoft .NET remoting;
  • Microsoft Windows® Message Queuing (também conhecido como MSMQ);
  • Web Services;
  • WCF – Windows Comunication Foundation.

Distribuição, gerenciamento e atualização – Click Once

  • Mecanismo de distribuição automática, onde o cliente é distribuído através da Web;
  • Cliente acessa através de uma URL;
  • Auto Update através de configuração ou API;
  • Segurança integrada;
  • Isolado por usuário do Windows;
  • Parte do .NET Framework 2.0.

Conclusão: A arquitetura Smart Client trás benefícios claros que facilitam muito o desenvolvimento e oferece um resultado excelente. Nos próximos artigos será apresentado na prática como utilizar a arquitetura.

Add comment Maio 17, 2008

Qualidade de Código – Como o Visual Studio 2005 pode nos ajudar!

Pré-requisito: Estar convencido que a qualidade no código é um dos fatores mais importantes para o resultado final de um sistema. Pode parecer incrível, mas nem todas as empresas dão muito valor a isso.

Qualidade de Código

Por mais que as ferramentas e linguagens de programação evoluam cada vez mais, ainda sim grande parte do código ainda é feito por um ser humano, o que possibilita então que erros aconteçam, como diz aquele ditado antigo: errar é humano.

Para facilitar então a auditoria do que é feito, o Visual Studio 2005 nos oferece algumas ferramentas para tentar diminuir cada vez mais a quantidade de códigos incorretos ou problemáticos, com esse paradigma levantado, foi criada uma versão do Visual Studio chamada: Visual Studio Team Developer Edition, onde a qualidade no código foi a principal característica empregada. A versão Professional do Visual Studio está vindo com estes mesmos recursos do Visual Studio Team Developer Edition.

Este produto faz parte de família de produtos do Visual Studio Team System (Figura 1), onde você consegue algumas informações no site www.vstsrocks.com.br.

Figura 1 – Visual Studio Team System

Os recursos são divididos em duas categorias: Ferramentas de análise de código e testes de código (Unit Test).

Análise de Código

Os analisadores de códigos já são utilizados em muitos projetos, porém sempre com ferramentas separadas do Visual Studio. Já nesta versão do Visual Studio temos o analisador de código estático do Visual Studio além do fxCop, produto já disponível na versão 2003, porém que necessitava de uma instalação à parte.

O analisador do Visual Studio trás muitas possibilidades de auditoria no código onde podemos configurar somente o que se faz relevante ao projeto a ser analisado.

Na prática

Temos um projeto Class Library simples, em VB.Net, na janela Solution Explorer, selecione My Project e então a janela de configuração é aberta. Selecione a aba Code Analisys (Figura 2).

Figura 2 – Configurações do analisador de código

Enable Code Analisys – Liga/Desliga o analisador de código

Rules – Liga/Desliga cada item ou categoria de analises que serão levadas em consideração na análise do código. Além disso é possível definir se casa análise gera somente um Warning ou Error.

No projeto criado adicione o seguinte código:

Public Function Analise(ByVal Param As String) As Collections.Generic.List(Of String)

Dim variavelNaoUsada As String

Dim lista As New Collections.Generic.List(Of String)

lista.Add(“Windows Forms”)

lista.Add(“Asp.Net”)

lista.Add(“Windows Mobile”)

Return lista

End Function

Os pontos que vamos configurar vão detectar problemas na nomenclatura do parâmetro, da variável que não foi utilizada, sendo assim vamos habilitar somente Naming Rules e Performance Rules. Um detalhe, é que as regras de nomenclatura que são levadas em consideração provém da convenção sugerida pela Microsoft, para saber mais conheça o Design Guidelines (Manual do Visual Studio).

Figura 3 – Analisador de código

Para rodar o analisador, basta compilar a aplicação (Control + Shift + B), assim na própria janela de OutPut é exibido o resultado da análise.

C:\Documents and Settings\alexandret\My Documents\Visual Studio 2005\Projects\AnalisadorCodigo\AnalisadorCodigo\Class1.vb(4): warning : CA1709 : Microsoft.Naming : Correct the casing of parameter name ‘Param’.

C:\Documents and Settings\alexandret\My Documents\Visual Studio 2005\Projects\AnalisadorCodigo\AnalisadorCodigo\Class1.vb(4): warning : CA1804 : Microsoft.Performance : Class1.Analise(String):List`1<System.String> declares a local, ‘variavelNaoUsada’, of type System.String, which is never used or is only assigned to. Use this local or remove it.

Claro que neste exemplo simples somente estes dois itens foram encontrados, já em um grande projeto é necessário uma análise refinada nos itens que serão checados.

Em casos mais criteriosos, ao invés de exibir como um simples Warning, basta na configuração alterar para Error, com isso o projeto nem mesmo é compilado.


Teste Unitário e Code Coverage

O conceito de teste unitário já é conhecido a um bom tempo, porém sempre trabalhávamos com add-ins no Visual Studio 2003 (Nunit). Agora na versão 2005 temos o recurso integrado com o Visual Studio e além disso podemos medir o percentual de código que foi testado ou não. E como os recursos estão integrados com o Visual Studio, a implementação é muito mais simples e principalmente automatizada, isso aumenta em muito a produtividade.

O grande ponto deste recurso está na possibilidade de integração com o Team Foundation Server, onde podemos criar políticas de chick-in no Source Control e dizer que um desenvolvedor só pode fazer o check-in de um código testado e com um percentual mínimo de aceite. Isso é o grande negócio, pois controlamos via ferramenta se as regras de desenvolvimento estão sendo seguidas.

Na prática

Temos um projeto Class Library simples, em VB.Net, na janela Solution Explorer adicione uma classe chamada Login. Vamos adicionar um código muito simples, um método de LoginAcesso que recebe o nome de um usuário e senha e retorna se este usuário está autenticado ou não.

Public Function LoginAcesso(ByVal usuario As String, ByVal senha As String) As Boolean

If usuario = “Usuario” Then

Return True

Else

Return False

End If

End Function

O objetivo do teste neste caso é verificar se a validação está correta, ou seja, esperamos um retorno como True na chamada deste método.

Criar o teste unitário é muito simples, clique com o botão direito do mouse sobre o código e Create Unit Test. Uma janela de Wizzard é aberta (Figura 4)

Figura 4 – Criando o Unit Test.

Selecione o método e clique em OK. Uma nova janela é aberta pedindo o nome do projeto, note que um novo projeto do tipo Test é criado.

O Visual Studio cria então uma classe LoginTest e o método LoginAcessoTest que é o responsável pelo teste. Note alguns TODO´s, onde devemos adicionar os valores que queremos testar. A chamada do teste deve ficar conforme a listagem abaixo:

Public Sub LoginAcessoTest()

Dim target As Login = New Login

Dim usuario As String = “Alexandre” ‘TODO: Initialize to an appropriate value

Dim senha As String = “1234″ ‘TODO: Initialize to an appropriate value

Dim expected As Boolean

Dim actual As Boolean

actual = target.LoginAcesso(usuario, senha)

Assert.AreEqual(expected, actual, “Valor incorreto.”)

End Sub

A verificação está no Assert.AreEqual, ou seja, podemos utilizando a classe Assert fazer inúmeros tipos de testes.

Para rodar o teste, no menu do Visual Studio selecione Test > Windows > Test View (Figura 5).

Figura 5 – Test View.

Na janela Test View clique no botão Run Selection.

Figura 6 – Test Result.

Com isso temos a execução o teste finalizada porém não sabemos se 100% do código foi testado. Para isso utilizamos o recurso chamado Code Coverage, que analisa o percentual de código executado. No Solution Explorer, abra o diretório Solution Items e dê um duplo clique em localtestrun.testrunconfig, com isso uma janela é aberta. Selecione Code Coverage e habilite o projeto Class Library, clique em Apply e Close.

Figura 7 – Configuração.

Novamente pelo Test View, execute o teste criado anteriormente. Na janela Test Result, clique no último botão Show Code Coverage Results

Figura 8 – Code Coverage.

Uma nova janela de resultados é aberta, a Code Coverage Results (Figura 9), vá até o método LoginAcesso e dê um duplo clique, com isso podemos verificar o código executado.

Figura 9 – Code Coverage Result.

Conclusão: Trabalhar com o Visual Studio 2005 Team System significa ter diversos recursos adicionais em nossa ferramenta de trabalho, mesmo tendo estes recursos em forma de add-in do Visual Studio, a facilidade que os recursos integrados nos oferece já é um bom motivo para utilizarmos à ferramenta.

Add comment Maio 17, 2008

Algumas coisas legais do Visual Basic .Net 9.0 – 2008

Vem ai mais uma versão do Visual Basic! Junto com a nova versão do Framework, a versão 3.5 temos algumas implementações interessantes em uma das linguagens mais utilizadas do mundo.

Um pouco de história

O Visual Basic foi totalmente refeito com o lançamento da plataforma .Net, e desde então continuou evoluindo junto com o Framework. Atrelado a versão 1.1 do Framework tínhamos o VB 7, e com a versão 2.0 ou VB 8 ou Visual Basic 2005.

A evolução do Framework é significativa, já que em 2002 tivemos o lançamento da versão 1.0 e apenas 5 anos depois já estamos na versão 3.5.

Veja a tabela desta evolução:

2002

2003

2005

2006

2008

Visual Studio

VS 2002

VS 2003

VS 2005

VS 2005 + Add In

VS 2008 beta

Linguagens

VB 7.0

C# 1.0

VB 7.1

C# 1.1

VB 8.0

C# 2.0

VB 8.0
C# 2.0

VB 9.0
C# 3.0

Framework

1.0

1.1

2.0

3.0

3.5

CLR

1.0

1.1

2.0

2.0

2.0

Podemos acompanhar também a evolução da linguagem depois da Plataforma .Net:

Acompanhando as discussões em blogs do time de VB (http://blogs.msdn.com/vbteam) podemos reparar nos seguintes objetivos:

· Simplificar ainda mais o código;

· Não ignorar as versões anteriores;

· Tornar a linguagem funcional e extensível;

· Não revolucionar nada.

Inicializadores de Objetos

A inicialização de objetos esta presente há muito tempo na linguagem, e parece ser algo inofensivo, algo totalmente sem segredo… se analisarmos um código muito simples, realmente isso é verdade!

Dim cli As New Cliente

Como disse, sem segredo algum… mas vamos dar uma olhada em um código onde configuramos a propriedade de alguns clientes e adicionando em uma lista de clientes:

Dim lista As New List(Of Cliente)

Dim cli1 As New Cliente

cli1.Nome = “Cliente 1″

cli1.Idade = 28

lista.Add(cli1)

Dim cli2 As New Cliente

cli2.Nome = “Cliente 2″

cli2.Idade = 28

lista.Add(cli2)

Dim cli3 As New Cliente

cli3.Nome = “Cliente 3″

cli3.Idade = 28

lista.Add(cli3)

Dim cli4 As New Cliente

cli4.Nome = “Cliente 4″

cli4.Idade = 28

lista.Add(cli4)

Dim cli5 As New Cliente

cli5.Nome = “Cliente 5″

cli5.Idade = 28

lista.Add(cli5)

A idéia dos inicializadores de objetos, é através do With (não é o velho With J ) fazer a inicialização de objetos.

Dim cli As New Cliente With {.Nome = “Cliente 1″, .Idade = 10}

Neste caso então, o With na seqüência da instância do objeto já disponibiliza as propriedades e já é possível passar os valores.

Se compilarmos o código e decompilar o código, veja o que ocorre (utilizando o reflector – http://www.aisto.com/roeder/dotnet)

Dim  VB$t_ref$S0 As New Cliente    
    VB$t_ref$S0.Nome   = “Cliente 1″
    VB$t_ref$S0.Idade  = 10

Veja que o compilador criou uma variável com um nome estranho e atribuiu os valores da mesma forma que fizemos anteriormente. Ou seja, o código gerado após compilar é idêntico ao que criamos.

O código completo ficaria assim:

Dim lista As New List(Of Cliente)

lista.Add(New Cliente With {.Nome = “Cliente 1″, .Idade = 10})

lista.Add(New Cliente With {.Nome = “Cliente 2″, .Idade = 20})

lista.Add(New Cliente With {.Nome = “Cliente 3″, .Idade = 30})

lista.Add(New Cliente With {.Nome = “Cliente 4″, .Idade = 12})

lista.Add(New Cliente With {.Nome = “Cliente 5″, .Idade = 14})

Inferência de tipos

As linguagens .Net são fortemente tipadas… isso já é fato desde a versão 1.0 do framework. Porém agora, também temos a inferência do compilador na decisão de qual tipo iremos utilizar… não entenda isso como… deixamos de ser fortemente tipados!

Normalmente trabalhamos assim:

Dim nome As String = “Valor String”

Dim idade As Integer = 10

Mas agora podemos deixar que o compilador decida por nós J

O código:

Dim nome = “Valor String”

Dim idade = 10

Vamos decompilar e:

Public Shared Sub Main()   
  Dim nome As String = “Valor String”
  Dim idade As Integer = 10

A mesma coisa J

Métodos de extensão

Podemos também a partir de agora, criar um método de extensão a alguma classe já existente… por exemplo: podemos adicionar um método na classe String, sem herdar a classe ou sobrescrever algo já existente.

Exemplo:

<System.Runtime.CompilerServices.Extension()> _

Public Sub Exibir(ByVal s As String)

Console.WriteLine(s)

End Sub

Veja que adicionamos um atributo no médoto (obrigatório) e um parâmetro do tipo string.

Agora, se tivermos uma string:

Dim a As String = “Alexandre”

Podemos chamar o método criado anteriormente:

a.Exibir()

Então, é assumido que o parâmetro do método de extensão é o valor atribuído a variável.

Linq

Para quem trabalha com coleções, uma das tarefas mais chatas está associado a navegação trabalhosa entre os itens da lista… ou então, um excesso de carrega, descarrega pra cima e para baixo que acontece durante a execução. O Linq (Language Integrated Query) trás a possibilidade de navegarmos dentro de coleções de objetos. Para saber mais sobre LINQ veja aqui

Um exemplo simples, se tivermos uma lista de Clientes (Dim lista As New List(Of Cliente)) alimentada, podemos buscar os dados neste objeto de forma semelhante a uma consulta.

Podemos adicionar alguns itens:

Dim lista As New List(Of Cliente)

lista.Add(New Cliente With {.Nome = “Cliente 1″, .Idade = 10})

lista.Add(New Cliente With {.Nome = “Cliente 2″, .Idade = 20})

lista.Add(New Cliente With {.Nome = “Cliente 3″, .Idade = 30})

lista.Add(New Cliente With {.Nome = “Cliente 4″, .Idade = 12})

lista.Add(New Cliente With {.Nome = “Cliente 5″, .Idade = 14})

A partir daí, podemos fazer uma query com filtros, comparações e o que mais for necessário:

Dim clientes = From c In lista _

Where c.Idade > 12

Teremos então uma coleção de clientes com a idade maior que 12 anos, então basta navegar na coleção de clientes:

For Each c As Cliente In clientes

Console.WriteLine(c)

Next

Conclusão

São facilidades e recursos que aumentam principalmente a produtividade de desenvolvimento. O que foi apresentado aqui também é possível utilizarmos com o C#, com a sintaxe específica dele.

As linguagens evoluem, e temos que acompanhar isso para utilizarmos ao máximo o poder do que utilizamos.

Add comment Maio 17, 2008

.NET: Personalizando aplicações Windows Forms

Personalização é a palavra da moda principalmente em aplicações Web, onde é feito um esforço tremendo para conseguir agradar a todos que utilizam uma determinada aplicação. As aplicações Windows não poderiam ficar de fora e por isso que foram adicionados no Windows Forms 2.0 recursos que facilitam o armazenamento de informações personalizadas de acordo com o usuário.

Temos a opção de armazenar estes valores no que chamamos de Settings, que são chaves armazenadas no arquivo de configuração app.Config que podem ser tipadas e o principal: categorizada por escopo. São dois tipos de escopos:

  • User: pode ser alterado por usuário
  • Application: fixo durante a execução da aplicação.

Para personalizarmos as aplicações devemos então sempre utilizar o escopo como User.

Na prática

Crie um novo projeto no Visual Studio 2005 com o template Windows Forms e a linguagem de programação VB.Net. Vamos montar um exemplo simples no formulário Form1 já adicionado no projeto.

No Form1 adicione os controles conforme a imagem abaixo:

No Solution Explorer dê um duplo clique em My Project e selecione a aba Settings.

Adicione 3 settings:

São os valores que vamos exibir no formulário criado, o código é muito simples. Adicione no Form Load o código abaixo:

Me.txtAplicacao.Text = My.Settings.Aplicacao
Me.txtCor.Text = My.Settings.CorFundo.ToString
Me.txtNome.Text = My.Settings.Nome

Com isso recuperamos os valores através da classe My.

Para atribuir os valores, funciona da mesma forma, no botão gravar adicione o código atribuindo um novo nome:

My.Settings.Nome = Me.txtNome.Text
My.Settings.Save()

Note que o evento Save é responsável por alterar os valores no arquivo de configuração.

Como testar?

No Visual Studio toda vez que executamos uma aplicação é gerado um novo executável e um novo arquivo de configuração. Por isso se testarmos diretamente pelo Visual Studio dá a impressão de que os valores não foram alterados.

Entre na pasta que você criou o projeto:

Em seguida entre no diretório Bin/Debug

Rode então o executável e altere o nome e clique no botão gravar.

Abra então o arquivo Personalização.exe.config no notepad, e veja o resultado da alteração do valor.

Conclusão

Criar uma aplicação personalizável é uma tarefa muito simples, com isso podemos criar aplicações mais criativas e com um resultado mais interessante ao usuário.

Add comment Maio 17, 2008

Boas Vindas

Após muito tempo pensando cheguei a conclusão que já havia passado da hora de eu criar um Web Site Pessoal. A idéia é centralizar meus artigos, treinamentos, idéias, posts, etc etc etc.

A escolha do lugar foi dura, mas tenho certeza que não vou me arrepender. O WordPress parece ser realmente o produto ideal para utilização como host do site.

Espero que as contribuições sejam úteis para os leitores e que em breve eu posso conseguir oferecer um bom conteúdo.

[]´s

Add comment Maio 17, 2008


Núvens

Artigo Post

Preferidas

 

Novembro 2009
S T Q Q S S D
« Mai    
 1
2345678
9101112131415
16171819202122
23242526272829
30