codificando 10

44

Upload: ricardo-palma

Post on 06-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 1/43

Page 2: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 2/43

 Fale com Editor 

É muito importante para a equipesaber a sua opinião sobre arevista, caso tenha alguma critica,sugestão, ou elogio entre emcontato.

Caso tenha interesse em publicarum artigo na revista envie o títuloe um resumo do tema em formatoWord.

[email protected] 

EDITORES

Alexandre TarifaDiego NogareEmerson FacunteSergio Gonçalves

REVISÃO Fernanda Sallai Giaccomo Sabino 

MONTAGEM / FORMATAÇÃO Milton Carvalhaes 

EDITORAÇÃO E DIAGRAMAÇÃO Adriano Almeida 

COLABORADORESAdriano Luciano CandidoAlan SantosDiego NogareFelipe AronFelipe Augusto da Costa MarquesFernanda SallaiGustavo Henrique DornelasSeiti 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 SAPconnector 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 LucianoCandido

15:. SQL Server 2.005 com CLR

04 :. Gerando Boletos Bancários

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

Por: Seiti Yamashiro

03:. Editorial 42:. .Close ( )

Introdução a conceitos relativos ao .NETFramework, e ao Visual Studio, destacando oprojeto “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 utilizandoASP.NET de forma simples

Por: Fernanda Sallai

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

Page 3: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 3/43

Diego [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 mostraraminteresses 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 4/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g az i   n e

e-magazine

Junho / Julho 2009|  4444

Gerando Boletos Bancários

Parte I 

Veja nesse artigo como gerar boletos bancáriosusando 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é quandopode ser pago;• Modalidade: com ou sem registro. O

comum para vendas online é sem

registro. Se o sacado não pagar, aresponsabilidade de correr atrás é docedente.

A entidade que padroniza os boletos no

Brasil é a Federação Brasileira de Bancos -FEBRABAN.

É claro que o desenvolvedor deveconhecer mais que o básico, caso queiragerar um boleto. Na figura 1  está omodelo do boleto do Itaú. Mas note queainda assim a descrição está resumida.

Fig. 1 - Boleto padrão Itaú

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

2. Código do banco , com seu respectivoDV;

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  , noformato 123/45678901-5;

9. Uso exclusivo do funcionáriocaixa ;

10. Instruções  , condições pararecebimento, dados sobre multaspor atraso, bancos autorizados etc.

Por: Seiti Yamashiro 

Page 5: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 5/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g az i   n e

e-magazine

Junho / Julho 2009|  5555

para populá-lo. Criei uma classe cujaspropriedades são os dados a sereminseridos 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 oprogramador a saber quais dados ele

precisa ter à mão para gerar um boleto bancário. Alguns itens do boleto deverãoser criados automaticamente  pelosistema a partir destes dados, tais comoa linha digitável e o código de barras.

Uma excelente fonte de documentaçãose encontra em http://www.phpboleto.com.br/. Lá existem

outros modelos disponíveis paradownload. E, se seu projeto é em PHP,recomendo utilizá-lo!

Outro lugar legal para se informar é osite macoratti.com.

Criando um template

Por meio do Crystal Reports  , que já vemno Visual Studio 2008, criei o templateda 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 6/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g az i   n e

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 podemosinserir as propriedades da classe acimaem nosso template.

Para adicionar a classe recém criadacomo 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 propriedadesnecessá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, colocandoos campos nos lugares corretos. Umtrabalho simples, mas meio chato.

Testando a geração do boleto

Template pronto. Posso então criar umaclasse encarregada de buscar os dados , atemplate , juntá-los e serví-los. A classe nãotem nada de mais, e está preparada parafuncionar 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 7/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g az i   n e

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 deboleto não foi implementadoainda");

}}

}}

Cód. 2 - Classe responsável pela geração doboleto.

É claro que muita coisa na classe pode

ser melhorada, como o caminho até oarquivo do template, que está hardcoded.Mas já funciona e está preparado parafuncionar 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 eventoOnClick. O corpo do método se encontrano código 3.

protected  void botao_OnClick(object sender, EventArgs e){Portal.Controles.Boleto.Boletoboleto = 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 aprotesto se ñao for pago novencimento no vencimento

Gerando Boletos Bancários

Page 8: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 8/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g az i   n e

e-magazine

Junho / Julho 2009|  8888

Seiti Yamashiro

Graduando em Ciência da Computação, desenvolvedorweb em C#/Asp.NET com banco de dados MS SQLServer. Nas hora vagas costuma programar em PHP eimplantar sistemas livres em Linux, além de alimentar

um blog: http://seiti.eti.br 

pagavel em qualquer ageniabancaria  apos vencimentocobrar R$ 0,42 por dia deatraso apos vencimento cobrarmulta de R$ 6,66",

LinhaDigitavel ="12345.12345 12345.12345612345.123456 11230000066600",

NossoNumero ="123/12345678-9",

NumeroDocumento =123456890,

Quantidade = 0,SacadoCompleto =@"Dino

da Silva Sauro CNPJ -

12.345.678/123-11 Rua dasCasas, S/N01111-111 Vl Das RuasSao Paulo SP",

SacadoResumido = "Dinoda 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 umobjeto passe tudo e mais um pouco paraa classe Boleto e chame o método Baixa.Um boleto em pdf será gerado eentregue ao usuário pelo navegador.

E agora?

Agora que já temos a geração de um boleto dummy funcionando, precisamosacertar os dados que o compõem.Existem regras para a linha digitável,precisamos calcular alguns dígitosverificadores e ainda gerar a imagemcorrespondente ao código de barras.

Isto fica para a Parte II! Aguardem!

Gerando Boletos Bancários

Page 9: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 9/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  9999

Lendo as tabelas do SAP com

o .NET SAP Connector 2.0através de RFC

Aprenda como ler tabelas do SAP com o .Net SAP

Connector 2.0. 

Introdução

Muitas empresas atualmente controlamtodas suas atividades utilizando um dosERPs mais famosos do mundo, o SAP. EsteERP alemão possui muitos recursos jáprontos para controlar as atividades daempresa, estes recursos são chamados

Standard  , e são separados em módulos deatividades (SD [Sales and Distribution], FI[Financial], HR [Human Resources], etc) eé possível integrar todos dados destesmódulos para uma comunicação outomada de decisão mais precisa. As áreasde atuação do SAP são muito bemdesenhadas e definidas, onde o pessoal daárea funcional (cujo trabalho é configurar ostandard do SAP) não tem acesso àsconfigurações dos servidores, usuários,acessos, permissões, e etc cuja a árearesponsável é BASIS (que são os “caras deinfra”) e não desenvolvem nada nasolução.

Por sua vez existem customizaçõesrealizadas em transações “Z” ou “Y” (quenão são as standards) são criadas para um

processo bem específico de umadeterminada regra de negócios do cliente,

cujo processo não pode serimplementado por uma configuração dostandard. Elas podem estar dentro deuma “exit” do standard (a grosso modo,no meio do código do standard), ou ser100% Z ou Y, ou seja, um programainteiro criado sem nenhuma referênciaao código standard, podendo ou não

utilizar tabelas standard nodesenvolvimento. Estas transações (Z ouY) são criadas pelos desenvolvedores,que são conhecidos como ABAP. Nossotrabalho, enquanto desenvolvedor .Net,será em parceria com os ABAPs e osBASIS. Os ABAPs é que farão as RFCs(Remote Function Call – Chamada defunção externa) que serão acessadas

através do SAP .Net Connector 2.0 (queé homologado pela SAP para trabalharcom o .Net 1.1 – Não existematualizações do SAP .Net Connectorpara outras versões do .Net framework),e a equipe de BASIS que nos passarão osdados para a montagem da string deconexão com o SAP.

Resumindo...

• Funcional: Entende o processo,

Por: Diego Nogare 

Page 10: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 10/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  10101010

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

Após a adição, o item aparecerá noSolution Explorer (neste exemplo, foiadicionado na própria raiz do projeto,mas ele pode ser adicionado dentro dealguma outra pasta para melhorar aorganização), como mostra a Figura 2.

Dê dois cliques no Proxy adicionado, euma tela sem nenhum controle seráaberta no painel principal do VisualStudio 2003. Esta tela que se abriu,servirá de container para as RFCsgerarem automaticamente os códigosdas 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) decomo é a estrutura do SAP, vamos criaruma aplicação Windows Forms em C#que fará a leitura de uma RFC do SAP ecolocará o retorno em um DataTable, aparti 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 existemuito material sobre isso na internet.Vou focar na criação da aplicação praintegrar com o SAP. Então vamoscomeçar a aplicação já nos pontos quesão novidades...

