codificando .net magazine - edição 10

43

Upload: weliton-junior

Post on 12-Jun-2015

1.310 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Codificando .NET Magazine - Edição 10
Page 2: Codificando .NET Magazine - Edição 10

Fale com Editor

É muito importante para a equipe saber a sua opinião sobre a revista, caso tenha alguma critica, sugestão, ou elogio entre em contato. Caso tenha interesse em publicar um artigo na revista envie o título e um resumo do tema em formato Word.

[email protected]

EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Sergio Gonçalves REVISÃO Fernanda Sallai Giaccomo Sabino MONTAGEM / FORMATAÇÃO Milton Carvalhaes EDITORAÇÃO E DIAGRAMAÇÃO Adriano Almeida COLABORADORES Adriano Luciano Candido Alan Santos Diego Nogare Felipe Aron Felipe Augusto da Costa Marques Fernanda Sallai Gustavo Henrique Dornelas Seiti Yamashiro

Wagner Roberto Gavóglio

Produzido por:

www.codificando.net

Edição 10 Número 10 Ano 03 2009

Sumário

Lendo as tabelas do SAP com o .NET SAP connector 2.0 através de RFC.

Por: Diego Nogare

09 :. .NET SAP connector 2.0

Jogos desenvolvidos em XNA para a Internet.

Por: Felipe Aron

28 :. Silver Sprite

Saiba como integrar o CLR ( Common Lan-guage Runtime) do .NET com o SQL Server. Por: Wagner Roberto Gavóglio / Adriano Luciano Candido

15:. SQL Server 2.005 com CLR

04 :. Gerando Boletos Bancários

Veja nesta primeira parte, como gerar boletos bancários utilizando ASP.NET.

Por: Seiti Yamashiro

03:. Editorial 42:. .Close ( )

Introdução a conceitos relativos ao .NET Framework, e ao Visual Studio, destacando o projeto “Rosário”. Por: Alan Santos / Gustavo Henrique Dornelas / Felipe Augusto da Costa Marques

33:. Visual Studio Team Sytem e

Projeto Rosário

Exemplo de como enviar e-mail utilizando ASP.NET de forma simples

Por: Fernanda Sallai

22:. Envio de e-mail utilizando o C#

Page 3: Codificando .NET Magazine - Edição 10

Diego Nogare [email protected]

Depois do sucesso da edição anterior da revista Codificando .Net e-Magazine, que já estava diagramada

pelo novo time de editores, conseguimos cumprir a promessa de publicar uma revista a cada dois meses.

Nesta edição, trazemos artigos bem interessantes sobre ASP .NET, SQL Server, C#, XNA e até SAP.

Os autores de algumas das matérias desta edição são membros do Codificando .Net, e que mostraram interesses em publicar conosco os artigos. Acredito que aos poucos, vamos criando este costume de mais

membros participarem com a geração de conteúdo.

A revista está aberta a receber (e publicar, claro!) quaisquer artigos dos membros da comunidade, esta é uma iniciativa que acreditamos ser fundamental para o bom andamento da comunidade.

Editorial

Edição 10 Número 10 Ano 03 2009

Page 4: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 4444

Gerando Boletos Bancários

Parte I

Veja nesse artigo como gerar boletos bancários usando o ASP.NET

Vamos primeiro entender do que é composto basicamente um boleto: • Banco: quem gerencia a transação; • Cedente: quem vai receber a grana; • Sacado: quem paga; • Valor do documento: quanto será

pago • Data de vencimento: até quando

pode ser pago; • Modalidade: com ou sem registro. O

comum para vendas online é sem

registro. Se o sacado não pagar, a responsabilidade de correr atrás é do cedente.

A entidade que padroniza os boletos no Brasil é a Federação Brasileira de Bancos - FEBRABAN. É claro que o desenvolvedor deve conhecer mais que o básico, caso queira gerar um boleto. Na figura 1 está o modelo do boleto do Itaú. Mas note que ainda assim a descrição está resumida.

Fig. 1 - Boleto padrão Itaú

1. Nome do banco, que pode conter também seu logotipo;

2. Código do banco, com seu respectivo DV;

3. Local de pagamento; 4. Data do documento, que é quando

ele foi gerado; 5. Número do documento, obrigatório

para carteiras sem registro; 6. Carteira, não utilizado pelo Itaú; 7. Espécie, use R$ para usar nossa

moeda; 8. Agência/Código Cedente, no formato

1234/56789-7 e Nosso Número, no formato 123/45678901-5;

9. Uso exclusivo do funcionário caixa ;

10. Instruções, condições para recebimento, dados sobre multas por atraso, bancos autorizados etc.

Por: Seiti Yamashiro

Page 5: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 5555

para populá-lo. Criei uma classe cujas propriedades são os dados a serem inseridos no boleto (código 1) namespace Portal.Controles.Boleto { public class Dados { public DateTime DataDocumento { get ; set ; } public DateTime DataVencimento { get ; set ; } public DateTime DataProcessamento { get ; set ; } public string Cedente { get ; set ; } public string SacadoResumido { get ; set ; } public string SacadoCompleto { get ; set ; } public string Agencia { get ; set ; } public string CodigoCedente { get ; set ; } public int NumeroDocumento { get ; set ; } public string EspecieDocumento { get ; set ; } public string Aceite { get ; set ; } public string NossoNumero { get ; set ; } public string Carteira { get ; set ; } public string Instrucoes { get ; set ; } public int Quantidade { get ; set ; } public decimal Valor { get ; set ; } public decimal ValorDocumento { get ; set ; } public string CodigoBaixa { get ; set ; } public bytes[] CodigoBarra { get ; set ; } public string LinhaDigitavel { get ; set ; }

A duas listagens acima já ajudam o programador a saber quais dados ele precisa ter à mão para gerar um boleto bancário. Alguns itens do boleto deverão ser criados automaticamente pelo sistema a partir destes dados, tais como a linha digitável e o código de barras. Uma excelente fonte de documentação se encontra em http://www.phpboleto.com.br/. Lá existem outros modelos disponíveis para download. E, se seu projeto é em PHP, recomendo utilizá-lo! Outro lugar legal para se informar é o site macoratti.com. Criando um template Por meio do Crystal Reports, que já vem no Visual Studio 2008, criei o template da figura 2.

Fig. 2 - Elaborando no Crystal Reports

Note que ele contém só o esqueleto. Nenhum campo dinâmico foi adicionado (bom, talvez a espécie, que considerei ser sempre R$) ainda. Template pronto, precisamos dos dados

Gerando Boletos Bancários

Page 6: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 6666

} } Cód. 1 - Classe DAO para os dados do boleto

Agora é preciso terminar o template do boleto. Ao compilar o projeto podemos inserir as propriedades da classe acima em nosso template. Para adicionar a classe recém criada como fonte de dados (Data Source) é só ir para DataBase Fields DataBase Expert (figura. 3)

Fig. 3 - Acessando o DataBase Expert

Na caixa de diálogo que se abre, é só escolher a classe recém criada. Ficam à disposição todas as propriedades necessárias para popular o boleto (figura 4).

Fig. 4 - Dados dinâmicos prontos para inserção

Por meio do famigerado arrastar e soltar, é só terminar de criar o template, colocando os campos nos lugares corretos. Um trabalho simples, mas meio chato. Testando a geração do boleto Template pronto. Posso então criar uma classe encarregada de buscar os dados, a template, juntá-los e serví-los. A classe não tem nada de mais, e está preparada para funcionar em ambiente ASP.NET (código

2). namespace Portal.Controles.Boleto { public enum Banco { ITAU } public class Boleto { CrystalDecisions.CrystalReports.Engine.ReportDocument rel; public Boleto( Banco banco, HttpServerUtility server)

Gerando Boletos Bancários

Page 7: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 7777

{ rel = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); rel.Load(GetTemplateFilePath(banco, server)); } public void Baixa( HttpResponse response, IEnumerable dataSource) { rel.SetDataSource(dataSource); rel.ExportToHttpResponse( CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, response, true , string .Format( "Boleto_{0}.pdf" , DateTime .Now.Date.ToShortDateString())); } protected string GetTemplateFilePath( Banco banco, HttpServerUtility server) { switch (banco) { case Banco .ITAU: return server.MapPath( "~/Controles/Boleto/TemplateItau.rpt" ); default : throw new Exception ( "Este tipo de boleto não foi implementado ainda" ); } } } } Cód. 2 - Classe responsável pela geração do boleto.

É claro que muita coisa na classe pode

ser melhorada, como o caminho até o arquivo do template, que está hardcoded. Mas já funciona e está preparado para funcionar com mais de um tipo de template. Como testar então? Criei uma página ASPX contendo um botão. Vinculei um método ao evento OnClick. O corpo do método se encontra no código 3. protected void botao_OnClick( object sender, EventArgs e) { Portal.Controles.Boleto.Boleto boleto = new Portal.Controles.Boleto.Boleto(Portal.Controles.Boleto.Banco.ITAU, Server); List dados = new List (); dados.Add( new Portal.Controles.Boleto.Dados() { Aceite = "N" , Agencia = "1234" , Carteira = "123" , Cedente = "Indústria ACME", CodigoBaixa = "123/12345678-9" , CodigoBarra = File.ReadAllBytes(Server.MapPath( "~/Caminhp/para/uma/imagem.jpg" )), CodigoCedente = "12345-6" , DataDocumento = DateTime.Now, DataProcessamento = DateTime.Now, DataVencimento = DateTime.Now.AddDays(5), EspecieDocumento = "AB" , Instrucoes = @"Sujeito a protesto se ñao for pago no vencimento no vencimento

Gerando Boletos Bancários

Page 8: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 8888

Seiti Yamashiro

Graduando em Ciência da Computação, desenvolvedor web em C#/Asp.NET com banco de dados MS SQL Server. Nas hora vagas costuma programar em PHP e implantar sistemas livres em Linux, além de alimentar um blog: http://seiti.eti.br

pagavel em qualquer agenia bancaria apos vencimento cobrar R$ 0,42 por dia de atraso apos vencimento cobrar multa de R$ 6,66" , LinhaDigitavel = "12345.12345 12345.123456 12345.123456 1 1230000066600" , NossoNumero = "123/12345678-9" , NumeroDocumento = 123456890, Quantidade = 0, SacadoCompleto = @"Dino da Silva Sauro CNPJ - 12.345.678/123-11 Rua das Casas, S/N 01111-111 Vl Das Ruas Sao Paulo SP" , SacadoResumido = "Dino da Silva Sauro" , Valor = 0, ValorDocumento = 666 }); boleto.Baixa(Response, dados); } Cód. 3 - Teste de geração de boleto

Ou seja, crie uma lista, lhe adicione um objeto passe tudo e mais um pouco para a classe Boleto e chame o método Baixa. Um boleto em pdf será gerado e entregue ao usuário pelo navegador. E agora? Agora que já temos a geração de um boleto dummy funcionando, precisamos acertar os dados que o compõem. Existem regras para a linha digitável, precisamos calcular alguns dígitos verificadores e ainda gerar a imagem correspondente ao código de barras. Isto fica para a Parte II! Aguardem!

Gerando Boletos Bancários

Page 9: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 9999

Lendo as tabelas do SAP com

o .NET SAP Connector 2.0

através de RFC

Aprenda como ler tabelas do SAP com o .Net SAP

Connector 2.0.

Introdução Muitas empresas atualmente controlam todas suas atividades utilizando um dos ERPs mais famosos do mundo, o SAP. Este ERP alemão possui muitos recursos já prontos para controlar as atividades da empresa, estes recursos são chamados Standard, e são separados em módulos de atividades (SD [Sales and Distribution], FI [Financial], HR [Human Resources], etc) e é possível integrar todos dados destes módulos para uma comunicação ou tomada de decisão mais precisa. As áreas de atuação do SAP são muito bem desenhadas e definidas, onde o pessoal da área funcional (cujo trabalho é configurar o standard do SAP) não tem acesso às configurações dos servidores, usuários, acessos, permissões, e etc cuja a área responsável é BASIS (que são os “caras de infra”) e não desenvolvem nada na solução. Por sua vez existem customizações realizadas em transações “Z” ou “Y” (que não são as standards) são criadas para um processo bem específico de uma determinada regra de negócios do cliente,

cujo processo não pode ser implementado por uma configuração do standard. Elas podem estar dentro de uma “exit” do standard (a grosso modo, no meio do código do standard), ou ser 100% Z ou Y, ou seja, um programa inteiro criado sem nenhuma referência ao código standard, podendo ou não utilizar tabelas standard no desenvolvimento. Estas transações (Z ou Y) são criadas pelos desenvolvedores, que são conhecidos como ABAP. Nosso trabalho, enquanto desenvolvedor .Net, será em parceria com os ABAPs e os BASIS. Os ABAPs é que farão as RFCs (Remote Function Call – Chamada de função externa) que serão acessadas através do SAP .Net Connector 2.0 (que é homologado pela SAP para trabalhar com o .Net 1.1 – Não existem atualizações do SAP .Net Connector para outras versões do .Net framework), e a equipe de BASIS que nos passarão os dados para a montagem da string de conexão com o SAP. Resumindo... • Funcional: Entende o processo,

Por: Diego Nogare

Page 10: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 10101010

para Add New Item. Esta tela (Figura 1) será aberta e então procure o ícone do SAP Connector Proxy.

Após a adição, o item aparecerá no Solution Explorer (neste exemplo, foi adicionado na própria raiz do projeto, mas ele pode ser adicionado dentro de alguma outra pasta para melhorar a organização), como mostra a Figura 2.

Dê dois cliques no Proxy adicionado, e uma tela sem nenhum controle será aberta no painel principal do Visual Studio 2003. Esta tela que se abriu, servirá de container para as RFCs gerarem automaticamente os códigos das classes de acesso. Este processo será explicado com mais detalhes adiante. Agora, para conseguir utilizar as RFCs

• ABAP: Desenvolvimento. • Basis: Infra-estrutura / Segurança Agora que já temos uma noção básica (muito, mas muito básica mesmo) de como é a estrutura do SAP, vamos criar uma aplicação Windows Forms em C# que fará a leitura de uma RFC do SAP e colocará o retorno em um DataTable, a parti daí, o céu é o limite. A parte de abrir o Visual Studio e iniciar uma aplicação Windows Forms não será abordada neste momento, pois existe muito material sobre isso na internet. Vou focar na criação da aplicação pra integrar com o SAP. Então vamos começar a aplicação já nos pontos que são novidades... Para acessar o SAP através do .Net, é necessário ter o SAP .Net Connector 2.0 que é um conector do SAP já instalado, e só pode ser baixado através de usuário e senha válidos no site da SAP. Geralmente as empresas que compram licenças de SAP recebem este usuário Após a instalação do conector, um novo ícone será adicionado nos templates que podem fazer parte do projeto (Figura 1), este novo item é o “SAP Connector Proxy”. Este Proxy receberá todos os itens das RFCs que serão conectadas através do .Net e montará automaticamente as classes de acessos com suas respectivas properties (métodos Get e Set), entre outras coisas. Para utilizar este proxy, será necessário adicionar um novo item ao projeto, então vá até a Solution Explorer, clique com o botão direito do mouse e aponte

Figura 2. Proxy na Solution Explorer.

Figura 1. Adicionando o proxy ao Projeto.

Lendo as tabelas do SAP com o .NET SAP Connector 2.0

Page 11: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 11111111

Figura 4: RFCs que poderão ser utilizadas.

Figura 5: RFC arrastada para o proxy.

que foram criadas pelos ABAPs, lembra?!), é necessário adicionar os dados do servidor do SAP (que serão fornecidos pelo pessoal de BASIS, isso você também lembra, né?!) no Server Explorer, para se poder visualizar as RFCs que estão liberadas pra acesso. Vá até o Server Explorer, procure o item do SAP (que foi inserido após a instalação do SAP .Net Connector 2.0), expanda a árvore do SAP e clique com o botão direito no item “Application Servers”, então adicione os dados AppServerHost / Client / Password / SystemNumber e UserName. Acompanhe este passo na Figura 3.

Após este passo, será possível expandir o “Application Servers” e visualizar o servidor que você adicionou (terá o nome fornecido ao campo AppServerHost). Ao expandir este item, será necessário configurar o filtro das Functions para aparecer as RFCs (crie um novo filtro e coloque os dados para filtrar (* retorna todas)) que poderão ser utilizadas na aplicação. Acompanhe as RFCs fornecidas na Figura 4.

Agora que as RFCs já estão listadas, é só arrastar a RFC que será acessada para dentro do Proxy, na tela que já deve estar aberta no painel principal do Visual Studio. Caso isso ainda não esteja feito, dê dois cliques no item do proxy na Solution Explorer. Quando arrastar a RFC para cima do proxy, os dados da classe desta RFC serão criados automaticamente, permitindo o acesso à seus campos através de suas properties. Acompanhe na Figura 5, o proxy com uma RFC já arrastada. Agora que a RFC foi arrastada para o proxy, as classes para acessar os dados do SAP foram criados automaticamente dentro do proxy, se for até a Solution Explorer e exibir os itens ocultos (Show All Files), expandindo o proxy é possível ver as classes criadas (classes exibidas na Figura 6).

Figura 4: RFCs que poderão ser utilizadas.

Figura 3: Inserindo os dados no Server Explorer.

Lendo as tabelas do SAP com o .NET SAP Connector 2.0

Page 12: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 12121212

Está faltando pouco agora, o mais complicado já passou. Vamos ao código do método acessarSAP( ) criado, e chamado pelo método LOAD do formulário. Acompanhe a Listagem 1, onde os códigos deste método foram inseridos. private void acessarSAP() { try { lendoSAP proxy = new lendoSAP("_STRING DE CONEXÃO_”); BAY2_N2RV_RPCAMTable tabela-SAP = new BAY2_N2RV_RPCAMTable(); proxy.Bay2_N2rv_Rfc_Pxp_Camph( ref tabelaSAP); DataTable dt = new DataTable(); dt.Columns.Add("codigo"); dt.Columns.Add("nome"); foreach (BAY2_N2RV_RPCAM linha in tabelaSAP) { DataRow dr = dt.NewRow();

dr["codigo"] = linha.Codca; dr["nome"] = linha.Descc; dt.Rows.Add(dr); } gridSAP.DataSource = dt; } catch (Exception ex) { MessageBox.Show(ex.Message); } } Listagem 1: Código para utilizar o proxy e as classes criadas.

A aplicação utilizará o proxy criado, que foi chamado de lendoSAP para criar uma conexão com outro servidor SAP (não precisa ser necessariamente o mesmo utilizado no Server Explorer). Os itens que precisam ser inseridos na String de Conexão, podem ser encontrados abaixo, na Listagem 2. Substitua estes itens em vermelho pelos dados fornecidos pelo pessoal de BASIS, como foi feito no Server Explorer. "ASHOST=AppServerHost SYSNR=SystemNumber CLI-ENT=Client USER=UserName PASSWD=Password "

Listagem 2: Dados da String de Conexão.

Após a informação de conexão do proxy, será criada uma variável do tipo “Tabela da RFC” (BAY2_N2RV_RPCAMTable tabelaSAP = new

BAY2_N2RV_RPCAMTable();) . Esta variável criada será passada por parâmetro de referência, para o método com o nome da RFC (proxy.Bay2_N2rv_Rfc_Pxp_Camph

( ref tabelaSAP); ) que está dentro do proxy. Como o parâmetro foi por referência, a variável criada passará a ter

Figura 6: As classes criadas automaticamente pelo proxy.

Lendo as tabelas do SAP com o .NET SAP Connector 2.0

Page 13: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 13131313

os dados lidos no SAP através da RFC. Após estes pequenos passos, vamos percorrer todos os itens da tabela que foi populada por referência, utilizando um foreach. Para ver os dados que foram lidos do SAP, criamos um DataGrid no formulário, e preenchemos a propriedade DataSource deste DataGrid com o DataTable que recebeu os dados do SAP. Vejam na Figura 7, o

DataGrid preenchido. Com isso, concluímos com uma análise simples e prática de uma das soluções para ler as tabelas do SAP através de RFC. Outros dois artigos serão publicados em breve, o primeiro explicando como escrever nas tabelas do SAP através de RFCs e o segundo como montar um workaround para utilizar o Visual Studio 2005/2008 para ler as RFCs.

Figura 7: Resultado do DataGrid preenchido.

Lendo as tabelas do SAP com o .NET SAP Connector 2.0

Diego Nogare

Graduado em Ciência da Computação, Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET. Colaborador do Portal Linha de Código e da revista SQL Magazine, Líder do grupo de usuários Codificando .NET, Líder dos Microsoft

Student Partners [MSP] de São Paulo e Microsoft Most

Valuable Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net

Page 14: Codificando .NET Magazine - Edição 10
Page 15: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 15151515

Microsoft SQL Server 2005 com CLR

(.NET Framework) Veja como implementar a integração do Microsoft SQL Server 2005 com CLR (.NET Framework).

Por: Wagner Roberto Gavóglio / Adriano Luciano Candido

Definição

Frequentemente os desenvolvedores de sistemas precisam estender as funcionalidades de suas aplicações para que haja maior interação entre a aplicação que está sendo desenvolvida, o ambiente do sistema operacional e o banco de dados. Tratando-se de manipulações em banco de dados, utilizamos o T-SQL (Transact Structure Query Language) para acessar e manipular dados em um Banco de Dados SQL Server. Nas versões mais atuais do SQL Server e do Visual Studio (Ambos a partir das versões 2005), a Microsoft integrou o CLR (Common Language Runtime) do .NET com o SQL Server, podendo assim desenvolver stored procedures, functions, triggers e data-types utilizando uma linguagem .NET (Visual Basic .NET ou Visual C# .NET). Com a integração do SQL Server com componentes CLR do Microsoft .Net Framework, os desenvolvedores agora possuem um modelo rico de programação: o poder das bibliotecas do .Net Framework, melhorando a segurança e o desempenho em algumas situações quando comparado com o uso do TSQL e racionalizando o desenvolvimento através de um ambiente padronizado do Microsoft Visual Studio .Net.

O CLR - Common Language

Runtime - é o ambiente de execução do .NET Framework. Ele é responsável pelo gerenciamento da execução das aplicações, assim todo o código que ele gerencia é chamado de código gerenciado e todo o código que é executado diretamente sobre o sistema operacional é chamado código não gerenciado. No processo de compilação de código escrito em qualquer linguagem .NET, são gerados artefatos denominados assemblies (DLLs ou EXEs), expressos em uma linguagem intermediária independente de hardware, a Microsoft Intermediate Language (MSIL). Para permitir a execução de código .NET no SQL Server foi realizada uma integração dos recursos do SQL e do CLR, e então o SQL Server passou a oferecer, como alternativa ao Transact-SQL e as extended stored procedures, o SQLCLR.

Através da integração do CLR com o SQL Server podemos escrever código C# ou VB .NET que pode ser

Page 16: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 16161616

usado no interior dos processos do SQL Server. Segue a seguir, um exemplo prático passo a passo do uso do CLR em SQL Server 2005. Criando uma Stored Procedure com Código Gerenciado em .NET (SQL-CLR)

Neste exemplo, estaremos utilizando o SQL Server 2005 Express Edition e o Visual Studio .NET 2005. Passos a serem seguidos na integração do CLR no SQL Server 2005: 1. Habilitar a integração do CLR; 2. Escrever o código e compilá-lo em

um assembly (DLL); 3. Adicionar o Assembly no SQL

Server 2005; 4. Efetuar os testes. Obs.: A integração com o CLR está desabilitada por default no SQL Server 2005. Habilitando o CLR em Modo Texto Abrir o SQL Server Management Studio New Query e execute os comandos abaixo: sp_configure ‘clr enabled’ , 1; go RECONFIGURE;

Habilitando o CLR em Modo Gráfico

Clique em Iniciar Programas Microsoft SQL Server 2005 Configuration Tools SQL Server Surface Area Configuration.

Clique em Surface Area Configuration for Features. No item CLR Integration, habilitar o CLR (Enable CLR Integration).

Escrever o código e compilá-lo em um assembly (DLL)

Abra o Visual Studio 2005 e selecione New Project. Na janela New Project, em Project Types, marque DataBase e, em Templates, selecione SQL Server Project, informando o nome sqlCLR.

Figura 1

Figura 2

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 17: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 17171717

Na próxima tela, informe os detalhes para a Conexão com o Banco de Dados.

Obs.: Se a janela, solicitando habilitar o debug na conexão, surgir clique no botão Sim. Para criar um novo objeto do tipo Stored Procedure, dentro do projeto

SQL Server devemos clicar com o botão direito em cima do Projeto no Solution Explorer Add Stored Procedure. Um arquivo é criado com a extensão *.vb (ou *.cs se o projeto for em Visual C# .NET).

Depois de adicionado, podemos ver que a IDE criou uma Partial Class, chamada StoredProcedures. Na medida em que você for criando objetos deste tipo, outras Partial Class também serão criadas e, quando compilado o projeto, estas, por sua vez são mescladas (merge) em uma única classe chamada StoredProcedures. Ao adicionar um novo objeto do tipo Stored Procedure, será gerado o seguinte código abaixo:

Figura 3

Figura 4

Figura 5

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 18: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 18181818

Obs.: O Atributo [Microsoft.SqlServer.Server.SqlProcedur

e] determina que o procedimento é uma Stored Procedure. O Visual Studio .NET usa esta determinação para criar a Stored Procedure dentro do SQL Server quando o Deployment é feito. Como já vimos acima, uma Partial Class chamada StoredProcedures é criada e dentro dela colocamos uma ou mais Stored Procedures. O interessante é colocar uma Stored Procedure por arquivo para facilitar a manutenção. Após a geração da estrutura, vamos então ao código que mostrará realmente a construção da Stored Procedure. O nosso cenário consiste em uma única tabela de exemplo, denominada “Sales.Person”. Efetuando um "select" na mesma nos retornará aos seguintes dados: use AdventureWorks go select FirstName,Phone from Person.Contact go

Iremos encapsular a consulta utilizada acima, em uma Stored Procedure gerada em .NET. Chamaremos de pr_list_person. Segue o código abaixo

na linguagem .NET (C#): [Microsoft.SqlServer.Server. SqlProcedure ] public void pr_list_person() { using (SqlConnection oCnx = new SqlConnection( "context connection=true" )) { oCnx.Open(); using (SqlCommand oCmd = new SqlCommand( "select FirstName,Phone from Per-son.Contact" , oCnx)) { SqlDataReader oReader = oCmd.ExecuteReader(); SqlCon-text.Pipe.Send(oReader); } oCnx.Close(); } }

Context Connection=True: Efetua a interação com o Banco de Dados ativo no momento do ambiente em que está sendo executado, resgatando as informações e objetos necessários para a execução de um determinado comando no Banco de Dados. SqlContext.Pipe.Send: Resgata o canal de comunicação entre o objeto e a aplicação cliente que o chama, ou seja, é a comunicação entre o cliente e o servidor. Através do método Send deste objeto, você envia as informações para o cliente. Já a classe SqlContext representa o contexto corrente e, com isso, elimina a necessidade de abrir outra conexão com a Base de Dados.

O nosso próximo passo é a geração do arquivo Assembly (DLL) que será adicionado no SQL 2005. Para gerar o

Figura 6

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 19: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 19191919

mesmo, devemos previamente informar o nome do arquivo DLL a ser gerado e respectivamente o local o ser gerado. No Visual Studio, clicar no Menu Project sqlCLR Properties ...

Na aba

Application, definir o nome em Assembly name (sqlCLR). Após a definição do nome, informar o local onde será gerado o arquivo. (Aba Build) Nesta área, defina o local para onde o arquivo.DLL será gerado (C:\).

Após informar o nome e o local, basta gerar o assembly. Clique no menu Build à Build sqlCLR.

O arquivo sqlCLR.dll será gerado no local especificado:

Adicionando o Assembly no SQL Server 2005

Depois de gerado o Assembly (sqlCLR.dll), o próximo passo será catalogar o Assembly, ou seja, "incluí-lo" dentro do SQL Server. Em seguida mapearemos a Stored Procedure para os métodos que estão dentro do Assembly que, nesta altura, já estará catalogado. Veremos como funciona o processo de catálogo de Assemblies através da DDL no Sql Server (Método 1) e através do Visual Studio (Método 2).

Método 1 use AdventureWorks go CREATE ASSEMBLY sqlCLR FROM 'c:\sqlCLR.dll' WITH PERMISSION_SET = SAFE GO No SQL Server 2005 temos agora uma nova instrução dentro da linguagem DDL que chamamos de "CREATE ASSEMBLY". Esta instrução é utilizada para adicionarmos o Assembly dentro da Base de Dados. Informamos um

Figura 7

Figura 8

Figura 9

Figura 10

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 20: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 20202020

nome qualquer que identificará o Assembly e, na cláusula FROM, informarmos o path completo até o arquivo DLL gerado pelo Visual Studio .NET. Já a cláusula PERMISSION_SET permite especificar o nível de segurança em que seu código será executado/acessado. Existem três opções de nível de segurança, como veremos abaixo: SAFE: É o default. Neste modo o Assembly somente poderá rodar no contexto local, mas não através do SqlClient. Previne também o acesso através de recursos externos e de código não gerenciado. EXTERNAL_ACCESS: É o mesmo que SAFE, somente habilitando o acesso aos recursos externos. UNSAFE: Acesso irrestrito, desde que o Assembly seja assinado e catalogado por um usuário que seja membro do grupo sql_admins. Depois de catalogado o Assembly dentro do nosso Banco de Dados, o que temos que realizar agora é a definição da Stored Procedure, mapeando o método pr_list_person() que está dentro do Assembly: use AdventureWorks go CREATE PROCEDURE pr_list_person AS EXTERNAL NAME sqlCLR.[StoredProcedures].pr_list_person GO

Se analisarmos agora o Object Browser que se encontra dentro do SQL Server Management Studio, veremos lá a Stored Procedure criada e o Assembly também já catalogado. Através da tabela sys.assembly_files você pode recuperar os Assemblies que estão catalogados dentro de um determinado Banco de Dados. A Figura abaixo exibe o Object Browser do SQL Server, com a Stored Procedure e o Assembly já registrados.

Método 2

Além da forma apresentada acima para catalogar o Assembly no SQL Server, encontramos também no Visual Studio, uma forma automática de catalogar o Assembly e gerar a Stored Procedure. No painel Solution Explorer do Visual Studio, Clique com o botão direito sobre o nome do Projeto sqlCLR, e execute a opção Deploy.

Figura 11

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 21: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 21212121

Após o registro do Assembly e a geração da Stored Procedure, efetuaremos o teste de execução da Stored Procedure. USE AdventureWorks go EXECUTE pr_list_person go

Perceba que a execução da Stored Procedure corresponde ao mesmo resultado obtido pelo comando Select, executado no início deste artigo. Conclusão

Neste artigo foram apresentadas algumas características da integração do SQL Server 2005 e CLR. Vale lembrar que o cenário do teste apresentado foi baseado na criação de uma Stored Procedure em .NET. Porém outros objetos (Funções, Triggers, etc.) também podem ser gerados utilizando esta

Microsoft SQL Server 2005 com CLR (.NET Framework)

tecnologia. Outro fato importante é saber quando utilizar CLR e quando utilizar o T-SQL. O T-SQL é interessante utilizar em acesso a dados, sem nenhuma lógica complexa. Já a utilização do CLR, proporciona a utilização das tecnologias das linguagens de programação (Visual Basic .NET /Visual C# .NET) proporcionando uma melhor interação e operacionalidade entre as ferramentas.

Wagner Roberto Gavóglio

Bacharel em Sistemas de Informação, pós-graduação não concluída em Banco de Dados e Business Intelligence. É Analista e Desenvolvedor de Sistemas, em tecnologia .NET e Genexus. Atua a mais de 10 anos no mercado.

Adriano Luciano Candido [email protected]) é Pós-graduado no MBA em Gestão Projetos da FGV, certificado nos títulos da Microsoft: MCPD, MCDBA, MCSD.NET, MCSD, MCAD, MCSA. Instrutor oficial Microsoft e consultor especializado em tecnologia Microsoft e em Gestão de Projeto, atuando a mais de 10 anos no mercado de tecnologia. Palestrante e professor de pós-graduação em diversas universidades de São Paulo. Mantém o site www.adrianoluciano.net

Page 22: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 22222222

Envio de email utilizando o C#

Exemplo de como enviar e-mail utilizando ASP.NET de forma simples.

Por: Fernanda Sallai

Criando um projeto Criaremos um projeto usando o Visual Studio clicando no menu File (arquivo) – New (novo) – Project (projeto), em Project Types (Tipos de projeto) escolha Visual C# e em Templates escolha ASP.NET Web Application, digite o nome e o local que salvará sua aplicação e clique em OK. Para ver detalhes observe a Figura 1.

Figura 1. Criando um projeto web

Incluindo no Web.Config Criaremos uma chave que irá conter o email do remetente. Essa chave terá um nome e um valor e será inserida dentro da tag <appSettings>. Incluiremos também o smtp (que é o

servidor de envio), o nome e a senha do usuário do email remetente dentro das tags <system.net><mailSettings>. O conteúdo incluído no Web.Config segue na Listagem1.

<?xml version =" 1.0 " ?> <configuration >

<appSettings > <add

key =" emailRemetente " value =" emaildoremetente " />

</ appSettings >

<system.net > < mailSettings >

<network host =" smtpdoemaildoremetente " port =" 25" user-Name=" emaildoremetente " pass-word =" senhadoemaildoremetente " />

</ mailSettings > </ system.net > </ configuration > Listagem 1. Conteúdo do web.config

Criando a classe de email

Para isso clique no ícone do projeto em Solution Explorer com o botão direito do

Page 23: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 23232323

mouse, escolha Add Class. Nomeie seu novo arquivo e clique em add. Os detalhes dessa operação podem ser vistos nas Figuras 2 e 3 e seu conteúdo na Listagem

2.

Figura 2. Adicionando uma classe ao projeto

Figura 3. Criando uma classe

using System; using Sys-tem.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Net.Mail;

namespace Email { public class email { /// <summary> /// Método para enviar

email /// </summary> /// <param name="emailDestinatario"> Email do destinatário </param> /// <param name="assunto"> Assunto do email </param> /// <param name="mensagem"> mensagem do email </param> public static void En-viarEmail( string emailDestina-tario, string assunto, string mensagem) { //Cria o objeto que envia o e-mail SmtpClient client = new SmtpClient (); //Cria o endereço de email do remetente MailAddress de = new MailAddress( ConfigurationSet-tings .AppSettings[ "emailRemetente" ]); //Cria o endereço de email do destinatário > MailAddress para = new MailAddress(emailDestinatario);

MailMessage mensagem = new MailMessage (de, para); mensagem.IsBodyHtml = true ;

//Assunto do email mensagem.Subject = assunto; //Conteúdo do email mensagem.Body = mensagem;

try {

Envio de email utilizando o C#

Page 24: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 24242424

//Envia o email client.Send(mensagem); } catch { } } } } Listagem 2. Conteúdo da classe email

Criando página para o envio do email

Para isso clique no ícone do projeto em Solution Explorer com o botão direito do mouse, escolha Add New Item. Na janela que se abre selecione o ícone Web Form. Nomeie seu novo arquivo e clique em add. Os detalhes dessa operação podem ser vistos nas Figuras

4 e 5.

Figura 4. Adicionando um novo ítem ao projeto

Figura 5. Criando um Web Form

A página terá o modelo conforme a Figura 6 e seu conteúdo segue nas

listagens 3 e 4.

Figura 6. Criando uma página

<%@ Page Language ="C#" Auto-EventWireup ="true" CodeBe-hind ="Email.aspx.cs" Inher-its ="Email.Email" %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi-tional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns ="http://www.w3.org/1999/xhtml" > < head id ="Head1" runat ="server"> < title >Enviando email </title > </ head > < body > < form id ="frmAspNet" runat ="server">

Envio de email utilizando o C#

Page 25: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 25252525

< div > < table style =" width : 33%; "> < tr > < td >Email do Destinatário: </ td > < td > < asp : TextBox ID ="txtEmail" runat ="server" Width ="200px"></ asp : TextBox > </ td > </ tr > < tr > < td >Assunto: </ td > < td > < asp : TextBox ID ="txtAssunto" runat ="server" Width ="200px"></ asp : TextBox > </ td > </ tr > < tr >

<td >Mensagem: </ td > <td > < asp : TextBox ID ="txtMensagem" TextMode ="MultiLine" runat ="server" Width ="200px"></ asp : TextBox > </ td > </ tr > <tr > <td colspan ="2" align ="right"> <asp : Button ID ="Button1" runat ="server" Text ="Enviar" /> </ td > </ tr > </ table > < asp : Label ID ="lblErro" runat ="server"></ asp : Label > </ div > </ form > </ body > </ html > Listagem 3. Conteúdo da página aspx

using System; using Sys-

tem.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using Sys-tem.Web.UI.WebControls;

namespace Email { public partial class Email : System.Web.UI. Page { protected void Page_Load( object sender, Even-tArgs e) {

}

protected void But-ton1_Click( object sender, EventArgs e) { if (CamposPreenchidos()) { //Chama o método de envio de email. //Passando o endereço do email destinatário, assunto e mensagem. email .EnviarEmail(txtEmail.Text, txtAssunto.Text, txtMensagem.Text); //Exibindo mensagem de confirmação de envio do email. Page.RegisterStartupScript( "envio" , "<script type=\"text/javascript\">alert('Email enviado com sucesso.');</script>" ); } }

Envio de email utilizando o C#

Page 26: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 26262626

/// <summary> /// Método para verificar se todos os campos estão preenchidos /// </summary> /// <param name="emailDestinatario"> Email do destinatário </param> /// <param name="assunto"> Assunto do email </param> /// <param name="mensagem"> mensagem do email </param> private bool Cam-posPreenchidos() { bool preenchidos = true ; if (txtEmail.Text == string .Empty) { lblErro.Text = "O email do destinatário é obrigatório." ; preenchidos = false ; return (preenchidos); } else { if (!IsValidEmail(txtEmail.Text)) { lblErro.Text = "O formato do e-mail é inválido." ; preenchidos = false ; return (preenchidos); } } if (txtAssunto.Text == string .Empty) { lblErro.Text = "O assunto do email é

obrigatório." ; preenchidos = false ; return (preenchidos); } if (txtMensagem.Text == string .Empty) { lblErro.Text = "A mensagem do email é obrigatória." ; preenchidos = false ; return (preenchidos); } return (preenchidos); }

/// <summary> /// Método para verificar se o formato do email está correto /// </summary> /// <param name="enderecoEmail"> Endereco do email </param> /// <returns> Verdadeiro ou Falso </returns> private bool IsValidE-mail( string enderecoEmail) { return Sys-tem.Text.RegularExpressions. Regex .IsMatch(enderecoEmail, ( "(?<user>[^@]+)@(?<host>.+)" )); } } } Listagem 4. Conteúdo da página aspx.cs

Um ponto interessante que foi colocado, é a Expressão Regular validando o formato do e-mail. Esta expressão está

Envio de email utilizando o C#

Page 27: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 27272727

definida no método IsValidEmail que recebe por parâmetro o enderecoEmail e retorna um TRUE ou FALSE de acordo com a validação da regra. Este tipo de recurso é bastante interessante para validar informações que podem ser variadas, mas que seguem uma estrutura bem definida de como as informações se apresentam para formar um todo.

A confirmação do envio de email pode ser visto na Figura 7.

Figura 7. Enviando o email

Conclusão

Esse artigo abordou de forma prática e simples o envio de email através da linguagem C#. Espero que tenham gostado do artigo e fiquem a vontade para fazer suas implementações como, por exemplo, incluir um anexo. Obrigada e até a próxima.

Envio de email utilizando o C#

Fernanda Sallai

([email protected]) cursa o 4º ano de Sistemas de Informação na FICS – Faculdades Integradas Campos Salles, reside em São Paulo – SP, atualmente realiza estágio na empresa Pakua IT Systems no desenvolvimento de aplicações web e escreve periodicamente em seu blog www.fernandasallai.com.

Page 28: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 28282828

SILVER SPRITE

Jogos desenvolvidos em XNA

para a Internet Demonstração de como se faz para se animar uma sprite no XNA.

Por: Felipe Aron

Introdução

Para aqueles que ainda não conhecem, XNA é um Framework gratuito da Microsoft para o desenvolvimento de jogos, que utiliza o Visual Studio (Professional/Express) como IDE de desenvolvimento. Por meio do XNA, é possível desenvolver jogos 2D/3D para PC, X-Box 360 e Zune (Ipod da Microsoft com sistema operacional Windows). Para maiores informações acesse o site oficial do XNA: http://msdn.microsoft.com/pt-br/xna/default(en-us).aspx.

Num desenvolvimento de um jogo de duas dimensões (2D), o uso de Sprites são de suma importância. Um Sprite é uma imagem de algo que será usado no cenário do jogo, seja uma imagem de um personagem, de uma pedra, de uma árvore, uma imagem de fundo (background), etc. Por meio de técnicas, é possível utilizar vários Sprites para criar uma animação, por exemplo, a de um personagem andando pelo cenário, trocando o movimento das pernas conforme ele se move. Hoje em dia, quando falamos sobre desenvolvimento de jogos para Internet, logo pensamos em Flash, que é uma

ferramenta fantástica para criação de web-sites e também para desenvolvimento de jogos. Porém, ela tem limitações e, em razão disso, nem sempre possibilita que o usuário atinja facilmente um resultado esperado. Com a utilização do Framework XNA, o trabalho de desenvolvimento de um jogo se torna simples pelo fato do XNA já possuir muitos métodos e recursos prontos, cabendo somente ao usuário valer-se da criatividade e de linhas de código para criar jogos interessantes. A Microsoft criou o SilverLight (http://silverlight.net/), uma ferramenta que lembra o famoso Flash, cujos recursos vão muito além deste, podendo criar páginas ricas, mais interativas, mais leves, pois inúmeros recursos são processados pelo cliente e não diretamente no servidor. Uma das grandes vantagens dessa ferramenta é a utilização do Stream sem haver comprometimento do servidor, por exemplo, a visualização de vídeos sendo transmitidos ao vivo para milhares de pessoas. Após o surgimento do SilverLight, apesar de muitos questionaram a possibilidade de criar jogos valendo-se dessa tecnologia, cabe ressaltar que e

Page 29: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 29292929

possível sim, porém é necessário um conhecimento da ferramenta (SilverLight, XAML, etc.). Pelo fato de cada vez mais pessoas usarem o Framework XNA para o desenvolvimento de jogos para plataforma Windows, Zune e X-Box, pensando em unir SilverLight com XNA, surgiu, então, uma nova API, o SilverSprite... O que é SilverSprite?

SilverSprite é uma API capaz de integrar seus jogos criados com o Framework XNA e aplicações “Web ricas” por meio do SilverLight, os quais podem ser jogados em qualquer programa de navegação na Internet (Browser). Esse projeto foi criado por Bill Reiss e está sendo mantido por José Antonio Farias (http://www.sharpgames.net) e Kevin Wolf.

Para usar essa API, você não irá precisar ter plenos conhecimentos em SilverLight e o melhor: você praticamente não irá precisar de quase nenhum código do seu jogo. Por enquanto, o SilverSprite está disponível apenas para jogos de duas dimensões (2D), o que já é uma evolução em termos de tecnologia e mercado. Para mais detalhes sobre o projeto SilverSprite acesse: http://www.codeplex.com/silversprite. Para exemplificar o uso dessa API (SilverSprite), iremos criar um simples projeto em XNA, e depois, utilizando-se um projeto em SilverLight, iremos executar nosso game por meio de uma página web.

Criando um exemplo simples em XNA

Vamos criar um projeto simples em XNA para plataforma Windows, na qual iremos colocar um Sprite (figura) e fazer com que ele se movimente pela tela. Não entraremos em detalhes sobre os conceitos de desenvolvimento, pois o enfoque é fazer o projeto XNA ser executado com o SilverSprite. Exemplificando inicie um novo projeto,

carregue um sprite com uma Textura 2D qualquer e faça o Sprite se movimentar na tela. Veja o resultado do jogo em execução: Salve o projeto feito em XNA. Agora vamos criar a aplicação SilverLight. Adicionando nosso exemplo numa aplicação SilverLight

Antes de criarmos o aplicativo usando o SilverLight, primeiro baixe as DLLs da API SilverSprite no link: http://

www.codeplex.com/silversprite. Após baixar o arquivo, extraia numa pasta qualquer de sua escolha. Entretanto,

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 1

Page 30: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 30303030

caso não tenha instalado, ainda, o SilverLight 2, você poderá baixá-lo em: http://silverlight.net. Em seguida, inicie um novo projeto SilverLight Application no Visual Studio e escolha um Web Application para rodar o site. Uma vez feito isso, será carregado a tela principal do projeto SilverLight.

Após esse procedimento, a primeira coisa que precisamos fazer é adicionar a referência à DLL do SilverSprite. Para isso, clique com o botão direito sobre a aplicação SilverLight no Solution Explorer, e escolha a opção “Add Reference...”. Ao abrir a tela, escolha a aba “Browse” e encontre a pasta que descompactamos as DLLs do SilverSprite. Selecione a DLL “SilverArcade.SilverSprite.dll”. Agora que fizemos a referência ao SilverSprite, vamos adicionar nosso game na aplicação. Primeiro adicione uma nova pasta chamada “Game” na aplicação. Clique com o botão direito, selecione Add New Folder. Nesta pasta iremos adicionar os fontes do nosso

game. Criada a pasta, clique com o botão direito sobre ela, selecione a opção Add Existing Item... Encontre os fontes do seu game, selecione tudo (Ctrl+A) e clique em “Add”. Você irá perceber que foram adicionados ao projeto todos os fontes do jogo, como mostra a imagem abaixo:

Aqui existe um “DETALHE IMPORTANTE”. Quando criamos um projeto XNA, o método principal que executa o jogo está no arquivo Program.cs. Porém, nesse caso quem irá chamar o jogo será o Page.xaml, portando não iremos precisar do “Program.cs”. Assim sendo, exclua esse arquivo do projeto. Já falando sobre a Page.xaml, vamos, então, adicionar o código que fará a chamada no nosso game. Precisamos adicionar duas informações: uma é o

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 2

Figura 3

Page 31: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 31313131

NameSpace, utilizado no projeto XNA, e outra, a chamada da classe principal do game, que está no arquivo “Game1.cs”. Altere o código XMAL do Pagem.xaml, de modo que ele fique igual ao descrito abaixo: <UserControl x : Class ="SilverlightGameApplication.Page" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns : x="http://schemas.microsoft.com/winfx/2006/xaml" Width ="400" Height ="300" xmlns : game="clr-namespace:GameSilverSprite" > <Grid x : Name="LayoutRoot" Back-ground ="White"> <game: Game1 x : Name="game"/> </ Grid > </ UserControl >

A primeira informação xmlns : game="clr-namespace:GameSilverSprite" diz respeito ao Namespace utilizado pelo jogo XNA, e a segunda, <game: Game1 x : Name="game"/>

ao arquivo que se refere à classe principal do jogo. Se você der um “Build” na aplicação, verá que aparecerá uma mensagem de erro dizendo que não foi encontrado o Namespace “XNA”. É aí que entra o SilverSprite. Assim, vamos trocar toda referência “Microsoft.Xna.Framework ” por “SilverArcade.SilverSprite ”. Para tanto, abra o “Game1.cs” e faça essa alteração. Feita as alterações, execute a aplicação utilizando a tecla F5. Em seguida, irá abrir o Brownser carregando o graphics

do XNA, porém irá ocorrer erro ao tentar carregar a Textura. Aqui existe outro pequeno “Detalhe” pelo fato de o SilverSprite utilizar o arquivo .xnb correspondendo a compilado no projeto XNA. Então precisamos adicionar esse arquivo e carregá-lo. Clique com o botão direito sobre a aplicação SilverLight e, da mesma forma que criamos a pasta “Game”, crie a pasta “Content”. Nesta pasta iremos adicionar o arquivo .xnb compilado para carregar nossa textura. Criada a pasta, adicione o arquivo .xnb da textura localizado na pasta do projeto XNA por meio do caminho: “./bin/x86/Debug/Content/<Nome_Do_Arquivo>.xnb”. No meu exemplo o arquivo se chama “MainStone.xnb”. Feito isso, o resultado deverá ficar igual à imagem abaixo:

Agora falta pouco pra fazer nosso game rodar. Como disse, esse é um “Detalhe”

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 4

Page 32: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 32323232

do SilverSprite, pois ele se utiliza do arquivo compilado .xnb. Além disso, precisamos alterar a propriedade “Build Action” desse arquivo para “CONTENT” para que ele seja compilado junto com o projeto SilverLight. Assim, selecione o arquivo, já em “Properties”, e altere sua propriedade como dito acima. Para finalizar, abra o “Game1.cs” no método LoadContent(), que é o qual carrega a textura [Não inicia com maiúscula? Acima você iniciou], mude o método Content.Load<> para Content.LoadXnb<>, como mostra o código abaixo: protected override void LoadCon-tent() { spriteBatch = new SpriteBatch (GraphicsDevice); // TODO: use this.Content to load your game content here ball = Content.LoadXnb< Texture2D >( "MainStone" ); position = new Vector2(0, 0); }

Feito isso, é só compilar o projeto e executar. O Brownser irá abrir e carregar o nosso game. Veja a imagem abaixo:

Essa foi apenas uma introdução da utilização do SilverSprite. Ele é um projeto recém-chegado no mercado, porém podemos perceber que essa API, sem dúvida, promete. Espero que tenham gostado. Entre no site oficial do projeto e obtenha mais detalhes sobre essa API. Estou à sua disposição, caso queira entrar em contato: [email protected]. O código fonte desse tutorial pode ser encontrado em meu web-site: http://www.felipearon.com.br/downloads/zip/silversprite.zip.

Figura 5

SILVER SPRITE Jogos desenvolvidos em XNA

Felipe Aron Bacharelado em Sistemas de Informação. Colaborador do portal ActiveDelphi, DevMedia e Codificando.NET. Lider do grupo XNA-Br, ministrando aulas gratuitas sobre desenvolvimento de jogos utilizando tecnologia .NET. Experiência em análise e programação de sistemas em diversas linguagens e banco de dados. Site

pessoal: www.felipearon.com.br .

Page 33: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 33333333

Visual Studio Team System e

Projeto Rosário Introdução a conceitos relativos ao .NET Framework, e ao Visual Studio, destacando o projeto “Rosário”.

Por: Alan Santos / Gustavo Henrique Dornelas / Felipe Augusto da Costa Marques

Introdução

Este artigo introduz conceitos relativos ao .NET Framework, ao ambiente de desenvolvimento de software Visual Studio, enfatizando de maneira genérica, suas principais características, pontos fortes e fracos, e destacando, o projeto “Rosário”, cujo objetivo é integrar a plataforma, toda a base para planejamento, desenho, arquitetura, gerenciamento do clico de vida de um sistema, tecnologias e conceito em torno do .NET Framework. Para implementação de uma metodologia de ciclo de vida personalizada no Visual Studio, é necessário somente definir um modelo de processo para a mesma e usá-la para criar um projeto de equipe. A configuração, a execução, o monitoramento e o relatório são manipulados automaticamente pelas ferramentas do VSTS, conforme elas entendem os esquemas do modelo de processo. Ambientes de Desenvolvimento

Um ambiente de desenvolvimento ou IDE (Integrated Development Environment – Ambiente de

Desenvolvimento Integrado) é um software que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente os IDE facilitam a técnica de RAD (Rapid Application Development – Desenvolvimento Rápido de Aplicações), que visa à maior produtividade dos desenvolvedores. Dentre os IDE existentes, foi analisado o Microsoft Visual Studio. 1.1 Introdução ao .NET Framework O .Net Framework é um componente integrado Windows que suporta a execução e desenvolvimento de uma nova geração de aplicações e XML webservices, possibilitando uma interação pessoal e integrada com a Internet através de dispositivos inteligentes. Segundo a documentação, o .NET Framework foi projetado com o seguintes objetivos: Prover um ambiente consistente de programação orientado a objetos de modo que o código do objeto seja armazenado e executado localmente, mas pode ser armazenado na internet e executado remotamente.

Page 34: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 34343434

• Prover um ambiente de execução de código que minimiza o desenvolvimento de software e conflitos de versão.

• Prover um ambiente de execução

de código que promove execução segura de código inclusive código criado por fontes desconhecidas.

• Prover um ambiente de execução

de código que elimine os problemas de desempenho gerados por linguagens de script ou ambientes interpretados.

• Aproveitar o conhecimento do

programador em diferentes tipos e aplicações, como aplicações Windows ou Web.

• Construir toda a comunicação em

padrões reconhecidos pela indústria para que o .NET Framework possa se integrar com qualquer tipo de código. [LOTAR, 2007].

1.2 Visual Studio .NET

O Visual Studio .NET é um ambiente de desenvolvimento completo. Os componentes permanecem iguais independentemente da linguagem, o que facilita bastante mudar de projeto e linguagem e ter os mesmos recursos no mesmo lugar. O Visual Studio oferece inovadoras ferramentas que possibilitam aos desenvolvedores e demais participantes do processo de desenvolvimento criar

rapidamente software utilizando as mais recentes tecnologias Microsoft. Além de ser uma excelente ferramenta para os desenvolvedores, o Visual Studio traz um conjunto de produtos voltados para testes, banco de dados, arquitetura e design de software. O Visual Studio aumenta a produtividade do desenvolvedor, mas, além disso, traz grandes melhorias para apoiar na qualidade, previsibilidade e controle do processo de desenvolvimento de software por meio de metodologia e ferramentas específicas para todos os envolvidos no processo. O Visual Studio torna realidade à visão da Microsoft de permitir que os desenvolvedores e equipes de desenvolvimento criem aplicações conectadas com experiências atrativas de usuários do Windows, Microsoft Office, dispositivos móveis e a Web. [TURTSCHI, 2002] 1.2.1 Casos de sucesso no Mundo

A Xerox (http://www.xerox.com) conseguiu diminuir o tempo de desenvolvimento de suas aplicações e os custos em até 50%, aumentando a escalabilidade em até 500%. Os analistas da Xerox desenvolvem aplicações para fornecer aos seus clientes o melhor serviço possível. Quando precisaram de uma ferramenta mais escalável, a Xerox passou a desenvolver aplicações utilizando o Microsoft Visual Studio 2008. As criações dos relatórios na Xerox, levaram metade do tempo e dinheiro

Visual Studio Team System e Projeto Rosário

Page 35: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 35353535

quando se comparado com uma solução baseada em Flash. Agora a Xerox conseguiu criar gráficos excelentes e desta forma conseguiu aumentar drasticamente a produtividade interna e a eficiência de seus serviços. O San Diego Zôo (http://www.sandiegozoo.org) aumenta e melhora as operações de visitas anualmente, cerca de seis milhões de pessoas visitam o San Diego Zoo. Com mais de 200 exposições ativas no zoológico, os visitantes passaram a ficar confusos e sem saber como planejar o seu passeio no Zoológico. Os líderes do zoológico queriam dar aos visitantes uma visão melhor e recolher dados preciosos sobre os padrões e preferências dos visitantes. Para suprir essas necessidades o jardim zoológico desenvolveu o iZoofari, usando o Microsoft Visual Studio 2008 Professional Edition. O iZoofari é uma ferramenta online que possibilita um planejamento completo e fornece uma análise de dados e relatórios.

1.2.2 Casos de sucesso no Brasil

A versão 2008 do Visual Studio, lançada no mês de dezembro, já é amplamente utilizada por empresas nacionais. A Brasília Soluções Inteligentes, a Ampsoft e a Diebold Procomp são alguns dos exemplos de companhias que utilizam essa solução. A Brasília, empresa fabricante de software atingiu produtividade 32%

acima da média a partir do uso da ferramenta. “O resultado positivo é fruto de um trabalho sério, de condições e pessoas preparadas. Mas essas marcas não seriam atingidas sem o uso das soluções da Microsoft", explica Pablo Coelho, diretor da Brasília Soluções Inteligentes. Já a Ampsoft, que desenvolve soluções de negócios para seguradoras, automatizou sua fábrica de software com o Visual Studio 2008. “Todos os profissionais envolvidos nos processos de desenvolvimento e homologação de novas versões dos projetos ganharam produtividade e qualidade", diz Letícia Banffy, gerente da Ampsoft. A Diebold Procomp, fornecedora de soluções de automação bancária, melhorou a gestão dos ciclos de desenvolvimento e reduziu em 50% os gastos com licenciamento com a utilização do Visual Studio 2008. “Além de contar com uma plataforma de desenvolvimento muito mais poderosa e completa, obtivemos uma economia no licenciamento considerável", destaca Sidney Rodrigues, gerente de infra-estrutura de T.I. da Diebold Procomp. Mais detalhes dos três cases podem ser obtidos por meio do acesso aos links abaixo: Brasília Soluções Inteligentes

http://www.microsoft.com/brasil/Casos/interna.aspx?id=500 Ampsoft http://www.microsoft.com/brasil/Casos/interna.aspx?id=503 Procomp http://www.microsoft.com/brasil/

Visual Studio Team System e Projeto Rosário

Page 36: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 36363636

Casos/interna.aspx?id=496 1.2.3 Benefício para os clientes

Em outra iniciativa voltada a beneficiar os clientes que já utilizam o Visual Studio Team System 2008, a Microsoft também divulgou que o Visual Studio Team System 2010 irá unificar a versão para administradores de database e desenvolvedores. Até o lançamento da nova versão, os clientes atuais que possuem as edições com Software Assurance (SA) do Visual Studio 2008 Development ou Visual Studio 2008 Database receberão gratuitamente os seguintes produtos a partir de 1° de outubro de 2008: - Visual Studio 2008 Development Edition; - Visual Studio 2008 Database Edition; - Visual Studio 2005 para desenvolvedores de software; - Visual Studio 2005 para profissionais de Database. 1.2.4 Sobre a Microsoft Brasil Fundada em 1989, a Microsoft Brasil gera localmente oportunidades diretas na área de tecnologia para mais de 18 mil empresas e 495 mil profissionais. Nos últimos cinco anos, a empresa investiu mais de R$ 85 milhões em projetos sociais, levando tecnologia a escolas, universidades, ONGs e comunidades carentes. É uma das 103 subsidiárias da Microsoft Corporation, fundada em 1975, empresa líder mundial no fornecimento de software, serviços e soluções em tecnologia da informação. Com um modelo baseado

em inovação, a Microsoft investe no desenvolvimento e integração de tecnologias que capacitam pessoas e empresas a atingirem seu potencial pleno. Saiba mais no: http://www.microsoft.com/latam/presspass/brasil/default.mspx. 2.5 – A implementação do Visual Studio

O Visual Studio Team System - VSTS permite gerar diariamente builds. Estes fazem parte de um processo conhecido como Integração Contínua. Integrar continuamente significa garantir que todo o código hospedado no controle de versão estará funcionando quando for requisitado. Essa necessidade surgiu a partir do momento que diversos desenvolvedores começaram a trabalhar paralelamente no mesmo projeto.

É possível definir que uma build será executada a cada check-in, semanalmente, a cada intervalo de tempo ou ainda diariamente. Toda esta configuração é visual no VSTS e pode ser feita rapidamente nas opções da build. Além do mais, não existe problema ao agendar duas ou mais builds para um mesmo horário, pois o servidor do VSTS consegue gerenciar todas as requisições. O VSTS possui funcionalidades que permitem o rastreamento de bugs. A única certeza que temos sobre bugs no desenvolvimento de um software é que eles irão existir. Cabe a nós gerenciá-los de maneira eficiente e corrigi-los o quanto antes. Para resolver este problema, o VSTS possui um recurso chamado Work Item, ou em português, Item de Trabalho. Cada item de trabalho possui um tipo, sendo que um dos tipos disponíveis é o Bug.

Visual Studio Team System e Projeto Rosário

Page 37: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 37373737

Portanto para registrar e gerenciar bugs, você pode e deve usar os itens de trabalho. A figura 01 apresenta o potencial oferecido pelo Visual Studio Team System.

Figura 01 – Visualização do Visual Studio Team System

A figura apresenta uma estrutura dividida em algumas camadas que poderíamos separar conforme as seguintes visões:

• Ferramentas que atuam no cliente (Gerente de projeto, Arquiteto, Desenvolvedor, DBA – Administrador de Banco de Dados, Testador).

• Ferramentas que atual no servidor

(Portal, Comunicação, Relatórios, Controle de versão).

• Metodologia. • Ferramentas de terceiros que

complementam a solução

2.6 A importância para o clico de desenvolvimento O mercado hoje já está consolidado com os padrões disponíveis que já oferecem ampla segurança do ponto de vista de tecnologia chegando ao momento de usar a tecnologia para facilitar não somente a codificação, mas incorporar todo o ciclo de desenvolvimento, pois só assim será possível alcançar um produto com qualidade no prazo e no tempo exigido pelo mercado desviando dos já conhecidos problemas ligados aos casos de insucesso na entrega de projetos de software tão relatados em diversas pesquisas realizadas pelo Standish Group (www.standishgroup.com) sobre o histórico dos projetos ao longo dos últimos 10 anos. Com foco nessa grande demanda do mercado pela profissionalização do ciclo de desenvolvimento que desde 2005 a Microsoft passou a investir no mercado de Application Lifecycle Management (ALM), com o lançamento da plataforma de Visual Studio Team System (VSTS). Com o modelo de gestão para o ciclo de desenvolvimento oferecido pelo Visual Studio Team System que trabalha em conjunto com a sua metodologia de desenvolvimento, é possível obter de forma integrada, grandes resultados que são muito difíceis de alcançar de forma manual devido aos diversos desafios no dia a dia desenvolvendo software. Para ter resultados numa plataforma de ALM é necessário projetar a implantação pensando em todo o ciclo de desenvolvimento do seu projeto para que

Visual Studio Team System e Projeto Rosário

Page 38: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 38383838

possa usar a plataforma de forma estratégica e tenha total aderência com as características do seu projeto. O VSTS oferece um modelo sólido para os mais variados tamanhos de projetos permitindo criar uma personalização para atender clientes pequenos, médios e grandes, respeitando as diferenças de cada cliente. Hoje em dia, independente do tamanho da empresa, sendo ela pequena ou média ou grande em algum momento já deve ter sido levantada a bandeira da terceirização dos projetos de desenvolvimento ou parte deles. Existem cenários em clientes que possuem 09 fornecedores para desenvolvimento e o que poderia ser de imediato uma grande facilidade acaba necessitando de uma série de critérios para o devido acompanhamento. Com a plataforma de Visual Studio Team System você tem mecanismos eficientes para gerenciar os fornecedores externos fazendo com eles sigam os padrões de desenvolvimento do seu projeto permitindo acompanhar sua qualidade e todas as entregas. 2.7 Principais vantagens e desvantagens do Visual Studio

A identificação de vantagens e desvantagens se torna um assunto abrangente em abordar uma tecnologia específica sem a comparação da mesma com outra, em contrapartida, alguns aspectos são enfatizados: Vantagens do Visual Studio:

1. Aumento da produtividade e melhores resultados em menos tempo;

2. Criação de soluções dinâmicas baseadas no Windows, na Web, Dispositivos Móveis e no Office;

3. Comunicação mais efetiva entre a equipe de software;

4. Garantia de qualidade antes e durante todo o processo de desenvolvimento;

5. O número de soluções menor, se comparado a Java, mas são garantidos por um único fabricante e se integram de maneira transparente;

6. Várias linguagens de programação podem ser usadas no desenvolvimento; O .Net Framework é distribuído em conjunto com o Sistema Operacional Windows;

7. Integração com COM, COM+, DCOM, além da recente tecnologia Silverlight;

Desvantagens do Visual Studio:

1. Número menor de soluções públicas e gratuitas, se comparado a Java;

2. Mudança de versão na plataforma tem causado dores de cabeça por falta de compatibilidade;

3. Pouco código aberto;

3. Projeto Rosário 3.1 Microsoft Visual Studio Team System codinome "Rosario"

Alguns dos principais cenários e recursos dessa versão incluirão:

Visual Studio Team System e Projeto Rosário

Page 39: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 39393939

• Gerenciamento e priorização combinados de projetos de TI por meio da integração com o Microsoft Project Server;

• Gerenciamento de vários projetos para um balanceamento de carga de recursos proativo de acordo com as prioridades do negócio;

• Rastreamento completo (incluindo itens de trabalho hierárquicos) para controlar os produtos de um projeto em relação aos requisitos dos negócios e à capacidade de conduzir uma análise de rápido impacto das alterações propostas;

• Métricas e painéis abrangentes para uma visibilidade compartilhada no status do projeto e progresso em relação aos produtos;

• Novos recursos eficientes para permitir que desenvolvedores e testadores rapidamente identifiquem, comuniquem, priorizem, diagnostiquem e resolvam bugs;

• Gerenciamento de caso de teste integrado para criar, organizar e gerenciar casos de teste nas equipes de desenvolvimento e teste;

• Automação de teste e orientação para ajudar os desenvolvedores e testadores a se concentrarem em testes no nível comercial, em vez de tarefas repetitivas, manuais;

• Métrica de qualidade para uma decisão de aprovar ou não a versão com relação a se um aplicativo está pronto para produção e foi totalmente testado segundo os requisitos comerciais;

• Rápida integração de equipes

remotas, distribuídas, desconectadas e terceirizadas no processo de desenvolvimento;

• Fácil personalização de processo e orientação da Microsoft e de parceiros para corresponder à maneira como a qual sua equipe trabalha

• Suporte integrado para criar pacotes de instalação usando a tecnologia XML do Windows Installer;

• Aprimoramentos na administração de vários servidores, na criação e no controle da origem.

3.2 Projeto Microsoft revela nova versão do Visual Studio e da ferramenta .Net Framework

Companhia anuncia novidades para simplificar o gerenciamento do ciclo de desenvolvimento de software, revela detalhes das novas versões do Visual Studio 2010 e do .Net Framework 4.0. A Microsoft apresenta algumas das novidades que farão parte da próxima geração do Visual Studio 2010 e .Net Framework 4.0. Dessa forma, a companhia segue com o compromisso de oferecer a melhor experiência para os desenvolvedores acompanharem as tendências de mercado, como “computação na nuvem” (cloud computing), e disponibilizar uma solução segura e confiável para o desenvolvimento de aplicativos para as plataformas mais atuais. Além do foco no desenvolvedor, a Microsoft consolida seu comprometimento em entregar para as empresas uma plataforma completa para todo o ciclo de vida de desenvolvimento de aplicativos por meio do ALM (Application Lifecycle Management). O Visual Studio 2010, cujo

Visual Studio Team System e Projeto Rosário

Page 40: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 40404040

codinome é Rosário, oferecerá uma solução única que atende todas as pessoas envolvidas no processo de desenvolvimento de uma aplicação, retirando muitas das barreiras que evitam a integração entre equipes e diferentes tecnologias. “O objetivo é entregar para nossos clientes uma solução capaz de apoiar todos os envolvidos no processo de desenvolvimento de uma aplicação desde a análise de requisitos e arquitetura até a homologação, instalação e manutenção. Isso considerando que essa plataforma é interoperável com outras tecnologias usadas para desenvolvimento de software do mercado.”, destacou Carlos Zimmermann, gerente de produtos para desenvolvimento da Microsoft Brasil. 3.2.1 Democratizando o Gerenciamento de Ciclo de Vida de Aplicativos Atualmente, grande parte do desenvolvimento de aplicativos está disperso ou dependente de diversas áreas nas empresas. Isso gera diversos desafios que podem impactar em perda de produtividade, controle e previsibilidade nos ciclos de desenvolvimento de um software. Com o Visual Studio 2010, a Microsoft dará um passo à frente na oferta de uma solução avançada que apoiará a equipe envolvida no processo de desenvolvimento para colaborar de forma efetiva e com alta qualidade. Essa oferta inclui novos recursos que possibilitam que todos os colaboradores da equipe de software participem do ciclo de vida do produto.

Arquitetos, analistas de sistemas, desenvolvedores, testadores e administradores de database (DBAs) entre outros, terão ferramentas específicas para trabalharem de forma integrada e produtiva. Entre os destaques da nova versão estão: • Ferramentas de modelagem - O

Visual Studio Team System Architecture Edition fornecerá um novo conjunto de ferramentas UML (Unified Modeling Language) na nova versão. Estas ferramentas, que permitem aos desenvolvedores visualizarem os produtos de seu trabalho em diagramas padronizados, ajudarão a preencher a lacuna entre modelos de alto nível e o código da aplicação, enfatizando os benefícios do uso de UML e soluções DSL (Digital Subscriber Line), voltadas à transmissão digital de dados. Adicionalmente, a edição “architecture” fornecerá ricas ferramentas que permitirão aos clientes entender melhor seus sistemas atuais, fornecendo capacidade de visualizar e integrar a infra-estrutura atual facilmente com novos sistemas na camada de modelagem.

• Maior eficiência por todo o ciclo de testes - A Microsoft investiu significativamente nos recursos de testes do Visual Studio 2010 e simplificou as ferramentas necessárias para a integração de testes por todo seu ciclo de vida de desenvolvimento. Ferramentas de testes generalistas poderosas e fáceis de usar que suportam planejamento de testes e gerenciamento de casos de

Visual Studio Team System e Projeto Rosário

Page 41: Codificando .NET Magazine - Edição 10

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Junho / Julho 2009| 41414141

teste, assim como ferramentas avançadas para testes manuais farão parte do Visual Studio Team System 2010.

• Melhorias significativas nos recursos de colaboração - A Microsoft também investiu nos recursos e na escalabilidade do Team Foundation Server (TFS), incluindo aprimoramentos que permitem às equipes configurarem e adotarem qualquer forma de processo de desenvolvimento. As equipes poderão rastrear o trabalho com mais facilidade. No sistema de gerenciamento de código fonte, o TFS oferece ferramentas de visualização para o rastreamento de alterações em desvios e no conjunto de produção. O Visual Studio 2010 também passará a incluir conjuntos baseados no fluxo de trabalho que detectam erros antes desses afetarem o restante da equipe ou, pior ainda, ingressar na produção. Por fim, os administradores contarão com uma implantação e gerenciamento de TFS significativamente mais simples.

Conclusão

Existem diversos conjuntos de metodologias para diferentes tipos de ciclos de vida de desenvolvimento de software. Para implementar essas metodologias com eficiência e consistência, é importante ter as ferramentas do ciclo de vida que automatizam os processos e artefatos das metodologias. O Microsoft VSTS é

um desses sistemas e fornece uma solução atraente para automação e gerenciamento de metodologia. O VSTS implementa uma metodologia usando modelos de processos. Você pode "personalizar" modelos de processo prontos para atender a seus requisitos de metodologia. Contudo, existem algumas funcionalidades, como agregação de relatório, que você não obtém apenas com a "personalização". Para obter isso, você pode "estender" o VSTS usando pontos extensíveis.

O VSTS é uma solução completa para qualificar qualquer time de desenvolvimento de software. Os recursos que ele oferece para desenvolvedores, testadores, gerentes, etc, são excelentes para a criação de qualquer projeto. E o mais importante: tudo em um único conjunto de ferramentas trabalhando de maneira integrada e inteligente para facilitar as tarefas do dia-a-dia.

Visual Studio Team System e Projeto Rosário

Alan Santos Bacharel em Comunicação Social pela UNI-BH. Formação Superior em Gerência de Redes pela UNA, Especialista em Gestão Estratégica da Informação pela UFMG, Especializando em Engenharia de Software e Governança de T.I pela Universidade FUMEC. Trabalhando atualmente como Superintendente de Gestão em Informática na Defensoria Pública do Estado de Minas Gerais.

Gustavo Henrique Dornelas de Deus Bacharel em Sistemas de Informação, Especializando em Engenharia de Software e Governança de T.I. pela Universidade FUMEC, exerce o cargo de Analista Desenvolvedor .NET.

Felipe Augusto da Costa Marques Bacharel em Ciência da Computação, Especializando em Engenharia de Software e Governança de T.I. pela Universidade FUMEC, exerce o cargo de Analista de Sistemas

Page 42: Codificando .NET Magazine - Edição 10

www.codificando.net Abril / Maio 2009 | 42424242 Junho / Julho 2009 | 42424242

Trabalhei durante alguns anos desenvolvendo sistemas Windows forms ou asp/asp.net mas sempre com um foco de sistema… ou seja, algo que roda dentro de uma rede sobre domínio, com requisitos mínimos (principalmente navegador), etc etc etc. A dois anos me aventuro trabalhando com internet, ou seja, o mesmo ASP.NET! certo? Totalmente errado . O ASP.NET sim é o mesmo, porém o estilo de desenvolvimento muda completamente, onde existe um cenário muito mais amplo e crítico. Seguem algumas dicas: • Páginas com variações ou não,

porém que não tenha variações personalizadas por usuário, use e abuse do OUTPUT CACHE… o resultado é sensacional, a performance aumenta muito e é muito simples de se trabalhar.

• Ferramentas de análise – utilize

ferramentas que exibam passo a passo o carregamento das páginas e entenda as dependências e quem pode estar prejudicando o

carregamento. Firebug Complemento do Firefox que exibe cada objeto carregado.

Site Web Optimization Tool (http://

www.websiteoptimization.com/services/

analyze/)

Exibe a lista de objetos carregados e sugere muitas coisas que podem ser melhoradas… é simplesmente sensacional… além de oferecer um conteúdo fortíssimo de boas práticas de web em geral.

e-m

agazine

Pequenas dicas que podem

fazer a diferença Por: Alexandre Tarifa

Figura 1

Page 43: Codificando .NET Magazine - Edição 10

www.codificando.net Abril / Maio 2009 | 43434343 Junho / Julho 2009 | 43434343

Compactação de arquivos – utilize bibliotecas de compactação de arquivos ou o próprio IIS. Recomendo a MbCompression (www.codeplex.com/MbCompression) que através de um

httpHandle compacta arquivos com muita eficiência (indico mais para css e js). HTML e CSS- olho muito aberto para a qualidade do HTML e do CSS, valide no site do W3C (validator.w3.org).

e-m

agazine