Para acessar o SAP através do .Net, énecessário ter o SAP .Net Connector 2.0que é um conector do SAP já instalado, esó pode ser baixado através de usuário esenha válidos no site da SAP.Geralmente as empresas que compramlicenças de SAP recebem este usuário

Após a instalação do conector, um novoícone será adicionado nos templates quepodem fazer parte do projeto (Figura 1),

este novo item é o “SAP ConnectorProxy”. Este Proxy receberá todos ositens das RFCs que serão conectadasatravés do .Net e montaráautomaticamente as classes de acessoscom suas respectivas properties(métodos Get e Set), entre outras coisas.Para utilizar este proxy, será necessárioadicionar um novo item ao projeto,

então vá até a Solution Explorer, cliquecom 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 11/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

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 osdados do servidor do SAP (que serãofornecidos pelo pessoal de BASIS, isso

você também lembra, né?!) no ServerExplorer, para se poder visualizar asRFCs que estão liberadas pra acesso. Váaté o Server Explorer, procure o item doSAP (que foi inserido após a instalaçãodo SAP .Net Connector 2.0), expanda aárvore do SAP e clique com o botãodireito 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 expandiro “Application Servers” e visualizar oservidor que você adicionou (terá onome fornecido ao campoAppServerHost). Ao expandir este item,será necessário configurar o filtro dasFunctions para aparecer as RFCs (crieum novo filtro e coloque os dados parafiltrar (* retorna todas)) que poderão serutilizadas 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 paradentro do Proxy, na tela que já deve estaraberta no painel principal do Visual Studio.Caso isso ainda não esteja feito, dê doiscliques no item do proxy na SolutionExplorer. Quando arrastar a RFC para cimado proxy, os dados da classe desta RFC

serão criados automaticamente, permitindoo acesso à seus campos através de suasproperties. Acompanhe na Figura 5, oproxy com uma RFC já arrastada.

Agora que a RFC foi arrastada para oproxy, as classes para acessar os dados doSAP foram criados automaticamentedentro do proxy, se for até a SolutionExplorer e exibir os itens ocultos (Show AllFiles), expandindo o proxy é possível ver asclasses criadas (classes exibidas na Figura6).

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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 12/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  12121212

Está faltando pouco agora, o maiscomplicado já passou. Vamos ao códigodo método acessarSAP( ) criado, echamado pelo método LOAD doformulá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, quefoi chamado de lendoSAP para criar umaconexão com outro servidor SAP (nãoprecisa ser necessariamente o mesmoutilizado no Server Explorer). Os itens queprecisam ser inseridos na String deConexão, podem ser encontrados abaixo,na Listagem 2. Substitua estes itens em

vermelho pelos dados fornecidos pelopessoal de BASIS, como foi feito no ServerExplorer.

"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 “Tabelada RFC” (BAY2_N2RV_RPCAMTabletabelaSAP = new 

BAY2_N2RV_RPCAMTable();). Estavariável criada será passada porparâmetro de referência, para o métodocom o nome da RFC(proxy.Bay2_N2rv_Rfc_Pxp_Camph(ref tabelaSAP);) que está dentro doproxy. Como o parâmetro foi porreferência, a variável criada passará a ter

Figura 6: As classes criadas automaticamentepelo proxy.

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

Page 13: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 13/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  13131313

os dados lidos no SAP através da RFC. 

Após estes pequenos passos, vamospercorrer todos os itens da tabela que

foi populada por referência, utilizandoum foreach. Para ver os dados queforam lidos do SAP, criamos umDataGrid no formulário, e preenchemosa propriedade DataSource desteDataGrid com o DataTable que recebeuos dados do SAP. Vejam na Figura 7, o

DataGrid preenchido.Com isso, concluímos com uma análisesimples e prática de uma das soluçõespara ler as tabelas do SAP através deRFC. Outros dois artigos serãopublicados em breve, o primeiroexplicando como escrever nas tabelas doSAP através de RFCs e o segundo comomontar um workaround para utilizar oVisual Studio 2005/2008 para ler asRFCs.

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 emEngenharia de Computação com ênfase emDesenvolvimento Web com .NET. Colaborador do PortalLinha 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, possuicertificações MCP e MCTS em SQL Server 2005, épalestrante em eventos da Microsoft, Codificando .NET eINETA BR, mantém o site: www.diegonogare.net 

Page 14: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 14/43

Page 15: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 15/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  15151515

Microsoft SQL Server 2005 com CLR

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

Por: Wagner Roberto Gavóglio / Adriano Luciano Candido

Definição

Frequentemente os desenvolvedores de

sistemas precisam estender asfuncionalidades de suas aplicações para quehaja maior interação entre a aplicação queestá sendo desenvolvida, o ambiente dosistema operacional e o banco de dados.

Tratando-se de manipulações em banco dedados, utilizamos o T-SQL (TransactStructure Query Language) para acessar e

manipular dados em um Banco de DadosSQL Server. Nas versões mais atuais do SQLServer e do Visual Studio (Ambos a partirdas versões 2005), a Microsoft integrou oCLR (Common Language Runtime) do .NETcom o SQL Server, podendo assimdesenvolver stored procedures, functions,triggers e data-types utilizando umalinguagem .NET (Visual Basic .NET ou

Visual C# .NET). Com a integração do SQLServer com componentes CLR doMicrosoft .Net Framework, osdesenvolvedores agora possuem um modelorico de programação: o poder das bibliotecasdo .Net Framework, melhorando asegurança e o desempenho em algumassituações quando comparado com o uso doTSQL e racionalizando o desenvolvimento

através de um ambiente padronizado doMicrosoft Visual Studio .Net.

O CLR - Common Language

Runtime - é o ambiente de execuçãodo .NET Framework. Ele é

responsável pelo gerenciamento daexecução das aplicações, assim todoo código que ele gerencia é chamadode código gerenciado e todo ocódigo que é executado diretamentesobre o sistema operacional échamado código não gerenciado. Noprocesso de compilação de códigoescrito em qualquer

linguagem .NET, são geradosartefatos denominados assemblies (DLLs ou EXEs), expressos em umalinguagem intermediáriaindependente de hardware, aMicrosoft Intermediate Language(MSIL).

Para permitir a execução de

código .NET no SQL Server foirealizada uma integração dosrecursos do SQL e do CLR, e então oSQL Server passou a oferecer, comoalternativa ao Transact-SQL e asextended stored procedures, oSQLCLR.

Através da integração do CLR com o

SQL Server podemos escrevercódigo C# ou VB .NET que pode ser

Page 16: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 16/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  16161616

usado no interior dos processos do SQLServer.

Segue a seguir, um exemplo prático passoa passo do uso do CLR em SQL Server2005.

Criando uma Stored Procedurecom Código Gerenciado em.NET (SQL-CLR) 

Neste exemplo, estaremos utilizando oSQL Server 2005 Express Edition e o

Visual Studio .NET 2005.

Passos a serem seguidos na integração doCLR 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 Server2005.

Habilitando o CLR em ModoTexto

Abrir o SQL Server Management StudioNew Query e execute os comandosabaixo:

sp_configure  ‘clr enabled’, 1;goRECONFIGURE;

Habilitando o CLR em Modo

Gráfico

Clique em Iniciar Programas MicrosoftSQL Server 2005 Configuration Tools

SQL Server Surface Area Configuration.

Clique em Surface Area Configuration

for Features.

No item CLR Integration, habilitar oCLR (Enable CLR Integration).

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

Abra o Visual Studio 2005 e selecione

New Project. Na janela New Project, emProject Types, marque DataBase e, emTemplates, selecione SQL Server Project,informando o nome sqlCLR. 

Figura 1

Figura 2

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 17: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 17/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

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 odebug na conexão, surgir clique no

 botão Sim.

Para criar um novo objeto do tipoStored Procedure, dentro do projeto

SQL Server devemos clicar com o botãodireito em cima do Projeto no SolutionExplorer  Add Stored Procedure. Um

arquivo é criado com a extensão *.vb(ou *.cs se o projeto for em VisualC# .NET).

Depois de adicionado, podemos verque a IDE criou uma Partial Class,chamada StoredProcedures. Na medidaem que você for criando objetos destetipo, outras Partial Class também serãocriadas e, quando compilado o projeto,estas, por sua vez são mescladas(merge) em uma única classe chamadaStoredProcedures.

Ao adicionar um novo objeto do tipoStored Procedure, será gerado oseguinte código abaixo:

Figura 3

Figura 4

Figura 5

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 18: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 18/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  18181818

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

e ] determina que o procedimento é umaStored Procedure. O Visual Studio .NETusa esta determinação para criar aStored Procedure dentro do SQL Serverquando o Deployment é feito. Como jávimos acima, uma Partial Classchamada StoredProcedures é criada edentro dela colocamos uma ou maisStored Procedures. O interessante é

colocar uma Stored Procedure porarquivo para facilitar a manutenção.

Após a geração da estrutura, vamosentão ao código que mostrará realmentea construção da Stored Procedure. Onosso cenário consiste em uma únicatabela de exemplo, denominada“Sales.Person”. Efetuando um "select"

na mesma nos retornará aos seguintesdados:

use AdventureWorksgoselect FirstName,Phone from Person.Contactgo

Iremos encapsular a consulta utilizada

acima, em uma Stored Procedure geradaem .NET. Chamaremos depr_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("contextconnection=true")){

oCnx.Open();using (SqlCommand

oCmd = new SqlCommand("selectFirstName,Phone from Per-son.Contact", oCnx))

{SqlDataReader

oReader = oCmd.ExecuteReader();

SqlCon-text.Pipe.Send(oReader);

}oCnx.Close();

}}

Context Connection=True: Efetua ainteração com o Banco de Dados ativono momento do ambiente em que estásendo executado, resgatando asinformações e objetos necessários paraa execução de um determinadocomando no Banco de Dados.

SqlContext.Pipe.Send: Resgata o canal

de comunicação entre o objeto e aaplicação cliente que o chama, ou seja, éa comunicação entre o cliente e oservidor. Através do método Senddeste objeto, você envia as informaçõespara o cliente. Já a classe SqlContextrepresenta o contexto corrente e, comisso, elimina a necessidade de abriroutra conexão com a Base de Dados.

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

Figura 6

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 19: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 19/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  19191919

mesmo, devemos previamente informaro nome do arquivo DLL a ser gerado erespectivamente o local o ser gerado.

No Visual Studio, clicar no MenuProject sqlCLR Properties ...

Na abaApplication, definir o nome emAssembly name (sqlCLR). Após adefinição do nome, informar o localonde será gerado o arquivo. (AbaBuild) Nesta área, defina o local paraonde o arquivo.DLL será gerado (C:\).

Após informar o nome e o local, bastagerar o assembly. Clique no menuBuild à Build sqlCLR.

O arquivo sqlCLR.dll será gerado nolocal especificado:

Adicionando o Assembly noSQL 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 seguidamapearemos a Stored Procedure paraos métodos que estão dentro doAssembly que, nesta altura, já estará

catalogado. Veremos como funciona oprocesso de catálogo de Assembliesatravés da DDL no Sql Server (Método1) e através do Visual Studio (Método2).

Método 1

use AdventureWorksgoCREATE ASSEMBLY sqlCLRFROM 'c:\sqlCLR.dll' WITH PERMISSION_SET = SAFEGO 

No SQL Server 2005 temos agora umanova instrução dentro da linguagemDDL que chamamos de "CREATEASSEMBLY". Esta instrução é utilizada

para adicionarmos o Assembly dentroda Base de Dados. Informamos um

Figura 7

Figura 8

Figura 9

Figura 10

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 20: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 20/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  20202020

nome qualquer que identificará oAssembly e, na cláusula FROM,informarmos o path completo até o

arquivo DLL gerado pelo VisualStudio .NET. Já a cláusulaPERMISSION_SET permite especificaro nível de segurança em que seu códigoserá executado/acessado. Existem trêsopções de nível de segurança, comoveremos abaixo:

SAFE: É o default. Neste modo o

Assembly somente poderá rodar nocontexto local, mas não através doSqlClient. Previne também o acessoatravés de recursos externos e decódigo não gerenciado.

EXTERNAL_ACCESS: É o mesmo queSAFE, somente habilitando o acesso aosrecursos externos.

UNSAFE: Acesso irrestrito, desde que oAssembly seja assinado e catalogadopor um usuário que seja membro dogrupo sql_admins.

Depois de catalogado o Assemblydentro do nosso Banco de Dados, o quetemos que realizar agora é a definiçãoda Stored Procedure, mapeando o

método pr_list_person() que estádentro do Assembly:

use AdventureWorksgoCREATE PROCEDURE pr_list_personAS EXTERNAL NAMEsqlCLR.[StoredProcedures].pr_list_pe

rsonGO

Se analisarmos agora o Object Browserque se encontra dentro do SQL ServerManagement Studio, veremos lá a

Stored Procedure criada e o Assemblytambém já catalogado. Através databela sys.assembly_files você poderecuperar os Assemblies que estãocatalogados dentro de um determinadoBanco de Dados. A Figura abaixo exibeo Object Browser do SQL Server, com aStored Procedure e o Assembly járegistrados.

Método 2

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

Figura 11

Microsoft SQL Server 2005 com CLR (.NET Framework)

Page 21: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 21/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  21212121

Após o registro do Assembly e ageração da Stored Procedure,efetuaremos o teste de execução daStored Procedure.

USE AdventureWorksgoEXECUTE pr_list_persongo

Perceba que a execução da StoredProcedure corresponde ao mesmoresultado obtido pelo comando Select,executado no início deste artigo.

Conclusão

Neste artigo foram apresentadasalgumas características da integração doSQL Server 2005 e CLR. Vale lembrarque o cenário do teste apresentado foi

  baseado na criação de uma StoredProcedure em .NET. Porém outrosobjetos (Funções, Triggers, etc.) também

podem ser gerados utilizando esta

Microsoft SQL Server 2005 com CLR (.NET Framework)

tecnologia. Outro fato importante é saberquando utilizar CLR e quando utilizar o T-SQL. O T-SQL é interessante utilizar emacesso a dados, sem nenhuma lógicacomplexa. Já a utilização do CLR,

proporciona a utilização das tecnologiasdas linguagens de programação (VisualBasic .NET /Visual C# .NET)proporcionando uma melhor interação eoperacionalidade entre as ferramentas.

Wagner Roberto Gavóglio

Bacharel em Sistemas de Informação, pós-graduação nãoconcluída em Banco de Dados e Business Intelligence. É

Analista e Desenvolvedor de Sistemas, em tecnologia .NET eGenexus. Atua a mais de 10 anos no mercado.

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

Page 22: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 22/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  22222222

Envio de email utilizando o C#Exemplo de como enviar e-mail utilizandoASP.NET de forma simples.

Por: Fernanda Sallai

Criando um projeto

Criaremos um projeto usando o VisualStudio clicando no menu File (arquivo) –New (novo) – Project (projeto), emProject Types (Tipos de projeto) escolhaVisual C# e em Templates escolhaASP.NET Web Application, digite onome e o local que salvará sua aplicaçãoe clique em OK. Para ver detalhesobserve a Figura 1.

Figura 1. Criando um projeto web

Incluindo no Web.Config

Criaremos uma chave que irá conter oemail do remetente. Essa chave terá umnome e um valor e será inserida dentroda tag <appSettings>.

Incluiremos também o smtp (que é o

servidor de envio), o nome e a senha dousuário do email remetente dentro das

tags <system.net><mailSettings>. Oconteúdo incluído no Web.Config seguena 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 emSolution Explorer com o botão direito do

Page 23: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 23/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  23232323

mouse, escolha Add Class. Nomeie seunovo arquivo e clique em add. Os detalhesdessa operação podem ser vistos nas

Figuras 2 e 3 e seu conteúdo na Listagem2.

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 doemail</param>

/// <paramname="mensagem">mensagem doemail</param>

public static void En-viarEmail(string emailDestina-tario, string assunto, string mensagem)

{//Cria o objeto

que envia o e-mailSmtpClient client

= new SmtpClient();//Cria o endereço

de email do remetenteMailAddress 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 emailmensagem.Subject =

assunto;//Conteúdo do

emailmensagem.Body =

mensagem;

try{

Envio de email utilizando o C#

Page 24: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 24/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  24242424

//Envia oemail

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 emSolution Explorer com o botão direitodo mouse, escolha Add New Item. Na

  janela que se abre selecione o íconeWeb Form. Nomeie seu novo arquivo eclique em add. Os detalhes dessaoperaçã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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 25/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  25252525

<div> <table style="width:

33%;"><tr>

<td>Email doDestinatá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 ométodo de envio de email.

//Passando oendereço do emaildestinatário, assunto emensagem. 

email.EnviarEmail(txtEmail.Text,

txtAssunto.Text,txtMensagem.Text);

//Exibindomensagem de confirmação deenvio do email. 

Page.RegisterStartupScript("envio", "<scripttype=\"text/javascript\">alert('Email enviado com

sucesso.');</script>");}

}

Envio de email utilizando o C#

Page 26: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 26/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  26262626

/// <summary>/// Método para

verificar se todos os campos

estão preenchidos/// </summary>/// <param

name="emailDestinatario">Emaildo destinatário</param>

/// <paramname="assunto">Assunto doemail</param>

/// <paramname="mensagem">mensagem doemail</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">Enderecodo 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 oformato do e-mail. Esta expressão está

Envio de email utilizando o C#

Page 27: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 27/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  27272727

definida no método IsValidEmail querecebe por parâmetro o enderecoEmail eretorna um TRUE ou FALSE de acordo

com a validação da regra. Este tipo derecurso é bastante interessante paravalidar informações que podem servariadas, mas que seguem uma estrutura

 bem definida de como as informações seapresentam para formar um todo.

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

Figura 7. Enviando o email

Conclusão

Esse artigo abordou de forma prática esimples o envio de email através dalinguagem C#.

Espero que tenham gostado do artigo efiquem a vontade para fazer suasimplementaçõ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 deSistemas de Informação na FICS – Faculdades IntegradasCampos Salles, reside em São Paulo – SP, atualmente realiza

estágio na empresa Pakua IT Systems no desenvolvimentode aplicações web e escreve periodicamente em seu blogwww.fernandasallai.com. 

Page 28: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 28/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  28282828

SILVER SPRITE

 Jogos desenvolvidos em XNA

para a InternetDemonstração de como se faz para se animar umasprite no XNA.

Por: Felipe Aron

Introdução

Para aqueles que ainda não conhecem,XNA  é um Framework gratuito daMicrosoft para o desenvolvimento de

  jogos, que utiliza o Visual Studio(Professional/Express) como IDE dedesenvolvimento. Por meio do XNA, épossível desenvolver jogos 2D/3D paraPC, X-Box 360 e Zune (Ipod da Microsoftcom 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 deduas dimensões (2D), o uso de Sprites são de suma importância. Um Sprite éuma imagem de algo que será usado nocená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 paracriar uma animação, por exemplo, a deum personagem andando pelo cenário,trocando o movimento das pernasconforme ele se move.

Hoje em dia, quando falamos sobredesenvolvimento de jogos para Internet,logo pensamos em Flash  , que é uma

ferramenta fantástica para criação deweb-sites e também para

desenvolvimento de jogos. Porém, elatem limitações e, em razão disso, nemsempre possibilita que o usuário atinjafacilmente um resultado esperado. Coma utilização do Framework XNA, otrabalho de desenvolvimento de um jogose torna simples pelo fato do XNA jápossuir muitos métodos e recursosprontos, cabendo somente ao usuário

valer-se da criatividade e de linhas decódigo para criar jogos interessantes.

A Microsoft criou o SilverLight  (http://silverlight.net/), uma ferramenta quelembra o famoso Flash, cujos recursosvão muito além deste, podendo criarpáginas ricas, mais interativas, maisleves, pois inúmeros recursos sãoprocessados pelo cliente e nãodiretamente no servidor. Uma dasgrandes vantagens dessa ferramenta é autilização do Stream sem havercomprometimento do servidor, porexemplo, a visualização de vídeos sendotransmitidos ao vivo para milhares depessoas.

Após o surgimento do SilverLight,

apesar de muitos questionaram apossibilidade de criar jogos valendo-sedessa tecnologia, cabe ressaltar que e

Page 29: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 29/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  29292929

possível sim, porém é necessário umconhecimento da ferramenta(SilverLight, XAML, etc.).

Pelo fato de cada vez mais pessoasusarem o Framework XNA para odesenvolvimento de jogos paraplataforma Windows, Zune e X-Box,pensando em unir SilverLight comXNA, surgiu, então, uma nova API, oSilverSprite... O que é SilverSprite? 

SilverSprite  é uma API capaz deintegrar seus jogos criados com oFramework XNA e aplicações “Webricas” por meio do SilverLight, os quaispodem ser jogados em qualquerprograma de navegação na Internet(Browser). Esse projeto foi criado porBill Reiss e está sendo mantido por JoséAntonio Farias (http://

www.sharpgames.net) e Kevin Wolf.

Para usar essa API, você não irá precisarter plenos conhecimentos emSilverLight e o melhor: vocêpraticamente não irá precisar de quasenenhum código do seu jogo. Porenquanto, o SilverSprite está disponívelapenas para jogos de duas dimensões

(2D), o que já é uma evolução emtermos de tecnologia e mercado. Paramais detalhes sobre o projetoSilverSprite acesse: http://www.codeplex.com/silversprite. 

Para exemplificar o uso dessa API(SilverSprite), iremos criar um simplesprojeto em XNA, e depois, utilizando-se

um projeto em SilverLight, iremosexecutar nosso game por meio de umapágina web. 

Criando um exemplo simplesem XNA

Vamos criar um projeto simples em

XNA para plataforma Windows, naqual iremos colocar um Sprite (figura) efazer com que ele se movimente pelatela. Não entraremos em detalhes sobreos conceitos de desenvolvimento, pois oenfoque é fazer o projeto XNA serexecutado com o SilverSprite.

Exemplificando inicie um novo projeto,

carregue um sprite com uma Textura 2Dqualquer e faça o Sprite se movimentarna tela. Veja o resultado do jogo em

execução: Salve o projeto feito em XNA. Agoravamos criar a aplicação SilverLight.

Adicionando nosso exemplonuma aplicação SilverLight

Antes de criarmos o aplicativo usando oSilverLight, primeiro baixe as DLLs daAPI SilverSprite no link: http://

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

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 1

Page 30: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 30/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  30303030

caso não tenha instalado, ainda, oSilverLight 2, você poderá baixá-lo em:http://silverlight.net.

Em seguida, inicie um novo projetoSilverLight Application no VisualStudio e escolha um Web Applicationpara rodar o site. Uma vez feito isso,será carregado a tela principal doprojeto SilverLight.

Após esse procedimento, a primeiracoisa que precisamos fazer é adicionar areferência à DLL do SilverSprite. Paraisso, clique com o botão direito sobre aaplicação SilverLight no SolutionExplorer, e escolha a opção “AddReference...”. Ao abrir a tela, escolha a

aba “Browse” e encontre a pasta quedescompactamos as DLLs doSilverSprite. Selecione a DLL“SilverArcade.SilverSprite.dll”.

Agora que fizemos a referência aoSilverSprite, vamos adicionar nossogame na aplicação. Primeiro adicioneuma nova pasta chamada “Game” na

aplicação. Clique com o botão direito,selecione Add New Folder. Nesta pastairemos adicionar os fontes do nosso

game.

Criada a pasta, clique com o botão direito

sobre ela, selecione a opção Add ExistingItem... Encontre os fontes do seu game,selecione tudo (Ctrl+A) e clique em “Add”.Você irá perceber que foram adicionadosao projeto todos os fontes do jogo, comomostra a imagem abaixo: 

Aqui existe um “DETALHE

IMPORTANTE”. Quando criamos umprojeto XNA, o método principal queexecuta o jogo está no arquivo Program.cs.Porém, nesse caso quem irá chamar o jogoserá o Page.xaml, portando não iremosprecisar 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á achamada no nosso game. Precisamosadicionar duas informações: uma é o

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 2

Figura 3

Page 31: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 31/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  31313131

NameSpace, utilizado no projeto XNA,e outra, a chamada da classe principaldo game, que está no arquivo“Game1.cs”. Altere o código XMAL do

Pagem.xaml, de modo que ele fiqueigual 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çãoxmlns:game="clr-namespace:GameSilverSprite" 

diz respeito ao Namespaceutilizado pelo jogo XNA, e asegunda,

<game:Game1 x:Name="game"/> 

ao arquivo que se refere à classeprincipal do jogo.

Se você der um “Build” na aplicação,verá que aparecerá uma mensagem de

erro dizendo que não foi encontrado oNamespace “XNA”. É aí que entra oSilverSprite. Assim, vamos trocar todareferência“Microsoft.Xna.Framework” por“SilverArcade.SilverSprite”.Para tanto, abra o “Game1.cs” e façaessa alteração.

Feita as alterações, execute a aplicaçãoutilizando a tecla F5. Em seguida, iráabrir o Brownser carregando o graphics

do XNA, porém irá ocorrer erro aotentar carregar a Textura. Aqui existeoutro pequeno “Detalhe” pelo fato de oSilverSprite utilizar o arquivo .xnb

correspondendo a compilado no projetoXNA.

Então precisamos adicionar essearquivo e carregá-lo. Clique com o

  botão direito sobre a aplicaçãoSilverLight e, da mesma forma quecriamos a pasta “Game”, crie a pasta“Content”. Nesta pasta iremos

adicionar o arquivo .xnb compiladopara carregar nossa textura.

Criada a pasta, adicione o arquivo .xnbda textura localizado na pasta doprojeto XNA por meio do caminho: “./

 bin/x86/Debug/Content/<Nome_Do_Arquivo>.xnb”. No meuexemplo o arquivo se chama

“MainStone.xnb”. Feito isso, oresultado deverá ficar igual à imagemabaixo: 

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

SILVER SPRITE Jogos desenvolvidos em XNA

Figura 4

Page 32: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 32/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  32323232

do SilverSprite, pois ele se utiliza doarquivo compilado .xnb. Além disso,precisamos alterar a propriedade “Build

Action” desse arquivo para“CONTENT” para que ele sejacompilado junto com o projetoSilverLight. Assim, selecione o arquivo,

  já em “Properties”, e altere suapropriedade como dito acima.

Para finalizar, abra o “Game1.cs” nométodo LoadContent(), que é o qual

carrega a textura [Não inicia commaiúscula? Acima você iniciou], mude ométodo Content.Load<> paraContent.LoadXnb<>, como mostra ocódigo abaixo:

protected override void LoadCon-tent()

{spriteBatch = new 

SpriteBatch(GraphicsDevice);

// TODO: usethis.Content to load your gamecontent here

 ball =Content.LoadXnb<Texture2D>("MainStone");

position = new Vector2(0, 0);

}

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

Essa foi apenas uma introdução dautilização do SilverSprite. Ele é umprojeto recém-chegado no mercado,porém podemos perceber que essa API,sem dúvida, promete.

Espero que tenham gostado. Entre nosite oficial do projeto e obtenha maisdetalhes sobre essa API. Estou à suadisposição, caso queira entrar emcontato: [email protected]. Ocódigo fonte desse tutorial pode serencontrado 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 doportal ActiveDelphi, DevMedia e Codificando.NET. Lider dogrupo XNA-Br, ministrando aulas gratuitas sobredesenvolvimento de jogos utilizando tecnologia .NET.Experiência em análise e programação de sistemas emdiversas linguagens e banco de dados. Site

pessoal: www.felipearon.com.br . 

Page 33: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 33/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  33333333

Visual Studio Team System e

Projeto RosárioIntroduçã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 dedesenvolvimento de software VisualStudio, enfatizando de maneiragenérica, suas principais características,pontos fortes e fracos, e destacando, oprojeto “Rosário”, cujo objetivo éintegrar a plataforma, toda a base paraplanejamento, desenho, arquitetura,gerenciamento do clico de vida de um

sistema, tecnologias e conceito em tornodo .NET Framework.

Para implementação de umametodologia de ciclo de vidapersonalizada no Visual Studio, énecessário somente definir um modelode processo para a mesma e usá-la paracriar um projeto de equipe. A

configuração, a execução, omonitoramento e o relatório sãomanipulados automaticamente pelasferramentas do VSTS, conforme elasentendem os esquemas do modelo deprocesso.

Ambientes de Desenvolvimento

Um ambiente de desenvolvimento ouIDE (Integrated DevelopmentEnvironment – Ambiente de

Desenvolvimento Integrado) é umsoftware que reúne características eferramentas de apoio ao

desenvolvimento de software com oobjetivo de agilizar este processo.

Geralmente os IDE facilitam a técnica deRAD (Rapid Application Development –Desenvolvimento Rápido deAplicações), que visa à maiorprodutividade dos desenvolvedores.

Dentre os IDE existentes, foi analisado oMicrosoft Visual Studio.

1.1 Introdução ao .NETFramework

O .Net Framework é um componenteintegrado Windows que suporta aexecução e desenvolvimento de uma

nova geração de aplicações e XMLwebservices, possibilitando umainteração pessoal e integrada com aInternet através de dispositivosinteligentes. Segundo a documentação,o .NET Framework foi projetado com oseguintes objetivos:

Prover um ambiente consistente deprogramação orientado a objetos de modo que

o código do objeto seja armazenado e executadolocalmente, mas pode ser armazenado nainternet e executado remotamente. 

Page 34: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 34/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  34343434

• Prover um ambiente de execuçãode código que minimiza odesenvolvimento de software e

conflitos de versão. 

• Prover um ambiente de execuçãode código que promove execuçãosegura de código inclusive códigocriado por fontes desconhecidas. 

• Prover um ambiente de execuçãode código que elimine osproblemas de desempenhogerados por linguagens de scriptou ambientes interpretados. 

• Aproveitar o conhecimento doprogramador em diferentes tipose aplicações, como aplicaçõesWindows ou Web. 

• Construir toda a comunicação em

padrões reconhecidos pelaindústria para que o .NETFramework possa se integrar comqualquer tipo de código. [LOTAR,2007]. 

1.2 Visual Studio .NET

O Visual Studio .NET é um ambientede desenvolvimento completo. Oscomponentes permanecem iguaisindependentemente da linguagem, oque facilita bastante mudar de projeto elinguagem e ter os mesmos recursos nomesmo lugar.

O Visual Studio oferece inovadorasferramentas que possibilitam aos

desenvolvedores e demais participantesdo processo de desenvolvimento criar

rapidamente software utilizando as maisrecentes tecnologias Microsoft.

Além de ser uma excelente ferramentapara os desenvolvedores, o Visual Studiotraz um conjunto de produtos voltadospara testes, banco de dados, arquitetura edesign de software.

O Visual Studio aumenta aprodutividade do desenvolvedor, mas,além disso, traz grandes melhorias para

apoiar na qualidade, previsibilidade econtrole do processo de desenvolvimentode software por meio de metodologia eferramentas específicas para todos osenvolvidos no processo.

O Visual Studio torna realidade à visãoda Microsoft de permitir que osdesenvolvedores e equipes dedesenvolvimento criem aplicaçõesconectadas com experiências atrativas deusuários do Windows, Microsoft Office,dispositivos móveis e a Web.[TURTSCHI, 2002]

1.2.1 Casos de sucesso noMundo 

A Xerox (http://www.xerox.com)

conseguiu diminuir o tempo dedesenvolvimento de suas aplicações e oscustos em até 50%, aumentando aescalabilidade em até 500%. Os analistasda Xerox desenvolvem aplicações parafornecer aos seus clientes o melhorserviço possível. Quando precisaram deuma ferramenta mais escalável, a Xeroxpassou a desenvolver aplicações

utilizando o Microsoft Visual Studio2008. 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 35/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  35353535

quando se comparado com umasolução baseada em Flash. Agora aXerox conseguiu criar gráficos

excelentes e desta forma conseguiuaumentar drasticamente aprodutividade interna e a eficiência deseus serviços.

O San Diego Zôo (http://www.sandiegozoo.org) aumenta emelhora as operações de visitasanualmente, cerca de seis milhões de

pessoas visitam o San Diego Zoo. Commais de 200 exposições ativas nozoológico, os visitantes passaram a ficarconfusos e sem saber como planejar oseu passeio no Zoológico. Os líderes dozoológico queriam dar aos visitantesuma visão melhor e recolher dadospreciosos sobre os padrões epreferências dos visitantes. Para supriressas necessidades o jardim zoológicodesenvolveu o iZoofari, usando oMicrosoft Visual Studio 2008Professional Edition. O iZoofari é umaferramenta online que possibilita umplanejamento completo e fornece umaanálise de dados e relatórios.

1.2.2 Casos de sucesso noBrasil

A versão 2008 do Visual Studio,lançada no mês de dezembro, já éamplamente utilizada por empresasnacionais. A Brasília SoluçõesInteligentes, a Ampsoft e a DieboldProcomp são alguns dos exemplos decompanhias que utilizam essa solução.

A Brasília, empresa fabricante desoftware atingiu produtividade 32%

acima da média a partir do uso daferramenta. “O resultado positivo éfruto de um trabalho sério, de

condições e pessoas preparadas. Masessas marcas não seriam atingidas semo uso das soluções da Microsoft",explica Pablo Coelho, diretor daBrasília Soluções Inteligentes. Já aAmpsoft, que desenvolve soluções denegócios para seguradoras,automatizou sua fábrica de softwarecom o Visual Studio 2008. “Todos os

profissionais envolvidos nos processosde desenvolvimento e homologação denovas versões dos projetos ganharamprodutividade e qualidade", diz LetíciaBanffy, gerente da Ampsoft. A DieboldProcomp, fornecedora de soluções deautomação bancária, melhorou a gestãodos ciclos de desenvolvimento ereduziu em 50% os gastos comlicenciamento com a utilização doVisual Studio 2008. “Além de contarcom uma plataforma dedesenvolvimento muito mais poderosae completa, obtivemos uma economiano licenciamento considerável", destacaSidney 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 linksabaixo:

Brasília Soluções Inteligentes

http://www.microsoft.com/brasil/Casos/interna.aspx?id=500Ampsoft 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 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 36/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  36363636

Casos/interna.aspx?id=496 

1.2.3 Benefício para os clientes 

Em outra iniciativa voltada a beneficiaros clientes que já utilizam o VisualStudio Team System 2008, a Microsofttambém divulgou que o Visual StudioTeam System 2010 irá unificar a versãopara administradores de database edesenvolvedores. Até o lançamento danova versão, os clientes atuais quepossuem as edições com SoftwareAssurance (SA) do Visual Studio 2008Development ou Visual Studio 2008Database receberão gratuitamente osseguintes produtos a partir de 1° deoutubro de 2008:

- Visual Studio 2008 DevelopmentEdition; - Visual Studio 2008 Database Edition;

- Visual Studio 2005 paradesenvolvedores de software;- Visual Studio 2005 para profissionaisde Database.

1.2.4 Sobre a Microsoft Brasil 

Fundada em 1989, a Microsoft Brasilgera localmente oportunidades diretas

na área de tecnologia para mais de 18mil empresas e 495 mil profissionais.Nos últimos cinco anos, a empresainvestiu mais de R$ 85 milhões emprojetos sociais, levando tecnologia aescolas, universidades, ONGs ecomunidades carentes. É uma das 103subsidiárias da Microsoft Corporation,fundada em 1975, empresa líder

mundial no fornecimento de software,serviços e soluções em tecnologia dainformação. Com um modelo baseado

em inovação, a Microsoft investe nodesenvolvimento e integração detecnologias 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 VisualStudio

O Visual Studio Team System - VSTS permite

gerar diariamente builds. Estes fazem parte de umprocesso conhecido como Integração Contínua.Integrar continuamente significa garantir quetodo o código hospedado no controle de versãoestará funcionando quando for requisitado. Essanecessidade surgiu a partir do momento quediversos desenvolvedores começaram a trabalharparalelamente no mesmo projeto.

É possível definir que uma build será

executada a cada check-in, semanalmente,a cada intervalo de tempo ou aindadiariamente. Toda esta configuração évisual no VSTS e pode ser feitarapidamente nas opções da build. Além domais, não existe problema ao agendarduas ou mais builds para um mesmohorário, pois o servidor do VSTS conseguegerenciar todas as requisições.

O VSTS possui funcionalidades quepermitem o rastreamento de bugs. A únicacerteza que temos sobre bugs nodesenvolvimento de um software é queeles irão existir. Cabe a nós gerenciá-los demaneira eficiente e corrigi-los o quantoantes. Para resolver este problema, o VSTSpossui um recurso chamado Work Item,

ou em português, Item de Trabalho. Cadaitem de trabalho possui um tipo, sendoque um dos tipos disponíveis é o Bug.

Visual Studio Team System e Projeto Rosário

Page 37: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 37/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  37373737

Portanto para registrar e gerenciar bugs, você pode e deve usar os itens detrabalho.

A figura 01 apresenta o potencial oferecidopelo Visual Studio Team System.

Figura 01 – Visualização do Visual Studio TeamSystem

A figura apresenta uma estruturadividida em algumas camadas quepoderíamos separar conforme asseguintes visões:

• Ferramentas que atuam no cliente(Gerente de projeto, Arquiteto,Desenvolvedor, DBA –Administrador de Banco deDados, 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 dedesenvolvimento

O mercado hoje já está consolidado com ospadrões disponíveis que já oferecem amplasegurança do ponto de vista de tecnologiachegando ao momento de usar atecnologia para facilitar não somente acodificação, mas incorporar todo o ciclo dedesenvolvimento, pois só assim serápossível alcançar um produto comqualidade no prazo e no tempo exigidopelo mercado desviando dos já conhecidosproblemas ligados aos casos de insucessona entrega de projetos de software tãorelatados em diversas pesquisas realizadaspelo Standish Group(www.standishgroup.com) sobre ohistórico dos projetos ao longo dos últimos10 anos.

Com foco nessa grande demanda domercado pela profissionalização do ciclode desenvolvimento que desde 2005 aMicrosoft passou a investir no mercado deApplication Lifecycle Management (ALM),com o lançamento da plataforma de VisualStudio Team System (VSTS).

Com o modelo de gestão para o ciclo de

desenvolvimento oferecido pelo VisualStudio Team System que trabalha emconjunto com a sua metodologia dedesenvolvimento, é possível obter deforma integrada, grandes resultados quesão muito difíceis de alcançar de formamanual devido aos diversos desafios nodia a dia desenvolvendo software.Para ter resultados numa plataforma de

ALM é necessário projetar a implantaçãopensando em todo o ciclo dedesenvolvimento do seu projeto para que

Visual Studio Team System e Projeto Rosário

Page 38: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 38/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  38383838

possa usar a plataforma de formaestratégica e tenha total aderência comas características do seu projeto.

O VSTS oferece um modelo sólido paraos mais variados tamanhos de projetospermitindo criar uma personalizaçãopara atender clientes pequenos, médiose grandes, respeitando as diferenças decada cliente.

Hoje em dia, independente do tamanho

da empresa, sendo ela pequena oumédia ou grande em algum momento jádeve ter sido levantada a bandeira daterceirização dos projetos dedesenvolvimento ou parte deles.Existem cenários em clientes quepossuem 09 fornecedores paradesenvolvimento e o que poderia ser deimediato uma grande facilidade acabanecessitando de uma série de critériospara o devido acompanhamento. Coma plataforma de Visual Studio TeamSystem você tem mecanismoseficientes para gerenciar osfornecedores externos fazendo com elessigam os padrões de desenvolvimentodo seu projeto permitindo acompanharsua qualidade e todas as entregas.

2.7 Principais vantagens edesvantagens do Visual Studio

A identificação de vantagens edesvantagens se torna um assuntoabrangente em abordar uma tecnologiaespecífica sem a comparação da mesmacom outra, em contrapartida, alguns

aspectos são enfatizados:

Vantagens do Visual Studio:

1. Aumento da produtividade emelhores resultados em menostempo;

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 aequipe de software;

4. Garantia de qualidade antes edurante todo o processo dedesenvolvimento;

5. O número de soluções menor, se

comparado a Java, mas sãogarantidos por um único fabricante ese integram de maneira transparente;

6. Várias linguagens de programaçãopodem ser usadas nodesenvolvimento; O .Net Frameworké distribuído em conjunto com oSistema Operacional Windows;

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

Desvantagens do Visual Studio:

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

2. Mudança de versão na plataformatem causado dores de cabeça porfalta de compatibilidade;

3. Pouco código aberto;

3. Projeto Rosário

3.1 Microsoft Visual Studio TeamSystem codinome "Rosario"

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

Visual Studio Team System e Projeto Rosário

Page 39: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 39/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  39393939

• Gerenciamento e priorizaçãocombinados de projetos de TI pormeio da integração com oMicrosoft Project Server;

• Gerenciamento de vários projetospara um balanceamento de cargade recursos proativo de acordocom as prioridades do negócio;

• Rastreamento completo (incluindoitens de trabalho hierárquicos)para controlar os produtos de umprojeto em relação aos requisitosdos negócios e à capacidade de

conduzir uma análise de rápidoimpacto das alterações propostas;

• Métricas e painéis abrangentespara uma visibilidadecompartilhada no status doprojeto e progresso em relação aosprodutos;

• Novos recursos eficientes parapermitir que desenvolvedores e

testadores rapidamenteidentifiquem, comuniquem,priorizem, diagnostiquem eresolvam bugs;

• Gerenciamento de caso de testeintegrado para criar, organizar egerenciar casos de teste nasequipes de desenvolvimento eteste;

• Automação de teste e orientaçãopara ajudar os desenvolvedores etestadores a se concentrarem emtestes no nível comercial, em vezde tarefas repetitivas, manuais;

• Métrica de qualidade para umadecisão de aprovar ou não aversão com relação a se umaplicativo está pronto para

produção e foi totalmente testadosegundo os requisitos comerciais;• Rápida integração de equipes

remotas, distribuídas, desconectadas eterceirizadas no processo dedesenvolvimento;

• Fácil personalização de processo eorientação da Microsoft e de parceirospara corresponder à maneira como aqual sua equipe trabalha

• Suporte integrado para criar pacotesde instalação usando a tecnologiaXML do Windows Installer;

• Aprimoramentos na administração de váriosservidores, na criação e no controle daorigem. 

3.2 Projeto Microsoft revela novaversão do Visual Studio e daferramenta .Net Framework

Companhia anuncia novidades parasimplificar o gerenciamento do ciclo dedesenvolvimento de software, reveladetalhes das novas versões do VisualStudio 2010 e do .Net Framework 4.0.

A Microsoft apresenta algumas dasnovidades que farão parte da próximageração do Visual Studio 2010 e .NetFramework 4.0. Dessa forma, a companhiasegue com o compromisso de oferecer amelhor experiência para osdesenvolvedores acompanharem astendências de mercado, como “computação

na nuvem” (cloud computing), edisponibilizar uma solução segura econfiável para o desenvolvimento deaplicativos para as plataformas mais atuais.

Além do foco no desenvolvedor, aMicrosoft consolida seu comprometimentoem entregar para as empresas umaplataforma completa para todo o ciclo de

vida de desenvolvimento de aplicativospor meio do ALM (Application LifecycleManagement). O Visual Studio 2010, cujo

Visual Studio Team System e Projeto Rosário

Page 40: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 40/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  40404040

codinome é Rosário, oferecerá umasolução única que atende todas aspessoas envolvidas no processo dedesenvolvimento de uma aplicação,

retirando muitas das barreiras queevitam a integração entre equipes ediferentes tecnologias. “O objetivo éentregar para nossos clientes umasolução capaz de apoiar todos osenvolvidos no processo dedesenvolvimento de uma aplicaçãodesde a análise de requisitos earquitetura até a homologação,

instalação e manutenção. Issoconsiderando que essa plataforma éinteroperável com outras tecnologiasusadas para desenvolvimento desoftware do mercado.”, destacou CarlosZimmermann, gerente de produtospara desenvolvimento da MicrosoftBrasil.

3.2.1 Democratizando oGerenciamento de Ciclo deVida de Aplicativos

Atualmente, grande parte dodesenvolvimento de aplicativos estádisperso ou dependente de diversasáreas nas empresas. Isso gera diversosdesafios que podem impactar em perdade produtividade, controle e

previsibilidade nos ciclos dedesenvolvimento de um software. Como Visual Studio 2010, a Microsoft daráum passo à frente na oferta de umasolução avançada que apoiará a equipeenvolvida no processo dedesenvolvimento para colaborar deforma efetiva e com alta qualidade.Essa oferta inclui novos recursos que

possibilitam que todos oscolaboradores da equipe de softwareparticipem do ciclo de vida do produto.

Arquitetos, analistas de sistemas,desenvolvedores, testadores eadministradores de database (DBAs) entreoutros, terão ferramentas específicas para

trabalharem de forma integrada eprodutiva. Entre os destaques da novaversão estão:

• Ferramentas de modelagem - OVisual Studio Team SystemArchitecture Edition fornecerá umnovo conjunto de ferramentas UML(Unified Modeling Language) na

nova versão. Estas ferramentas, quepermitem aos desenvolvedoresvisualizarem os produtos de seutrabalho em diagramaspadronizados, ajudarão a preencher alacuna entre modelos de alto nível e ocódigo da aplicação, enfatizando os

 benefícios do uso de UML e soluçõesDSL (Digital Subscriber Line),

voltadas à transmissão digital dedados. Adicionalmente, a edição“architecture” fornecerá ricasferramentas que permitirão aosclientes entender melhor seussistemas atuais, fornecendocapacidade de visualizar e integrar ainfra-estrutura atual facilmente comnovos sistemas na camada demodelagem.

• Maior eficiência por todo o ciclo detestes - A Microsoft investiusignificativamente nos recursos detestes do Visual Studio 2010 esimplificou as ferramentasnecessárias para a integração detestes por todo seu ciclo de vida dedesenvolvimento. Ferramentas detestes generalistas poderosas e fáceis

de usar que suportam planejamentode testes e gerenciamento de casos de

Visual Studio Team System e Projeto Rosário

Page 41: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 41/43

www.codificando.net 

 C o d  i   f   i   c a n d  o . n e t   e- m a g a

z i   n e

e-magazine

Junho / Julho 2009|  41414141

teste, assim como ferramentasavançadas para testes manuaisfarão parte do Visual Studio TeamSystem 2010.

• Melhorias significativas nosrecursos de colaboração - AMicrosoft também investiu nosrecursos e na escalabilidade doTeam Foundation Server (TFS),incluindo aprimoramentos quepermitem às equipesconfigurarem e adotaremqualquer forma de processo de

desenvolvimento. As equipespoderão rastrear o trabalho commais facilidade. No sistema degerenciamento de código fonte, oTFS oferece ferramentas devisualização para o rastreamentode alterações em desvios e noconjunto de produção. O VisualStudio 2010 também passará a

incluir conjuntos baseados nofluxo de trabalho que detectamerros antes desses afetarem orestante da equipe ou, pior ainda,ingressar na produção. Por fim, osadministradores contarão comuma implantação e gerenciamentode TFS significativamente maissimples.

Conclusão

Existem diversos conjuntos demetodologias para diferentes tipos deciclos de vida de desenvolvimento desoftware. Para implementar essasmetodologias com eficiência econsistência, é importante ter asferramentas do ciclo de vida que

automatizam os processos e artefatosdas metodologias. O Microsoft VSTS é

um desses sistemas e fornece uma soluçãoatraente para automação e gerenciamentode metodologia.

O VSTS implementa uma metodologiausando modelos de processos. Você pode"personalizar" modelos de processoprontos para atender a seus requisitos demetodologia. Contudo, existem algumasfuncionalidades, como agregação derelatório, que você não obtém apenas coma "personalização". Para obter isso, vocêpode "estender" o VSTS usando pontos

extensíveis.

O VSTS é uma solução completa paraqualificar qualquer time dedesenvolvimento de software. Os recursosque ele oferece para desenvolvedores,testadores, gerentes, etc, são excelentespara a criação de qualquer projeto. E omais importante: tudo em um único

conjunto de ferramentas trabalhando demaneira integrada e inteligente parafacilitar as tarefas do dia-a-dia.

Visual Studio Team System e Projeto Rosário

Alan SantosBacharel em Comunicação Social pela UNI-BH. FormaçãoSuperior em Gerência de Redes pela UNA, Especialista emGestão Estratégica da Informação pela UFMG,Especializando em Engenharia de Software e Governança deT.I pela Universidade FUMEC. Trabalhando atualmente

como Superintendente de Gestão em Informática naDefensoria Pública do Estado de Minas Gerais.

Gustavo Henrique Dornelas de DeusBacharel em Sistemas de Informação, Especializando emEngenharia de Software e Governança de T.I. pelaUniversidade FUMEC, exerce o cargo de AnalistaDesenvolvedor .NET.

Felipe Augusto da Costa MarquesBacharel em Ciência da Computação, Especializando emEngenharia de Software e Governança de T.I. pelaUniversidade FUMEC, exerce o cargo de Analista de

Sistemas 

Page 42: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 42/43

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

Trabalhei durante alguns anosdesenvolvendo sistemas Windowsforms ou asp/asp.net mas sempre comum foco de sistema… ou seja, algo queroda dentro de uma rede sobredomínio, com requisitos mínimos(principalmente navegador), etc etc etc.A dois anos me aventuro trabalhandocom internet, ou seja, o mesmo

ASP.NET! certo? Totalmente errado . OASP.NET sim é o mesmo, porém oestilo de desenvolvimento mudacompletamente, onde existe um cenáriomuito mais amplo e crítico.

Seguem algumas dicas:

• Páginas com variações ou não,

porém que não tenha variaçõespersonalizadas por usuário, use eabuse do OUTPUT CACHE… oresultado é sensacional, aperformance aumenta muito e émuito simples de se trabalhar.

• Ferramentas de análise – utilizeferramentas que exibam passo a

passo o carregamento das páginase entenda as dependências e quempode estar prejudicando o

carregamento.

Firebug

Complemento do Firefox que exibe cadaobjeto carregado.

Site Web Optimization Tool (http:// 

www.websiteoptimization.com/services/ 

analyze/ )

Exibe a lista de objetos carregados e sugeremuitas coisas que podem sermelhoradas… é simplesmentesensacional… além de oferecer umconteúdo fortíssimo de boas práticas deweb em geral.

   e  -   m   a   g   a   z   i   n   e

Pequenas dicas que podem

fazer a diferença 

Por: Alexandre Tarifa

Figura 1

Page 43: codificando 10

8/3/2019 codificando 10

http://slidepdf.com/reader/full/codificando-10 43/43

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 doW3C (valida tor.w3.org).

   e  -   m   a   g   a   z   i   n   e