Codificando e-magazine11

425 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
425
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Codificando e-magazine11

  1. 1. Fale com EditorÉ muito importante para a equipesaber a sua opinião sobre a revis-ta, caso tenha alguma critica, su-gestão, ou elogio entre em conta-to.Caso tenha interesse em publicarum artigo na revista envie o títuloe um resumo do tema em formatoWord.site@codificandomagazine.netEDITORESAlexandre TarifaDiego NogareEmerson FacunteSergio GonçalvesREVISÃOFernanda SallaiGiaccomo SabinoMONTAGEM / FORMATAÇÃOMilton CarvalhaesEDITORAÇÃO E DIAGRAMAÇÃOAdriano AlmeidaCOLABORADORESCaio AzevedoDanilo Marion MunhózDiego NogareFabiano BelmonteJuliano SchimiguelMilton C. FilhoRicardo QuartierSeiti YamashiroTiago Tiguen SinzatoProduzido por:www.codificando.netEdição 11 Número 11 Ano 03 2009SumárioConheça melhor essa nova tecnologia de ma-nipulação de dados.Por: Milton C.Filho28 :. Introdução ao LINQ04 :. Gerando Boletos Bancários IIContinuação do artigo de como gerar boletosbancários usando o ASP.NETPor: Seiti Yamashiro03:. Editorial 48:. .Close ( )Conheça esta poderosa plataforma derelatórios.Por: Caio Azevedo30:. Reporting Services 2005Aprenda como escrever nas tabelas do SAPcom o .Net SAP Connector 2.0.Por: Diego Nogare12 :. .NET SAP connector 2.0Conheça as novas funcionalidades do C# 4.Por: Fabiano Belmonte18:. C# 4.0Introdução sobre tecnologias de jogos.Por: Tiago Tiguen Sinzato / Juliano Schimiguel23:. Tecnologia de Jogos DigitaisAprenda alguns conceitos de Rede.Por: Danilo Marion Munhóz / Juliano Schimiguel34:. Servidor no Contexto de RedeComo escolher o gerador de Relatórios ?Por: Ricardo Quartier42:. Report Sharp Shooter
  2. 2. Diego Nogaresite@codificandomagazine.netPessoal, como de costume estamos nos esforçando para montar a revista com artigos técnicos de alta qua-lidade e adequados às novidades/necessidades que surgem a cada dia no nosso universo.Nesta edição, a 11ª publicada gratuitamente pelo grupo Codificando .Net, aborda artigos sobre LINQ, SQLServer, SAP, ASP .NET, entre outras tecnologias que são muito importantes hoje no mercado nacional. Osautores, são grandes conhecedores dos assuntos abordados, e conseguem passar de forma simples e diretaos temas propostos.Um ponto super importante, que começamos a plantar a algum tempo e que agora está dando ótimos fru-tos é a idéia de que os próprios membros da comunidade criem os materiais. Isso é tão bom pra todomundo, que cada vez mais membros ativos estão realizando atividades e conquistando seus espaços emmeio às comunidades no Brasil.Como sempre fiz, em todas as edições, deixo aqui o espaço aberto para que vocês possam nos enviar ma-teriais produzidos por vocês, que teremos o maior prazer em publicá-los.Muito obrigado pela confiançaGrande Abraço,EditorialEdição 11 Número 11 Ano 03 2009EDITORIAL
  3. 3. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 4444Gerando Boletos BancáriosParte IIContinuação do artigo de como gerar boletos bancáriosusando o ASP.NETNa Parte I vimos como emitir um boletopara impressão. O que falta é populá-locom dados que façam sentido. Vamos en-tão populá-lo com dados relevantes.Em primeiro lugar é necessário que vocêtenha os dados armazenados em algumlugar, um banco de dados talvez. Mas voupresumir que seu código já trate dos dadose me ater à construção de duas partes fun-damentais do boleto: a linha digitável e ocódigo de barras.Note que, embora alguns dígitos da linhadigitável sigam um padrão, cada bancopode possuir regras próprias para gerá-la.Entre em contato com seu banco para teressas informações.Linha digitávelA linha digitável, lembrando novamenteque estou seguindo as instruções do Itaú,possui 47 dígitos.Abaixo segue a construção da linha, lem-brando que DAC significa dígito de autocon-ferência, ou simplesmente dígito verifica-dor.AA-ABC.CCDDXDDDDD.DEFFFYFGGGG.GGHHHZKUUUUVVVVVVVVVVcampo 110 dígitoscampo 211 dígitoscampo 311 dígitos 4 campo 514 dígitosCampo 1 (AAABC.CCDDX):• AAA = código do banco – Itaú =341;• B = código da moeda – Real = 9;• CCC = código da carteira de co-brança;• DD = dois primeiros dígitos doNosso Número;• X = DAC módulo 10 do campo 1;Campo 2 (DDDDD.DEFFFY):• DDDDDD = restante do Nosso Nú-mero;• E = DAC do grupo agência/conta/carteira/nosso número;• FFF = três primeiros números daagência;• Y = DAC módulo 10 do campo 2;Por: Seiti Yamashiro
  4. 4. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 5555os DAC: s o módulo 10 e o módulo 11.O cálculo do DAC módulo 10 é realizadoda seguinte forma. Tome o campo a tercalculado o DAC. Multiplique cada alga-rismo do campo pela sequência de mul-tiplicadores 2, 1, 2, 1, 2, 1…, posiciona-dos da direita para a esquerda. Some osresultados, que chamarei de N.Calcule o módulo 10 de N – mod10(N)ou N%10.O DAC será 10 – mod10(N). Caso o DACseja 10, considere-o como 0.Segue abaixo um método para calcular oDAC módulo 10:private int CalculaDacMod10(string campo){int soma = 0;int m;// caso exista um número par dealgarismos, inicia a mult. por 1if ((campo.Length % 2) == 0)m = 1;elsem = 2;foreach (char c in campo){soma += Convert.ToInt32(c) *m;m = 3 - m; //regra aplicada:(x+y) - x = y; (x+y) - y = x}int dac = 10 - (soma % 10);if (dac == 10)return 0;return dac;}O cálculo do DAC módulo 11 é bem se-melhante.Ele depois será utilizado paracompor o DAC do código de barras.Tendo o trecho a ter o DAC calculado,tome seus algarismos e multiplique-os,iniciando-se da direita para a esquerda,pela sequência numérica de 2 a 9 ( 2, 3, 4,Campo 3 (FGGGG.GGHHHZ):• F = último número da agência;• GGGGGG = conta corrente + DAC;• HHH = zeros;• Z = DAC módulo 10 do campo 3;Campo 4 (K):• K = DAC módulo 11 do código debarras (único DAC que vai para ocódigo de barras);Campo 5 (UUUUVVVVVVVVVV):• UUUU = fator de vencimento;• VVVVVVVVVV = valor do boleto,sem ponto e vírgula, ou zeros, nocaso do valor ser preenchido pelopróprio sacado.O fator de vencimento contém 4 dígitose é o número de dias desde 7 de outubrode 1997, servindo para indicar a data devencimento do boleto (teremos o bug domilênio 21 de fevereiro de 2025?).Seu cálculo é bem simples, como pode-mos ver pelo método abaixo:private int FatorVencimento(DateTime date){DateTime zeroDay = newDateTime(1997, 10, 7);return (date - zeroDay).Days;}DACAnalisando as regras anteriores, temosque a maior parte do trabalho consiste-seem concatenar strings e calcular DACs.Para criar nossa Linha Digitável iremosdispor de dois algoritmos para calcularGerando Boletos Bancários
  5. 5. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 66665, 6, 7, 8, 9, 2, 3, 4… e assim por diante).Some o resultado obtendo nosso N.Calcule agora o módulo 11 de N –mod11(N) ou N%11. O DAC será 11 –mod11(N).Caso o cálculo do DAC tenha dado 0, 10ou 11, considere-o como 1.O método abaixo faz o cálculo do DACmódulo 11:private int CalculaDacMod11(string campo){int soma = 0;int m = 2;//Invertendo a string, para fa-cilitar o trabalho com os multi-plicadoreschar [] arr =campo.ToCharArray();Array.Reverse(arr);string reversed = new String(arr);foreach(char c in reversed){soma += Convert.ToInt32(c) *m;m = (m + 1 > 9 ? 2 : m + 1);}int dac = 11 - (soma % 11);if (dac == 0 || dac == 10 ||dac == 11)return 1;return dac;}Código de BarrasO padrão de código de barras para osboletos no Brasil é o denominado 2 de 5intercalado, que pode ser resumido nasseguintes características:• codifica apenas caracteres numéri-cos (0-9);• cada caractere é representado por5 barras, dentre os quais 2 são maislongas;• codificação binária – largo é 1, es-treito é 0;• os espaços também possuem signifi-cado, por isso o intercaladoEste código de barras serve apenas pararepresentar nossa linha digitável, transfor-mado o que é uma seqüência de númerosem uma imagem. Existem muitos controlespor aí que fazem isto, mas não encontreinenhum gratuito para Asp.NET.Neste exemplo vou utilizar o arcode-net.net. Ele pode ser testado e é completa-mente funcional, a diferença é que, enquan-to você não registrá-lo, ele criará uma linhaescrito barcodenet.net (ou algo assim) logoacima do código de barras.Embora a linha digitável possua 47 dígitos,o número que será codificado em barraspossui apenas 44. Por quê? Porque deve-mos nos livrar de três dos quatro DACsque constam nela.Assim o código de barra terá apenas umDAC. Outra diferença importante é de quea ordem em que os campos se apresentamna linha digitável não é a mesma da apre-sentada pelo código de barras.Segue como gerar então os dígitos quecompõem o código de barras:• 3 dígitos do código do Banco (341);• 1 dígito com o código da moeda (3);• 1 dígito do DAC do Código de Barras;• 4 dígitos do fator de vencimento;• 10 dígitos do valor do título, desconsi-derando qualquer sinal de pontuação;• 3 dígitos da carteira;• 9 dígitos do Nosso Número mais seupróprio DAC;• 4 dígitos da agência;Gerando Boletos Bancários
  6. 6. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 7777• 6 dígitos da conta corrente, comseu próprio DAC;• 3 dígitos não utilizados e compos-to por zeros (000).Depois de gerar os dígitos que com-põem o código de barras, é questão detorná-lo em imagem utilizando o con-trole comentado anteriormente:public byte[] CodigoBarras(){BarcodeNETWeb barcode = newBarcodeNETWeb();barcode.BarcodeText = Digi-tosCodigoBarrasComDac();barcode.BarcodeType = BAR-CODE_TYPE.INT2OF5;return bar-code.GetBarcodeBitmap(FILE_FORMAT.PNG);}CódigoSegue então a listagem do código fonteutilizado neste trabalho. Claro que hámuito o que melhorar nele, mas isto ficacomo exercício. =)Note que modifiquei a classe Dados dopost anterior.public class LinhaDigitavel{public int Banco { get; pri-vate set; }public int Moeda { get {return9; }}public string CarteiraCobranca{ get; private set; }public string NossoNumero{ get; private set; }public string Agencia { get;private set; }public string ContaCorrente{ get; private set; }public DateTime Vencimento{ get; private set; }public decimal Valor { get;private set; }public LinhaDigitavel(int banco,string carteira,string nossonumero, string agen-cia, string contacorrente,DateTime vencimento, decimal va-lor){this.Banco = banco;this.CarteiraCobranca = car-teira;this.NossoNumero = nossonume-ro;this.Agencia = agencia;this.ContaCorrente = contacor-rente;this.Vencimento = vencimento;this.Valor = valor;}public LinhaDigitavel(Dados da-dos){this.Banco = dados.Banco;this.CarteiraCobranca = da-dos.Carteira;this.NossoNumero = da-dos.NossoNumero;this.Agencia = dados.Agencia;this.ContaCorrente = da-dos.ContaCorrente;this.Vencimento = da-dos.DataVencimento;this.Valor = da-dos.ValorDocumento;}public string FormatoParaImpres-sao(){returnCampo1().Substring(0, 5) + "." +Campo1().Substring(5) + " "+ Campo2().Substring(0, 5) + "." +Campo2().Substring(5) + " "+ Campo3().Substring(0, 5) + "." +Campo3().Substring(5) + " "+ Campo4() + " "+ Campo5();}public byte[] CodigoBarras(){BarcodeNETWeb barcode = newBarcodeNETWeb();barcode.BarcodeText = Digitos-CodigoBarrasComDac();barcode.BarcodeType = BARCO-DE_TYPE.INT2OF5;return bar-code.GetBarcodeBitmap(FILE_FORMAT.PNG);}private string Campo1(){string campo =this.Banco.ToString("000")+ this.Moeda.ToString("0")+ this.CarteiraCobranca.Trim()+ this.NossoNumero.Split(-)[0].Substring(0, 2);Gerando Boletos Bancários
  7. 7. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 8888if (campo.Length != 9) thrownew Exception("Entrada in-válida");return campo + CalculaDacMod10(campo).ToString("0");}private string Campo2(){string campo =this.NossoNumero.Split(-)[0].Substring(2, 6)+this.DacAgenciaContaCarteiraNossNumero().ToString("0")+ this.Agencia.Substring(0, 3);if (campo.Length != 10)throw new Exception("Entrada in-válida");return campo +CalculaDacMod10(campo).ToString("0");}private string Campo3(){string campo =this.Agencia.Substring(3, 1)+ this.ContaCorrente.Split(-)[0] +this.ContaCorrente.Split(-)[1] //sinto falta de explode/implode+ "000";if (campo.Length != 10)throw new Exception("Entrada in-válida");return campo +CalculaDacMod10(campo).ToString("0");}private string Campo4(){return DacCodigoBarras().ToString("0");}private string Campo5(){returnthis.FatorVencimento().ToString("0000")+ FormataValor(this.Valor);}private string FormataValor(decimal valor){string[] value =this.Valor.ToString("00000000.00",Sys-tem.Globalization.CultureInfo.InvariantCulture).Split(.);return value[0] + value[1];}private int DacAgenciaConta-CarteiraNossNumero(){string termo =this.Agencia+ this.ContaCorrente.Split(-)[0]+ this.CarteiraCobranca+ this.NossoNumero.Split(-)[0];if (termo.Length != 20) thrownew Exception("Entrada inválida");return CalculaDacMod10(termo);}private int DacCodigoBarras(){return CalculaDacMod11(DigitosCodigoBarrasSemDac());}private string DigitosCodigoBar-rasSemDac(){string termo =this.Banco.ToString("000")+ this.Moeda.ToString("0")+ this.FatorVencimento().ToString("0000")+ this.Valor.ToString("0000000000")+ this.CarteiraCobranca+ this.NossoNumero.Split(-)[0] +this.NossoNumero.Split(-)[1]+ this.Agencia+ this.ContaCorrente.Split(-)[0]+this.ContaCorrente.Split(-)[1] //sinto falta de explode/implode+ "000";return termo;}private string DigitosCodigoBar-rasComDac(){string termo = DigitosCodigo-BarrasSemDac();return termo.Substring(0, 4) +DacCodigoBarras().ToString("0") +termo.Substring(4);}private int FatorVencimento(){DateTime zeroDay = newDateTime(1997, 10, 7);return (this.Vencimento - ze-roDay).Days;}////// DAC módulo 10/// Exemplo:/// Considerando-se a seguinte re-presentação numérica do código debarras:/// 34191.1012? 34567.88005?71234.57000? 6 16670000012345/// Temos:Gerando Boletos Bancários
  8. 8. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 9999/// a) Multiplicando a sequênciados campos pelo módulo 10:/// Campo 1 341911012 Campo 23456788005 Campo 3 7123457000/// X 212121212 X 1212121212 X1212121212/// Observação: Os campos 4 e 5não tem DAC/// b) Some, individualmente, osalgarismos dos resultados doprodutos:/// Campo 1 : 6 + 4 + 2 + 9 + 2+ 1 + 0 + 1 + 4 = 29/// Campo 2 : 3 + 8 + 5 + 1 + 2+ 7 + 1 + 6 + 8 + 0 + 0 + 1 + 0= 42/// Campo 3 : 7 + 2 + 2 + 6 + 4+ 1 + 0 + 7 + 0 + 0 + 0 = 29/// c) Divida o total encontradopor 10, a fim de determinar oresto da divisão:/// Campo 1 : 29 / 10 = 2, resto9/// Campo 2 : 42 / 10 = 4, resto2/// Campo 3 : 29 / 10 = 2, resto9/// d) Calculando o DAC:/// Campo 1 : DAC = 10 - 9 : DAC= 1/// Campo 2 : DAC = 10 - 2 : DAC= 8/// Campo 3 : DAC = 10 - 9 : DAC= 1/// Portanto, a sequência corre-ta da linha digitável será:/// 34191.10121 34567.88005871234.570001 6 16670000012345/////////private int CalculaDacMod10(string campo){int soma = 0;int m;// caso exista um número par dealgarismos, inicia a mult. por 1if ((campo.Length % 2) == 0)m = 1;elsem = 2;foreach (char c in campo){soma += Convert.ToInt32(c)* m;m = 3 - m; //regra aplica-da: (x+y) - x = y; (x+y) - y = x}int dac = 10 - (soma % 10);if (dac == 10)return 0;return dac;}////// Considerando o seguinte conte-údo do Código de Barras:/// 3419?1667000001234511012345678800571423457000/// onde:/// 341 = Código do Banco/// 9 = Código da Moeda/// ? = DAC do Código de Barras/// 1667 Fator de Vencimento(01/05/2002)/// 0000012345 = Valor do Título(123,45)/// 110123456788 = Carteira/NossoNúmero/DAC (110/12345678-8)/// 0057123457 = Agência/ContaCorrente/DAC (0057/12345-7)/// 000 = Posições Livres (zeros)/// Temos:/// a) Multiplica-se a sequênciado código de barras pelo módulo11:///3419166700000123451101234567880057123457000/// X4329876543298765432987654329876543298765432/// b) Soma-se o resultado dosprodutos obtidos no item “a” aci-ma:/// 12 + 12 + 2 + 81 + 8 + 42 + 36+ 35 + 0 + 0 + 0 + 0 + 0 + 7 + 12+15 + 16 + 15 + 2 +/// 9 + 0 + 7 + 12 + 15 + 16 + 15+ 12 + 63 + 64 + 56 + 0 + 0 + 20 +21 + 2 + 18 + 24 +/// 28 + 30 + 35 + 0 + 0 + 0 = 742/// c) Determina-se o resto da Di-visão:/// 742 / 11 = 67, resto 5/// d) Calcula-se o DAC:/// DAC = 11 – 5 então DAC = 6/// Portanto, a sequência corretado código de barras será:///34196166700000123451101234567880057123457000/// ^---DAC/////////private int CalculaDacMod11(string campo){int soma = 0;int m = 2;//Invertendo a string, para faci-litar o trabalho com osmultiplicadoreschar [] arr = campo.ToCharArray();Array.Reverse(arr);Gerando Boletos Bancários
  9. 9. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 10101010string reversed = new String(arr);foreach(char c in reversed){soma += Convert.ToInt32(c)* m;m = (m + 1 > 9 ? 2 : m +1);}int dac = 11 - (soma % 11);if (dac == 0 || dac == 10 ||dac == 11)return 1;return dac;}}public class Dados{public DateTime DataDocumento{ get; set; }public DateTime DataVencimento{ get; set; }public DateTime DataProces-samento { get; set; }public string Cedente { get;set; }public string SacadoResumido{ get; set; }public string SacadoCompleto{ get; set; }public int Banco { get; set; }public string Agencia { get;set; }public string ContaCorrente{ 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 byte[] CodigoBarra{get{LinhaDigitavel linha = newLinhaDigitavel(this);return linha.CodigoBarras();}}public string LinhaDigitavel{get{LinhaDigitavel linha = newLinhaDigitavel(this);return li-nha.FormatoParaImpressao();}}}Um exemplo de uso do gerador de bole-tos:protected void btnGeraBo-leto_OnClick(object sender, Even-tArgs e){Boleto boleto = new Boleto(Por-tal.Controles.Boleto.Banco.ITAU,Server);List dados = new List();dados.Add(new Por-tal.Controles.Boleto.Dados(){Aceite = "N",Agencia = "1234",Banco = 341,Carteira = "109",Cedente = "Indústria ACME",CodigoBaixa = "109/12345678-9",CodigoCedente = "12345-6",ContaCorrente = "12345-6",DataDocumento = DateTime.Now,DataProcessamento = DateTi-me.Now,DataVencimento = new DateTime(2009, 4, 5),EspecieDocumento = "DM",Instrucoes =@"Não receber após o vencimento",NossoNumero = "12345678-9",NumeroDocumento = 0000000012,Quantidade = 0,SacadoCompleto =@"Padoca do Zé - LTDA CNPJ -12.345.678/0001-23Rua das Casas, 12301234-123 Vl do Bairro Sao PauloSP",SacadoResumido = "Padoca do Zé -LTDA",Valor = 0,ValorDocumento = 2637.00m});boleto.Baixa(Response, dados);Gerando Boletos Bancários
  10. 10. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 11111111Seiti YamashiroGraduando em Ciência da Computação, desenvolvedorweb em C#/Asp.NET com banco de dados MS SQL Ser-ver. Nas hora vagas costuma programar em PHP e im-plantar sistemas livres em Linux, além de alimentar umblog: http://seiti.eti.br}Embora existam outras opções, como cartões de cré-dito e pagamento direto online, o boleto ainda é utili-zado devido à familiaridade e facilidade de pagamen-to por parte do comprador. Por isso temos de sabergerá-lo em nossos sistemas, mesmo que utilizemossoluções prontas.Vimos que gerar um boleto na plataforma .Net é algosimples, composto por uma guia impressa, algumalógica para a geração da linha digitável e uma ferra-menta de terceiros para a criação do código de barras.A parte mais difícil fica no sistema subjacente, nãoabordada, onde entra o retorno do pagamento do bo-leto e finalmente na remessa da mercadoria. Mas istofica para uma próxima.Gerando Boletos Bancários
  11. 11. www.codificando.netCodificando.nete-magazinee-magazine12121212Ago / Set - 2009 |Escrevendo nas tabelas do SAPcom o .NET SAP Connector 2.0 a-través de RFCAprenda como escrever nas tabelas do SAP como .Net SAP Connector 2.0.No artigo anterior sobre SAP (lendo as ta-belas do SAP com .NET SAP Connector 2.0através de RFC, que pode ser acessado na10ª Edição da Revista Codificando .Net e-Magazine), foi explicado sucintamente oque é o SAP, e quais são as atividades/recursos envolvidos para conseguir utilizarRFCs para se trabalhar com o SAP. Se sen-tir necessidade, pode consultar o artigo an-terior, para esclarecer e alinhar as idéias.Neste artigo, faremos o inverso do que foifeito anteriormente. Desta vez, ao invés deler informação do SAP, iremos escreverinformação no SAP. Para isso, será desen-volvida uma aplicação Windows Formsem C# que fará a escrita em uma RFC doSAP, com base em um DataTable (mas aorigem da informação fica a seu critério!).Vou partir diretamente para a aplicação,entendendo que já esteja tudo configurado,como explicado no artigo sobre ler tabelasdo SAP.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 Connector Proxy”.Este Proxy receberá todos os itens dasRFCs que serão conectadas atravésdo .Net e montará automaticamente asclasses de acessos com suas respectivasproperties (métodos Get e Set), entre ou-tras coisas.Para utilizar este proxy, será necessárioadicionar um novo item ao projeto, en-tão vá até a Solution Explorer, cliquecom o botão direito do mouse e apontepara Add New Item, acompanhe estepasso na Figura 1. A tela de Templatedos itens a serem inseridos, pode ser a-companhado na Figura 2.Por: Diego NogareFigura 1. Adicionando novo item ao projeto
  12. 12. www.codificando.netCodificando.nete-magazinee-magazine13131313Ago / Set - 2009 |rer, para se poder visualizar as RFCs queestão liberadas pra acesso. Vá até o ServerExplorer, procure o item do SAP (que foiinserido após a instalação do SAP .NetConnector 2.0), expanda a árvore do SAPe clique com o botão direito no item“Application Servers”, então adicione osdados AppServerHost / Client / Pass-word / SystemNumber e UserName. A-companhe este passo na Figura 4.Após este passo, será possível expandir o“Application Servers” e visualizar o servi-dor que você adicionou (terá o nome for-necido ao campo AppServerHost). Ao ex-pandir este item, será necessário configu-rar o filtro das Functions para aparecer asRFCs (crie um novo filtro e coloque os da-dos para filtrar (* retorna todas)) que po-derão ser utilizadas na aplicação. Acom-panhe as RFCs fornecidas na Figura 5.Agora que as RFCs já estão listadas, é sóarrastar a RFC que será acessada paraApós a adição, o item aparecerá no SolutionExplorer (neste exemplo, foi adicionado na pró-pria raiz do projeto, mas ele pode ser adiciona-do dentro de alguma outra pasta para melhorara organização), como mostra a Figura 3.Dê dois cliques no Proxy adicionado, euma tela sem nenhum controle será a-berta no painel principal do Visual Stu-dio 2003. Esta tela que se abriu, serviráde container para as RFCs gerarem auto-maticamente os códigos das classes deacesso. Este processo será explicado commais detalhes adiante.Agora, para conseguir utilizar as RFCs(que foram criadas pelos ABAPs, lem-bra?!), é necessário adicionar os dadosdo servidor do SAP (que serão forneci-dos pelo pessoal de BASIS, isso vocêtambém lembra, né?!) no Server Explo-Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0Figura 2. Adicionando o proxy ao Projeto.Figura 3. Proxy na Solution Explorer.Figura 4: Inserindo os dados de acesso no ServerExplorer.
  13. 13. www.codificando.netCodificando.nete-magazinee-magazine14141414Ago / Set - 2009 |dentro do Proxy, na tela que já deve es-tar aberta no painel principal do VisualStudio. Caso isso ainda não esteja feito,dê dois cliques no item do proxy na So-lution Explorer. Quando arrastar a RFCpara cima do proxy, os dados da classedesta RFC serão criados automatica-mente, permitindo o acesso à seus cam-pos através de suas properties. Acompa-nhe na Figura 6, o proxy com uma RFCjá arrastada.Agora que a RFC foi arrastada para oproxy, as classes para acessar os dadosdo SAP foram criados automaticamentedentro do proxy, se for até a SolutionExplorer e exibir os itens ocultos (ShowAll Files), expandindo o proxy é possí-vel ver as classes criadas (classes exibi-das na Figura 7).Está faltando pouco agora, o mais compli-cado já passou. Vamos ao código do méto-do acessarSAP( ) criado, e chamado pelométodo LOAD do formulário. Acompanhea Listagem 1, onde os códigos deste méto-do foram inseridos.private void acessarSAP(){escrevendoSAP proxy = null;try{proxy = new escrevendoSAP(“String de Conexão”);proxy.Connection.Open();ZCPRHEADRTable tabelaSAP= new ZCPRHEADRTable();ZCPRHEADR linha = new ZCP-RHEADR();DataTable dt = new DataTable();montarColunas(ref dt);foreach (DataRow dr indt.Rows){linha.Codca = dr["codigo"].ToString();linha.Locen = dr["nome"].ToString();linha.Numrg = dr["telefone"].ToString();tabelaSAP.Add(linha);proxy.Bay2_N2rfi_Rfc_Upda_Zcprheadr(ref tabelaSAP);}proxy.CommitWork();Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0Figura 5: RFCs que poderão ser utilizadas.Figura 6: RFC arrastada para o proxy.Figura 7: As classes criadas automaticamentepelo proxy.
  14. 14. www.codificando.netCodificando.nete-magazinee-magazine15151515Ago / Set - 2009 |}catch (Exception ex){MessageBox.Show(ex.Message);}finally{proxy.Connection.Close();proxy = null;}}private void montarColunas(ref DataTable dt){dt.Columns.Add("codigo");dt.Columns.Add("nome");dt.Columns.Add("telefone");DataRow dr = dt.NewRow();dr["codigo"] = "1";dr["nome"] = "Diego";dr["telefone"] = "12345678";dt.Rows.Add(dr);}A aplicação utilizará o proxy criado, quefoi chamado de escrevendoSAP paracriar uma conexão com outro servidorSAP (não precisa ser necessariamente omesmo utilizado no Server Explorer,mas pode ser, sem problema). Os itensque precisam ser inseridos na String deConexão, podem ser encontrados abai-xo, na Listagem 3. Substitua estes itensem vermelho pelos dados fornecidospelo pessoal de BASIS, como foi feito noServer Explorer."ASHOST=AppServerHostSYSNR=SystemNumber CLI-ENT=Client USER=UserNamePASSWD=Password"Após a informação de conexão doproxy, será criada uma variável do tipo“Tabela da RFC” (ZCPRHEADRTable ta-belaSAP = new ZCPRHEADRTable();). Es-ta variável criada será passada por parâ-metro de referência, para o método com onome da RFC(proxy.Bay2_N2rfi_Rfc_Upda_Zcprheadr(ref tabelaSAP);) que está dentro do proxy.Como o parâmetro foi por referência, avariável criada passará a ter os dados li-dos no DataTable e que serão escritos noSAP através da RFC.Este foreach é criado para percorrer todosos itens do DataTable utilizado como e-xemplo, e preencher a tabela do SAP, vejaque em todas as iterações do foreach a va-riável linha do SAP possui seus campospopulados e a RFC de escrita no SAP échamada.A Figura 8 é do SAP, após receber o valorque inserimos dentro do DataTable nométodo montarColunas. Repare que oscampos com marcação em vermelho apon-tam para os campos que foram preenchi-dos dentro do foreach no código da Lista-gem 1.Após esta análise simples e direta, é possí-vel fazer uma escrita em tabelas do SAPEscrevendo as tabelas do SAP com o .NET SAP Connector 2.0Listagem 1: Código para utilizar o proxy e asclasses criadas.Listagem 2: Código para criar um DataTablee popular com dados ficticios.Listagem 3: Dados da String de ConexãoFigura 8: Resultado da informação inseridano SAP.
  15. 15. www.codificando.netCodificando.nete-magazinee-magazine16161616Ago / Set - 2009 |através do Visual Studio 2003. Um pró-ximo artigo explicará como trabalharcom um workaround para se trabalharcom Visual Studio 2005 e Visual Studio2008.Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0Diego NogareGraduado em Ciência da Computação, Pós-Graduado em Engenhariade 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 MicrosoftStudent Partners [MSP] de São Paulo e Microsoft Most Valuable Pro-fessional [MVP] em SQL Server, possui certificações MCP e MCTS emSQL Server 2005, é palestrante em eventos da Microsoft, Codifican-do .NET e INETA BR, mantém o site: www.diegonogare.net
  16. 16. www.codificando.netCodificando.nete-magazinee-magazine18181818Ago / Set - 2009 |C# 4.0Conheça as novas funcionabilidades do C# 4.Por: Fabiano BelmonteO Visual Studio 2010 e .NET Framework 4,0em breve estará em fase beta, e existem al-guns novos recursos excelentes que todosnós podemos esperar animados com estenovo lançamento. Juntamente com o VisualStudio 2010 e do. NET Framework 4,0 vere-mos a versão 4.0 da linguagem de programa-ção C #. Neste artigo eu gostaria de olhar umpouco a trás de onde começou a linguagemde programação C # e olhar para onde An-ders Hejlsberg do C # e sua equipe queremchegar.Em 1998, o projeto C # começou com o objeti-vo de criar uma simples, moderna e orienta-da a objeto, linguagem de programação quese tornou conhecido como o. NET. A Micro-soft lançou o. NET e a linguagem de progra-mação C #, em meados 2000 e desde então, C# tornou-se uma das mais populares lingua-gens de programação em uso hoje. Foi lança-do então o C# 1.0A versão 2.0 da linguagem evoluiu de mais,particularmente acho que e umas das maio-res evoluções em tão pouco tempo de umalinguagem e passou a dar suporte aos genéri-cos, métodos anônimos, iterators, tipos parci-ais e tipos anuláveis.Ao conceber a versão 3.0 da linguagem a ên-fase foi para permitir a LINQ (Language In-tegrated Query), que exigia a adição das se-guintes funcionalidades:• Implictly Typed Local Variables.• Extension Methods.• Lambda Expressions.• Object and Collection Initializers.• Annonymous types.• Implicitly Typed Arrays.• Query Expressions and ExpressionTrees.No passado linguagens de programa-ção foram projetadas com um deter-minado paradigma em mente, e comotal, temos linguagens que foram, co-mo exemplo, destinadas a serem ori-entadas a objeto ou funcionais. Hoje,porém, as linguagens que a ser conce-bidas com vários paradigmas emmente. Na versão 3.0 da linguagemde programação C # adquiriu váriascapacidades funcionais normalmenteassociados a programação para per-mitir Language Integrated Query(LINQ).Na versão 4.0 do C # continua a evo-luir, embora desta vez, a equipe do C# foram inspiradas por linguagensdinâmica como Perl, Python e Ruby.A realidade é que existem vantagense desvantagens para ambas as lingua-gens seja ela escrita estaticamente edinamicamente.Outro paradigma alem do design einovação é concorrente que é um pa-
  17. 17. www.codificando.netCodificando.nete-magazinee-magazine19191919Ago / Set - 2009 |radigma que tem certamente influencia-ram o desenvolvimento do Visual Studio2010 e do. NET Framework 4.0.Agora o que o C# traz de novo:• Dynamically Typed Objects.• Optional and Named Parameters.• Improved COM Interoperability.• Safe Co- and Contra-variance.•Chega de papo e vamos olhar para algumexemplos em C # 4.0 utilizando essas ino-vações língua ...Em C # Hoje você pode ter, o seguinte có-digo que é uma instância de uma clase es-crita estaticamente . NET então chama ométodo Add em que a classe para obter asoma de dois inteiros:Calculator calc = GetCalculator();int sum = calc.Add(10, 20);Nosso código fica ainda mais interessantese a classe Calculadora não é escrita estati-camente, mas está escrito em COM, Ruby,Python, ou mesmo JavaScript. Mesmo sesoubéssemos que a classe é uma calcula-dora. objeto NET, mas não sabemos qual otipo específico que é, então, teria de utili-zar reflection para descobrir atributos e otipo em tempo de execução e, em seguida,dinamicamente invocar o método Add.object calc = GetCalculator();Type type = calc.GetType();object result = type.InvokeMember("Add",BindingFlags.InvokeMethod,null,new object[] { 10, 20 });int sum = Convert.ToInt32(result);Se a calculadora classe foi escrito em Ja-vaScript, então nosso código ficaria algocomo a seguinte.ScriptObect calc = GetCalculator();object result = calc.InvokeMember("Add", 10, 20);int sum = Convert.ToInt32(result);Com C # 4,0 teríamos simplesmente escre-ver o seguinte código:dynamic calc = GetCalculator();int result = calc.Add(10, 20);No exemplo acima declaramos uma variá-vel calc, cujo tipo estático é dinâmico. Sim,você leu corretamente que nós escrevemosestaticamente nosso objeto a ser dinâmico.Teremos então dinâmico usando métodoinvocação para chamar o método Add e emseguida, dinâmico conversão para convertero resultado da dinâmica de uma invocaçãodigitado estaticamente inteiro.Você está ainda encorajado a usar tipagemestática sempre que possível, porque os be-nefícios que oferecem línguas escrita estati-camente nós. Usando C # 4,0, no entanto,deve ser menos doloroso nessas ocasiões emque você tem de interagir com objetos dina-micamente digitados.Outro grande benefício do uso de C # 4.0 éque a linguagem suporta agora facultativa eparâmetros nomeados e por isso vamos a-gora dar uma olhada em como esta caracte-rística irá mudar a maneira de conceber eescrever o seu código.Um desenho padrão você ver como muitasvezes que um determinado método está so-brecarregado, porque o método deve serchamado com um número variável de parâ-C#4.0
  18. 18. www.codificando.netCodificando.nete-magazinee-magazine20202020Ago / Set - 2009 |metros.Vamos assumir que temos o seguintemétodo OpenTextFile juntamente comtrês sobrecargas do método com dife-rentes assinaturas. Sobrecargas do mé-todo primário em seguida chame o mé-todo primário de passar os valores pa-drão no lugar desses parâmetros paraos quais um valor não foi especificadona chamada para o método sobrecarre-gado.public StreamReader OpenTextFile(string path, Encoding encoding,bool detectEncoding, int buffer-Size) { }public StreamReader OpenTextFile(string path, Encoding encoding,bool detectEncoding) { }public StreamReader OpenTextFile(string path, Encoding encoding){ }public StreamReader OpenTextFile(string path) { }No C # 4.0 O método primário pode serrefactored para usar parâmetros opcio-nais como mostra o seguinte exemplo:public StreamReader OpenText-File(string path,Encoding en-coding = null,bool detectEn-coding = false,int bufferSize= 1024) { }Perante esta declaração, é agora possí-vel chamar o método OpenTextFile o-mitindo um ou mais dos parâmetrosopcionais.OpenTextFile("foo.txt", Encod-ing.UTF8);Também é possível usar o C # 4,0 su-porte para parâmetros nomeados e, co-mo tal, o método pode ser chamado O-penTextFile omitindo um ou mais dos pa-râmetros opcionais, enquanto especifican-do também outro parâmetro pelo nome.OpenTextFile("foo.txt", Encoding.UTF8,bufferSize: 4098);O nome dos argumentos deve ser forneci-do somente estância última embora desdequando eles podem ser fornecidas emqualquer ordem.Se você alguma vez escrito qualquer códi-go que executa um certo grau de interope-rabilidade COM você provavelmente vistocomo o código seguinte.object filename = "test.docx";object missing = Sys-tem.Reflection.Missing.Value;doc.SaveAs(ref filename,ref missing, ref missing, ref miss-ing,ref missing, ref missing, refmissing,ref missing, ref missing, refmissing,ref missing, ref missing, refmissing,ref missing, ref missing, refmissing);Com os parâmetros opcionais e nomeadolinguagem C # 4,0 prevê melhorias signifi-cativas na interoperabilidade COM e, por-tanto, o código acima pode agora ser re-factored tal que o convite é apenas:doc.SaveAs("foo.txt");Ao realizar a interoperabilidade COM vo-cê perceber que você é capaz de omitir aref modifer embora o uso do modificadorref ainda é necessário quando não exer-çam COM interoperabilidade.Com as versões anteriores das tecnologiasera necessário também um navio PrimaryInterop Assembly (PIA), juntamente comC#4.0
  19. 19. www.codificando.netCodificando.nete-magazinee-magazine21212121Ago / Set - 2009 |o seu aplicativo gerenciado. Isso não énecessário quando se utiliza C # 4.0,porque o compilador irá injetar vez ointerop tipos diretamente para as As-sembly de seu aplicativo gerenciado esó vai injetar os tipos que você está u-sando e não de todos os tipos encontra-dos no interior da PIA.O último aperfeiçoamento lingüísticoque vamos explorar é co-variância econtra-variância e vamos começar porexplorar com a co-variância. NET ma-trizes.string[] names = new string[] {"Anders Hejlsberg","Mads Torgersen","Scott Wiltamuth","Peter Golde" };Write(names);Desde versão 1.0 em um array o. NETFramework foi co-variante significandoque uma matriz de strings, por exem-plo, pode ser passada para um métodoque espera um array de objetos. Comotal, a matriz acima pode ser transmitidapara o seguinte Escreve método que es-pera um array de objetos.private void Write(object[] ob-jects){}Infelizmente, em matrizes. NET não sãoco-seguro variante como podemos verna seguinte código. Partindo do pressu-posto de que os objetos variável é umamatriz de strings da seguinte terá êxito.objects[0] = "Hello World";Embora se uma tentativa é feita para a-tribuir um inteiro à matriz de stringsuma ArrayTypeMismatchException éjogado.objects[0] = 1024;Em ambos os C # 2.0 e C # 3,0 invarian-tes são genéricos e, portanto, um errocompilador iria resultar o seguinte có-digo:List<string> names = newList<string>();Write(names);Quando o Escreve método é definidocomo:public void Write(IEnumerable<object>objects) { }Generics com C # 4,0 apoiar agora segu-ra co-variância e contra-variância atra-vés do uso das palavras-chave dentro efora contextuais. Vamos dar uma olha-da em como isso muda a definição do<T> IEnumerable e IEnumerator <T>interfaces.public interface IEnumerable<outT>{IEnumerator<T> GetEnumerator();}public interface IEnumerator<outT>{T Current { get; }bool MoveNext();}Você perceberá que o tipo de parâmetroT da interface IEnumerable foi prefixa-do com o fora contextuais palavra-chave. Dado que a interface IEnumera-C#4.0
  20. 20. www.codificando.netCodificando.nete-magazinee-magazine22222222Ago / Set - 2009 |ble é somente leitura, não há capacida-de especificada na interface para inserirnovos elementos com a lista, ela é segu-ra para o tratamento de algo mais deri-vados como algo menos derivados.Com a palavra-chave fora contextuaisestamos afirmando que contratualmen-te IEnumerable <out T> segurança é co-variante. Dado que IEnumerable <outT> segurança é co-variante podemosagora escrever o seguinte código:IEnumerable<string> names = Get-TeamNames();IEnumerable<object> objects =names;Porque a interface IEnumerable <outT> utiliza a palavra-chave no contextodo compilador podem motivo que a a-tribuição acima é seguro.Utilizando a palavra-chave no contextopodemos alcançar seguro contra-variância, ou seja, tratar algo menos de-rivados como algo mais derivados.public interface IComparer<in T>{int Compare(T x, T y);}Dado que IComparer <in T> é seguracontra-variante podemos agora escre-ver o seguinte código:IComparer<object> objectComparer= GetComparer();IComparer<string> stringComparer= objectComparer;Embora o actual build CTP do VisualStudio 2010 e do. NET Framework 4,0tem suporte limitado para a variânciamelhorias em C # 4,0 a próxima versãobeta permite que você use o novo paradentro e para fora contextuais tais comopalavras-chave em tipos IComparer <inT>. O. NET Framework equipa está aatualizar os tipos, no âmbito de ser co-seguro e contra-variante.Eu mostrei aqui alguns recursos quevocê pode achar útil para explorar ascapacidades da linguagem de progra-mação C # 4,0 e gostaria de encorajá-loa também fazer download e instalar aversão beta.Bons Códigos...C#4.0Fabiano BelmonteSenior Architect da InfoMoney.com, especialista em aplica-ções e-Business com larga experiência em B2B(Submarino.Com e Saraiva.Com). Trabalha há 5 anos com atecnologia .Net, aplicando conhecimentos nas diversas á-reas: instituições financeiras (sistema SPB), e-Commerce,gerenciamento logístico entre outras. Trabalhando com Vi-sual Studio desde suas primeiras versões, responsável pelaimplementação de uma Metodologia de trabalho e melho-ras significativas no resultados e na qualidade do time deDesenvolvimento de muitas empresas por onde passou co-mo (Saraiva.Com) e ferramentas como TFS (Team Foundati-on Server).Foi palestrante em eventos como Codificando. NET 2008 eoutros eventos sobre Tecnologia .NET.
  21. 21. www.codificando.netCodificando.nete-magazinee-magazine23232323Ago / Set - 2009 |Tecnologias para o Desenvolvimen-to de Jogos DigitaisIntrodução sobre tecnologias de jogos.Por: Tiago Tiguen Sinzato / Juliano SchimiguelIntroduçãoMotor de jogo (também conhecido pelotermo em inglês, game engine, ousimplesmente engine) é um programa decomputador e/ou conjunto debibliotecas, para simplificar e abstrair odesenvolvimento de jogos ou outrasaplicações com gráficos em tempo real,para videogames e/ou computadoresrodando sistemas operacionais. Afuncionalidade tipicamente fornecidapor um motor de jogo inclui: um motorgráfico para renderizar gráficos 2D e/ou3D, um motor de física para simular afísica ou simplesmente para fazerdetecção de colisão, suporte a animação,sons, inteligência artificial, networking,gerência de memória, gerência dearquivos, gerência de linha de execução,um grafo de cena e, suporte a umalinguagem de script. O processo dedesenvolvimento de jogos éfreqüentemente agilizado quando usadoo mesmo motor de jogo para criardiferentes jogos.A maioria dos motores de jogo sãodistribuídos em forma de API(Application Programming Interface ouInterface de Programação deAplicativos), porém, alguns motores sãodistribuídos em conjunto de ferramentas,que agilizam e simplificam ainda mais odesenvolvimento do jogo, como porexemplo: IDEs, scripts pré-programados,e programas que “empacotam” e deixampronto o jogo para distribuição. Essesmotores “completos” são chamados deMiddleware. Pelo fato de seremdistribuídos com outras ferramentas, elessuprem a necessidade da compra deoutras ferramentas, reduzindo os custos.Como exemplo, pode-se citar: Blender,Gamebryo, Havok, RAD Game Tools,RenderWare e, Unreal Engine.Um motor de jogo pode ser dividido emduas principais categorias: motor gráficoe motor de física. Motores gráficos lidamcom os gráficos, sendo responsáveis deprocessar dados abstraídos de alto nível egerar dados de baixo nível intendíveispelo hardware. Como exemplo, pode-secitar: Crystal Space, Irrlicht, OGRE eRealmForge. Motores de física lidam coma física, sendo resposáveis por simularações reais, através de variáveis comogravidade, massa, fricção, força eflexibilidade. Como exemplo, pode-secitar: Bullet, COLLADA e ODE.História
  22. 22. www.codificando.netCodificando.nete-magazinee-magazine24242424Ago / Set - 2009 |O termo “game engine” originou-se nomeio da década de 1990, especialmente emconexão com jogos 3D, como tiro emprimeira pessoa a exemplo dos jogosDoom e Quake que ao invés de construir ojogo do zero, outros desenvolvedoreslicenciaram os núcleos destes jogos,usando-os como base para seus própriosmotores de jogo. Com o amadurecimento,os motores de jogo deixaram de serestringir ao desenvolvimento de jogos.Eles são usados em outras áreas, comotreinamento, uso médico e simulaçõesmilitares.Como a maioria dos jogos 3D estão, cadavez mais, se limitando ao poder da GPU ePPU(Graphics Processing Unit ou Unidadede Processamento Gráfico/Unidade deProcessamento de Física), as perdas dedesempenho das linguagens deprogramação de alto nível, como C#, Java ePython, deixam der ser válidas, enquantoos ganhos de produtividade oferecidos poressas linguagens trabalham em benefíciodos desenvolvedores de motores de jogo.Abstração de hardwareMotores de jogo fornecem abstração dehardware, permitindo a um programadordesenvolver jogos sem a necessidade deconhecer a arquitetura da plataforma-alvo,que pode ser um console ou um sistemaoperacional. Por esse motivo, muitosmotores são desenvolvidos a partir de APIexistentes, como OpenGL, DirectX,OpenAL e SDL, ou até mesmo a partir deoutro motor, que pode facilitar o seudesenvolvimento. A abstração dehardware também é essencial para odesenvolvimento de motores de jogomultiplataforma.Motores de tiro em primeirapessoaUm bom e conhecido subconjunto demotores de jogo são os motores de tiroem primeira pessoa 3D. Enquanto jogosde estratégia em tempo real esimuladores de vôo apostam naqualidade gráfica, jogos deste gêneroapostam na ação.O motor mais conhecido deste gênero éo Doom. A classificação de bom motordo gênero é exigente, pois o que éconsiderado avançado em um ano, noano seguinte pode ser consideradopadrão. É comum serem criados novosmotores com base em velhos motores,misturando novas funções, masmantendo algumas antigas. Quando ummotor mantém desenvolvimento focadonos gráficos, o jogo pode perder noquesito “ação”. Um bom exemplo disso éo jogo CellFactor: Revolution, que teveseu desenvolvimento parado; o jogoagora está disponível para downloadcompleto e gratuito.Principais motores de jogosMotores tradicionais: 3D GameStudio -C4 Engine - DX Studio - Esperient Crea-tor – Irrlicht - Ketsji(Blender) - NeoAxisEngine - Panda3D - RPG Toolkit -Torque Game Engine - Truevision3D -Unity - Unreal EngineMotores de física: Bullet - Havok – ODEMotores gráficos: Crystal Space - OGRE– OpenSceneGraphMotores proprietários: 3D GameStudio -Tecnologia para Desenvolvimento de Jogos Digitais
  23. 23. www.codificando.netCodificando.nete-magazinee-magazine25252525Ago / Set - 2009 |C4 Engine - DX Studio - Esperient Crea-tor - Havok - NeoAxis Engine - TorqueGame Engine - Truevision3D - Unity -Unreal EngineMotores código aberto: Bullet - CrystalSpace - Irrlicht - Ketsji (Blender) - ODE -OGRE - OpenSceneGraph - Panda3D -RPG ToolkitDesenvolvimento nas platafor-mas AtuaisCada plataforma possui seu kit dedesenvolvimento proprietário e pago,porém, além do computador existemalternativas para desenvolver jogospara essas plataformas.• Microsoft Xbox 360: Possui seu kitde desenvolvimento profissional,porém com alternativa grátis cha-mada Microsoft XNA Studio Ex-press, podendo ser desenvolvidosjogos para PC e para Xbox.• Sony Playstation 3: A plataformada Sony é uma das mais fechadas,que possui seu kit de desenvolvi-mento com custo alto. Porém aultima novidade é que sairá umconcorrente para a ferramenta daMicrosoft, XNA chamada PhyreEngine que possibilitará usuáriosa criarem seus jogos utilizandotoda a potência do Playstation 3.• Sony Playstation Portable: Tam-bém como o Playstation 3, o Porta-ble da Sony também é bem fecha-do e o desenvolvimento gratuitonessa plataforma é feito de manei-ra ilegal através de ferramentascriadas por usuários que utilizamfalhas do console para rodar essetipo de aplicativo.• Nintendo Wii: A Nintendo tam-bém possui o seu kit de desenvol-vimento profissional, e devido àsduas maiores concorrentes esta-rem brigando pelo desenvolvi-mento gratuito começaram rumo-res de que o Wii também terá asua ferramenta para usuários.• Nintendo DS: Assim como o PSP,o console portátil da Nintendonão possui qualquer tipo de ferra-menta para usuários desenvolve-rem jogos ou aplicativos sem utili-zar o kit oficial.Computador: A plataforma PC é a mais aber-ta, e possui uma quantidade muito grandede opções para desenvolvimento não só dejogos amadores como profissionais de bai-xo ou nenhum custo.Celular: O desenvolvimento de jogos e aplica-tivos para celular cresceu muito devido aevolução rápida desses dispositivos, hojetambém é possível criar jogos em 3D paracelulares. As duas plataformas mais utili-zadas são a Symbian e o Java (JME), po-rém a Microsoft anunciou que será dispo-nibilizada na versão 3.0 do XNA a opçãode desenvolvimento de jogos para plata-forma Windows Mobile.6. Ferramentas desenvolvimento para PCPara desenvolver jogos para PC, temos a op-ção de utilizar diretamente as APIs gráficas(DirectX e OpenGL) porém teremos que re-desenvolver muita coisa, gastando muito tem-po. A opção mais viável é utilizar enginesprontas e disponíveis para cada parte do Ga-me, essas engines variam de qualidade, lingua-gem, facilidade, preço e complexidade. Cabe aTecnologia para Desenvolvimento de Jogos Digitais
  24. 24. www.codificando.netCodificando.nete-magazinee-magazine26262626Ago / Set - 2009 |nós testá-las e encontrar a engine que mais seadéqüe as necessidades do Game. Segue umalista de engines para cada parte:Engines gráficasIrrlicht (http://irrlicht.sourceforge.net),muito boa engine gráfica em C++, foco em3D, intuitiva e fácil de usar;OGRE (http://www.ogre3d.org), enginegráfica muito experiente em C++, foco em3D, complexa e com bastante material;XNA (http://msdn.microsoft.com/xna/),engine gráfica em C# da Microsoft, foco em3D, que compila para ambiente PC eXBOX360, SDL (http://www.libsdl.org),engine gráfica e sonora simples de usar,foco em 2D, nativa em C++;Allegro (http://alleg.sourceforge.net), en-gine gráfica experiente e simples de usar,foco em 2D, nativa em C++;GLScene (http://www.glscene.org), enginegráfica em OpenGL muito completa, focoem 3D, desenvolvida para Delphi;Game Maker (http://www.yoyogames.com) O Game Makeré escrito em Delphi, motivo pelo qualnão tem versões para outros sistemasque não a Microsoft Windows.Engines físicasODE (http://www.ode.org), engine físicatotalmente open e free nativa em C++,simples e fácil de usar;Newton (http://www.newtondynamics.com), engine defísica muito completa e fácil de usar na-tiva em C++, uso profissional pago;Ageia (http://www.ageia.com), enginede física também muito completa e fácilde usar nativa em C++, recentementecomprada pela Nvidia, uso profissionalpago;Engines sonoras:Irrklang (http://www.ambiera.com/irrklang/), engine de som criada emC++ para trabalhar especialmente coma Irrlicht;Fmod (http://www.fmod.org), enginemuito experiente em C++;OpenAL (http://www.openal.org),engine muito experiente em C++;SDL (http://www.libsdl.org), enginegráfica e sonora simples de usar, nativaem C++.Após relacionar as engines que iremos utili-zar, basta escolher a IDE C++ preferida parainiciar o desenvolvimento:Microsoft C++ Express Edition (http://www.microsoft.com/express/vc/ ), grátispara o uso somente no Windows;Code::Blocks C++ (http://www.codeblocks.org), grátis e presente noWindows e no Linux;Dev C++ (http://www.bloodshed.net/devcpp.html), grátis e somente para Win-dows.7. Ferramentas para desenvolvimento rápidode GamesUma alternativa rápida para quem não possuiuma equipe ou tempo para desenvolvimentosão ferramentas que possuem um pré-formatode game ou funcionalidades. Essas ferramentasreúnem várias engines e disponibilizam um fra-mework para o desenvolvimento rápido de umGame. Segue alguns exemplos:Tecnologia para Desenvolvimento de Jogos Digitais
  25. 25. www.codificando.netCodificando.nete-magazinee-magazine27272727Ago / Set - 2009 |Game Maker (http://yoyogames.com), ferra-menta de desenvolvimento de jogos plata-forma Windows;RPG Maker (http://tkool.jp/products/rpgxp/eng/), ferramenta para desenvolvimentoRPGs;Mugen (http://www.mgbr.net), ferramentapara desenvolvimento de jogos de luta;3D Game Studio (http://www.3dgamestudio.com), ferramenta paradesenvolvimento de jogos 2D e 3D;True Vision 3D (http://www.truevision3d.com), ferramenta paradesenvolvimento de jogos 2D e 3D.8. Ferramentas para desenvolvimento paraCelularPara desenvolver em JME, basta baixar o Eclip-se IDE junto com o plugin EclipseME e o JavaWireless Toolkit da Sun Com esses aplicativosinstalados, você irá possuir uma estação comple-ta de desenvolvimento e emulação de aplicativose games em JME. A grande maioria dos disposi-tivos móveis de hoje possuem suporte a JME.http://www.eclipse.org/http://www.eclipseme.orghttp://java.sun.com/products/sjwtoolkit/ConclusãoEstamos na sétima geração de videogames, naúltima geração temos: Sony Playstation 3, Mi-crosoft Xbox 360 e Nintendo Wii em consoles,e: Playstation Portable (PSP), Nintendo DS eCelular para portáteis e com isso a indústriainternacional de jogos está crescendo muito acada dia, e desde 2003 ela já rende mais que aindústria de filmes. A previsão para os próxi-mos cinco anos é que a área cresça 20% ao ano.Só no ano de 2007, foram movimentados 50bilhões de dólares. O surgimento de novas tec-nologias tem atuado como um grande catalisa-dor para a convergência digital ao tornar o de-senvolvimento de aplicações para sistemas em-barcados tão fáceis e acessíveis ao público quan-to no caso dos PCs. Por outro lado, a aberturadesse mercado, aliado ao sucesso vivenciadopelo entretenimento digital na indústria dePCs, é um forte sinal do sucesso esperado daárea de jogos para PCs, consoles e Celulares.Referênciashttp://www.gamedev.com.br/http://pt.wikipedia.org/wiki/BrasilTecnologia para Desenvolvimento de Jogos DigitaisTiago Tiguein SinzatoAluno do Curso de Tecnologia em Análise e Desenvolvi-mento de Sistemas Universidade Cruzeiro do Sul, CampusAnália Franco São Paulo, SP.Prof. Dr. Juliano SchimiguelProfessor do Curso de Tecnologia em Análise e Desenvolvi-mento de Sistemas Universidade Cruzeiro do Sul, CampusAnália Franco São Paulo.
  26. 26. www.codificando.netCodificando.nete-magazinee-magazine28282828Ago / Set - 2009 |Introdução ao LINQConheça melhor essa nova tecnologia de manipulação de dados.Por: Milton C.FilhoSalve galera,Iniciaremos hoje uma série de artigos so-bre LINQ abordando seus princípios,mecanismos, utilização e dicas de boaspráticas.No artigo de hoje falarei o que é o LINQe suas principais utilizações.Vamos começar ?!O que é LINQ?LINQ (Language Integrated Query) sãorecursos do framework 3.5 que propor-ciona para o desenvolvedor uma formaprática de realizar consultas, desde con-sultas em base de dados até consultasem arquivos XML, coleções de objetosetc. Sua sintaxe é bem parecida com a doSQL e traz a vantagem de poder traba-lhar dentro do Visual Studio com a lin-guagem de sua escolha, tornando assimo entendimento e o aprendizado bemmais fácil.O LINQ é apresentado de cinco princi-pais formas:LINQ To SQLUsado para manipular bases de dadosSQL Server, de forma bem prática e rápi-da converte as querys do LINQ emquerys SQL gerando assim todas as con-sultas e querys de manipulação (Insert,Update, Delete) . Também possibilita ma-pear toda a sua base de dados e transfor-mar as tabelas em classes. Desta formavocê poderá trabalhar na sua base de da-dos da mesma forma que trabalha comclasses do .Net Framework ou classespróprias.-LINQ To XMLUsado para manipular aquivos XML, po-dendo assim consultar, criar e inserir da-dos em arquivos XML de uma maneiraprática.-LINQ To ObjectsUsado para manipular coleções de obje-tos do .Net Framework ou coleções pró-prias, ou seja, você pode manipular qual-quer coleção de objetos desde que esteobjeto herde da Interface INumera-ble<T>.-LINQ To DataSetUsado para manipular DataSets podendorealizar consultas nas tabelas do DataSet.-LINQ To Entities.Usado para manipular dados de outrasbases de dados podendo mapear toda asua base de dados em classes do .Net
  27. 27. www.codificando.netCodificando.nete-magazinee-magazine29292929Ago / Set - 2009 |Framework e trabalhar com essas clas-ses fazendo consultas, inserções, exclu-sões, atualizações de uma forma bemprática.Nos próximos artigos aprenderemosmais alguns conceitos e veremos a utili-zação do LINQ na prática. Espero quetenham gostado e até o próximo.Introdução ao LINQMilton C. FilhoCursando o 6º semestre do curso de Sistemas de Informaçãona faculdade Barretos, formado em técnico em informáticapelo Centro Paula Souza de Barretos, trabalha com desenvolvi-mento de sistemas web com o foco tecnologias Microsoft.
  28. 28. www.codificando.netCodificando.nete-magazinee-magazine30303030Ago / Set - 2009 |Explorando Microsoft ReportingServices 2005.Conheça esta poderosa plataforma de relatórios.Por: Caio AzevedoOlá pessoal, iniciamos aqui uma série deartigos onde faremos uma abordagemprática e teórica, dessa poderosa e pou-co explorada que é o Reporting Services.Nesse primeiro momento veremos aversão do SQL 2005, por ainda ser a fer-ramenta padrão de banco de dados namaioria dos nossos clientes, mas em bre-ve faremos uma explanação da versão2008, bom divertimento.Parte 1 – Introdução ao repor-ting servicesO Microsoft SQL Reporting Services,RS, é uma plataforma de relatórios com-pleta. Parte integrante do framework deBusiness Intelligence baseada em servi-ços, ferramentas, APIs para desenvolvi-mento, publicação e gerenciamento dosrelatórios, o RS foi inicialmente apresen-tando como um add-on do SQL Server2000 no inicio de 2000. Atualmente, suaversão mais recente, é a do SQL 2008,mas aqui cobriremos aquela, parte inte-grante do SQL Server 2005, por ser a so-lução de banco de dados mais comu-mente utilizada.Os relatórios do RS são baseados na lin-guagem RDL (Report Definition Lan-guage), que nada mais é que um dialetoXML criado pela Microsoft. E, uma vezque o ambiente do RS esta intimamenteintegrada à plataforma .net framework,suas ferramentas de desenvolvimentosão os Visual Studio 2005 e 2008, aindaque o próprio SQL Server 2005 tenha umshell do Visual Studio 2005 chamado Bu-siness Intelligence Development Studio(BIDS).Com o RS é possível criar soluções derelatórios como parte de uma aplicação,os chamados Local Mode, que são simila-res ao modelo utilizado no Cristal Re-ports ou Microsoft Access, além desse,temos o modelo de relatórios remoto queoperam como uma aplicação web hospe-dados em um Web Application Server(IIS) e acessíveis via protocolo HTTP. Fi-nalmente temos através da ferramentaReport Builder, uma forma de disponibi-lizar para os usuários criar seus própriosrelatórios, atendendo assim ambientescorporativos, desenvolvedores, arquite-tos e usuários.Para qualquer solução de relatórios quefaz uso do ambiente do RS faz-se usodos elementos apresentados na figuraabaixo, sendo que a interação entre esseselementos varia conforme o modelo dorelatório, mas eles sempre estarão pre-sentes, do processo de criação ao consu-
  29. 29. www.codificando.netCodificando.nete-magazinee-magazine31313131Ago / Set - 2009 |mo pelo usuário final.Na figura 1.1, temos o diagrama da re-lação entre os principais elementos deuma solução baseada em reporting ser-vices, relação que detalharemos a se-guir:RelatórioCorrespondem ao front-end dos dadosdevidamente formatados e que corres-pondem a uma representação gráfica,funcional e operacional de um arquivoRDL, com características especificasconforme seu tipo. Os relatórios podemser invocados por uma aplicação clien-te, seja ele uma aplicação Windows,Web, por qualquer tecnologia que con-suma WebService ou mesmo pelo am-biente do próprio report ing services.Aplicação clienteSão as aplicações capazes de implemen-tar, gerenciar e visualizar os relatórios,sendo os principais, o Report Manager,o BIDS, Visual Studio,aplicações .netWindows e web por meio do controleReportViewer, além do aplicativo Offi-ce-Model Report Builder.Estrutura de dados volátioSão as estruturas em memória que cria-mos para armazenar temporariamente oresultado das consultas que serão visuali-zadas nos relatórios, essas consultas sãoimplementadas na forma de stored proce-dures, views, instruções T-SQL além decubos OLAP.Db access engineSão os diversos mecanismos possíveispara acesso aos dados, corresponde àsfontes de dados: de acesso ao SQL Ser-ver, Oracle, OLE DB, ODBC bem comoAnalysis Server Databases – OLAP.Repositórios de dadosSão as fontes de dados das quais se extraias informações para os relatórios criadose acessados via os DB Access Engines.O RS suporta alguns dos mais úteis tiposde relatórios auxiliando os usuários namelhor distribuição das informações, sãoeles:Tabular: utilizado para distribuição dasinformações como uma tabela, com umnumero de colunas previamente estabele-cidos, similar aos dados do excel;Livre: as informações são posicionadasarbitrariamente como for melhor conve-niente para o usuário, por exemplo, rela-tórios do tipo, master-detail;Chart: aos dados são apresentados grafi-camente;Correlação: as informações do relatóriosão correlacionadas nos dois eixos carte-sianos formando uma matriz, por exem-Explorando Microsoft Reporting Services 2005Figura 1.1 – Correlação entre elementos doReporting Services
  30. 30. www.codificando.netCodificando.nete-magazinee-magazine32323232Ago / Set - 2009 |plo, um relatório das condições de tem-peratura de um conjunto de cidades;DrillDown: relatórios que permitemseções expansíveis, tais como relatóriosde correlação, produtos x vendas, quepermitem exibir subcategorias dos pro-dutos;Interativos: são relatórios que permi-tem uso das funcionalidades especiais,tais como documentMap, links, dentreoutras, por exemplo relatórios similarao modo de exibição de documentoPDFs com o Adobe Reader com marca-dores.Não menos úteis são as funcionalidadesnativas dos relatórios, tais como para-metrização das pesquisas para camposdatas, seleções múltiplas e texto livre;recurso de navegação entre páginas;zoom; pesquisa; exportação para diver-sos formatos (XML, CVS, TIFF, PDF,Excel); ordenação por colunas; formata-ção condicional, dentre outros.É isso ai pessoal, até aqui só co-meçamos nossa exploração aofantástico mundo do reportingservice, na próxima edição vere-mos o primeiro dos modelos derelatórios, os ditos “Local Mode”abraço e até lá e lembrem-se “maythe force be with you”.Explorando Microsoft Reporting Services 2005Figura 1.2 – relatório tabularFigura 1.3 – relatório de correlaçãoFigura 1.4 – relatório drilldownFigura 1.5 – relatório interativoFigura 1.6 – funcionalidades
  31. 31. www.codificando.netCodificando.nete-magazinee-magazine33333333Ago / Set - 2009 |Explorando Microsoft Reporting Services 2005Caio AzevedoGraduado em Ciência da Computação, Engenharia Civil elouco por ciências exatas em especial física e matemática.Coordenador da Célula Microsoft da Magna Sistema e Arqui-teto Microsoft, palestrante, tecno-colunista, instrutor datreinando .net e membro da comunidade codificando.net.MCP, MCAD, MCSD, MCTS e MCPD. E fanático pela série starwars – “may the force be with you.”Blog: http://caioadotnet.blogspot.com/
  32. 32. www.codificando.netCodificando.nete-magazinee-magazine34343434Ago / Set - 2009 |Servidores no Contexto de RedesPlataforma MicrosoftAprenda alguns conceitos de Rede.Por: Danilo Marion Munhóz / Juliano Schimiguel1. IntroduçãoRedes de computadores estão em todolugar, como por exemplo: em grandes,médias ou pequenas empresas, escolas,instituições e universidades entre outroslugares. Atualmente é muito importanteentender o que são redes, sua utilizaçãoe seu funcionamento podendo assim setornar um especialista em redes. O artigoaborda um tema muito importante den-tro do campo da informática, pois umarede de computadores hoje é o métodomais fácil e muito utilizado para aceleraro processo de transmissão e compartilha-mento da informação. O objetivo do arti-go é demonstrar que a utilização delapode ser positiva, que uma rede baseadaem servidor é mais vantajosa, e o quantoé a praticidade de uma Rede Microsoft, aprincípio utilizando o Software MS Win-dows NT Server, e também os atuais SQLServer 2008, Windows Server 2008 Stan-dard.Computadores conectados em rede po-dem trocar informações de maneira fácile rápida, pois a troca de informações en-tre eles se torna mais eficiente. As infor-mações são direcionadas de um compu-tador para outro através da rede por in-termédio de um usuário. Este artigo tratade mostrar como se faz e como funcionauma Rede Microsoft, também mostrandoque as redes de computadores são umsistema sofisticado e complexo de ferra-mentas muito importantes.2. Conceito de Redes LANs2.1 Rede Ponto-a-PontoAs redes LANs (Local Área Network) co-mo são chamadas as redes locais, caracte-rizam-se como sendo redes que permi-tem a interconexão de equipamentos decomunicação de dados numa pequenaregião. Costuma-se considerar pequenaregião distâncias entre 100m e 25km. Osdois maiores tipos de LANs são: RedePonto-a-Ponto e Rede Baseada em Servidor.Uma rede ponto-a-ponto normalmente édefinida pela falta de um servidor dedi-cado que determine um controle centralsobre a rede. Não existem servidores emuma rede ponto-a-ponto; usuários sim-plesmente compartilham recursos, comoimpressoras, espaço em disco.Essas redes são organizadas como Gruposde Trabalho (Workgroups). Um Workgrouppossui um nível de controle de segurançamuito pequeno. Não existe um controle
  33. 33. www.codificando.netCodificando.nete-magazinee-magazine35353535Ago / Set - 2009 |central para validar quais usuários podemou não utilizar a rede e seus recursos.Quando estamos logados neste tipo de re-de, temos acesso a todos os recursos com-partilhados da rede que não exigem umasenha específica para controlar qual usuá-rio poderá ou não utilizar determinado re-curso.Para controlar o acesso individual ao re-curso compartilhado, devemos especificaruma senha para cada recurso da rede, poiscomo já vimos anteriormente, não existeum controle central sobre a rede. Isto podeser bastante inconveniente.Redes ponto-a-ponto não são otimizadaspara compartilhar recursos. Geralmente,quando alguns usuários estão acessandoum recurso em determinado equipamentoda rede, o usuário daquele equipamentonota uma significante degradação da per-formance no equipamento. Este tipo de re-de também tem muita limitação no núme-ro de licenças para que poucos usuáriosconsigam acessar simultaneamente o mes-mo recurso. Elas têm algumas vantagens,especialmente para pequenas empresasque não querem fazer um grande investi-mento em hardware e software servidor.Uma rede baseada em servidor normal-mente é definida pela presença de servido-res na rede que provêm segurança e admi-nistração centralizada para a rede. Os ser-vidores têm diversos papéis na rede. Redesbaseadas em servidores possuem clientesque utilizam os serviços providos por es-tes, como armazenamento de arquivos eimpressão. Clientes são computadores me-nos potentes que computadores servido-res.2.2 Rede Baseada em ServidorUma rede baseada em servidor que utili-za o software MS Windows NT Server,pode ser organizada em domínios, quesão vários computadores clientes conec-tados a um servidor que controla a segu-rança na rede. A segurança do domínio epermissão de logon são controlados porservidores especiais chamados de Con-troladores de Domínio (Domain Controlers).Existe um Controlador de Domínio Mestre(Master Domain Controler) Chamado dePDC (Primary Domain Controler) ou(Controlador de Domínio Primário) que po-de ser assistido pelos Controladores de Do-mínio Secundários, chamados de BDC(Backup Domain Controlers) ou(Controladores de Domínio Backup). Os u-suários não podem acessar os recursosda rede enquanto não forem validadospelo PDC.Redes baseadas em servidores possuemgrandes vantagens:• Servidor dedicado otimizado;• Armazenamento de arquivos centrali-zado, permitindo Backup de dados Im-portantes;• Fácil gerenciamento para um grandenúmero de usuários;• Exigência de senha para acesso aos re-cursos compartilhados da rede.Redes baseadas em servidores não pos-suem muitas desvantagens, entretantotambém é importante conhecê-las:• Alto investimento para o hardware de-dicado (Servidor);• Alto investimento para o sistema ope-racional servidor e licenças para os cli-Servidores no Contexto de Redes Plataforma Microsoft
  34. 34. www.codificando.netCodificando.nete-magazinee-magazine36363636Ago / Set - 2009 |entes;• Requer um Administrador de Redes dedi-cado.As estações de trabalho são os computado-res clientes da rede e normalmente nãocompartilham recursos para a rede. Os cli-entes da rede rodam sistemas operacionaiscomo MS-DOS, MS-Windows 95, MS-Windows 98, MS Windows NT Workstation eàs vezes podem ter o sistema operacionalMS-Windows NT Server. Em uma rede lo-cal Microsoft, podemos ter clientes Macin-tosh e Novell, para utilizar ferramentas de:• Desenvolvimento de Sistemas;• Consulta a Banco de Dados;• Apresentação e Análise de Informa-ções.Os servidores da rede são máquinas maispotentes que os clientes que compartilhamrecursos para a rede como: impressoras,discos entre outros. Em uma rede Micro-soft o servidor terá o sistema operacionalMS-Windows NT Server como PDC. Tam-bém podemos ter servidores Novell e Unixem uma rede Microsoft, sendo que paraconversar com Novell a Microsoft provê umprotocolo que possibilita a conexão comesses servidores. No servidor Unix é neces-sário ter o software SAMBA instalado econfigurado corretamente para que máqui-nas com sistemas operacionais da Micro-soft possam acessá-lo. Abaixo temos as ca-racterísticas necessárias para que o SAM-BA funcione corretamente:• Geralmente possui um sofisticado sistemaoperacional;• Grande memória interna;• Armazena grande quantidade de infor-mações;• Sistema de interrupção;• Sistema de I/O assíncrono;• Dispositivos para facilitar e controlarcomunicação;• Software para controle de comunica-ção;• Software para controle de banco de da-dos;• Multiprogramação e esquema de prio-ridade;• Compartilha recursos;• Define os tipos de interconexão, siste-ma operacional, protocolos e até aplica-tivos a serem usados na rede;• SGBD (Sistema Gerenciador de Bancode Dados;• Servidor de Arquivos e Impressão;• Servidor de Comunicação;• E-mail.2.3 ProtocolosOs Protocolos são regras e procedimen-tos para comunicação. A utilização dasregras de comunicação aplica-se da mes-ma maneira no ambiente de computado-res. Quando diversos computadores es-tão interligados em rede, as regras e pro-cedimentos técnicos que administramsua comunicação e interação são chama-dos de protocolos.Toda a operação técnica de transmissãode dados através da rede precisa ser di-vidida em etapas sistemáticas distintas.Em cada uma delas, ocorrem certas a-ções distintas que não podem ocorrer emnenhuma outra. Cada uma tem suas pró-prias regras e procedimentos, ou proto-colo. Elas devem ser utilizadas em umaordem consistente, que seja igual em to-dos os computadores da rede. No com-putador remetente, essas etapas devemServidores no Contexto de Redes Plataforma Microsoft
  35. 35. www.codificando.netCodificando.nete-magazinee-magazine37373737Ago / Set - 2009 |ser realizadas de cima para baixo. Na má-quina receptora, devem ser realizadas debaixo para cima.NetBEUI é o padrão e significa NetBIOSExtended User Interface. A sigla NetBIOS sig-nifica Network Basic Input/Output System. Oprotocolo NetBEUI implementa o protoco-lo de transporte NetBIOS Frame (NBF),que foi desenvolvido pela IBM para traba-lhar em grupos de trabalho utilizando OS/-2 e LAN Manager.O protocolo NetBEUI foi também desen-volvido para trabalhar em grupos de tra-balho com até 200 computadores. Nesteprotocolo não pode ser roteado entre re-des, isto é, está limitado a pequenas redeslocais. A versão 3.0 do NetBEUI é uma atu-alização da Microsoft do mesmo protocoloda IBM. Ele fornece ferramentas para queum programa estabeleça uma sessão comoutro programa através da rede. É muitopopular porque muitos programas aplica-tivos o suportam.Além disso, o protocolo NetBEUI é umprotocolo simples, rápido e eficiente que éfornecido com todos os produtos de rededa Microsoft. Está disponível desde mea-dos dos anos 80 e foi fornecido com o pri-meiro produto de rede Microsoft, o MS-NET. As vantagens desse protocolo inclu-em seu pequeno tamanho de pilhas(importante para computadores baseadosem MS-DOS), sua velocidade de transfe-rência de dados na mídia da rede, fácil im-plementação e sua compatibilidade comtodas as redes baseadas em Microsoft.Em ambos os computadores envolvidos noprocesso de transmissão de dados, é neces-sário seguir cada etapa da mesma maneira,assim os dados recebidos terão a mesmaaparência de quando enviados. Portanto,é necessário que os dois computadoresenvolvidos utilizem o mesmo protocolo,pois protocolos diferentes realizarão eta-pas diferentes no processo de envio erecebimento dos dados.2.4 MS Windows NTO Windows NT Workstation 4.0, tem amesma interface conhecida e funcionalapresentada pelo Microsoft Windows 95.Mas por trás dele está o robusto sistemaoperacional de 32 bits e multitarefa que aMicrosoft criou para usuários avança-dos. Essa versão fundamentou-se nosmesmos princípios de projeto das ver-sões anteriores e conserva seus avançosmais importantes. O Windows NTWorkstation continua sendo compatívelcom muitos outros sistemas operacio-nais, sistemas de arquivos e redes. Eleroda em computadores com conjuntosde instruções complexas (Complex Ins-truction Set Code – CISC) e computado-res com conjuntos de instruções reduzi-das (Reduced Instruction Set Code –RISC). O Windows NT também suportaa computação de alto desempenho, for-necendo suporte de kernel ao multipro-cessamento simétrico.Windows NT é um sistema operacional32-bits multitarefa, que faz parte da fa-mília de sistemas operacionais Micro-soft. E Está disponível em duas versões:• Windows NT Workstation, Desenvol-vido para trabalhar como membrode uma rede organizada em Grupode Trabalho (Workgroup), comoum cliente de um domínio Win-Servidores no Contexto de Redes Plataforma Microsoft
  36. 36. www.codificando.netCodificando.nete-magazinee-magazine38383838Ago / Set - 2009 |dows NT Server, como cliente de u-ma rede Novell NetWare, ou comouma estação de trabalho stand-alone.É recomendado para usuários queprecisam de um sistema operacionalcom um alto nível de segurança;• Windows NT Server, Muito idêntico aoWindows NT Workstation, mas comalguns recursos que habilitam o Win-dows NT Server a trabalhar como umsistema operacional de rede (NOS –Network Operating System).Windows NT é um sistema operacionalseguro para microcomputadores de 32-bitscom uma interface gráfica. Não é uma revi-são de outra versão do Windows comoWindows 3.x ou Windows for Workgroup3.x, mas um novo sistema operacional. Ainterface gráfica do Windows NT 4.0 utili-za a mesma interface gráfica do Windows95.Diferentemente de muitos sistemas opera-cionais, Windows NT pode rodar em umavariedade de plataformas. Windows NTfoi desenvolvido para rodar em platafor-mas Intel 80386 DX, 80486 e computadoresbaseados em processadores Pentium, bemcomo em computadores RISC (ReducedInstruction Set Computers). Windows NTsuporta os seguintes processadores:• IBM PowerPC;• MIPS R4x00;• DEC Alpha AXP;• Intel 386 e superiores.O Windows NT pode rodar diferentes ti-pos de aplicações simultaneamente. En-quanto o usuário está trabalhando em umaaplicação, outra aplicação pode estar ro-dando em segundo plano. Um sistema o-peracional multitarefa oferece os meiospara um computador processar mais deuma tarefa de cada vez. Um verdadeirosistema operacional multitarefa pode e-xecutar tantas tarefas quantos forem osprocessadores. Quando houver mais ta-refas do que processadores, o computa-dor precisará alocar os intervalos detempo de modo que os processadoresdisponíveis dediquem uma determinadaparcela de tempo para cada tarefa, alter-nando entre as tarefas até que tudo este-ja terminado. Este sistema faz com ocomputador pareça estar trabalhandoem diversas tarefas ao mesmo tempo.O Windows NT 4.0 suporta três tipos desistemas de arquivos:• File Allocation Table (FAT): Sistemade Arquivos utilizado com o MS-DOS;• New Technology File System (NTFS):Sistema de Arquivos implementa-do pelo Windows NT;• Virtual File Allocation Table (VFAT):Sistema de Arquivos implementa-do pelo Windows 95.O Windows NT pode rodar os seguintestipos de aplicações:• DOS 16-bits;• Windows 3.x 16-bits (Win16);• POSIX (Implementação UNIX);• OS/2 1.x;• New 32-bits (Win32).O Windows NT suporta os seguintesprotocolos de rede:• TCP/IP;• DLC;Servidores no Contexto de Redes Plataforma Microsoft
  37. 37. www.codificando.netCodificando.nete-magazinee-magazine39393939Ago / Set - 2009 |• NetBEUI;• AppleTalk;• NWLink (Microsoft’s 32-bits WindowsNT IPX/SPX).Entre algumas características do WindowsNT Server, podemos citar:• Windows NT Server permite estabelecersessões ilimitadas com clientes, enquantoo Windows NT Workstation permite so-mente 10;• Windows NT Server suporta até quatroprocessadores, enquanto o Windows NTWorkstation pode suportar somente dois;• Windows NT Server pode suportar 256sessões simultâneas através do RAS, en-quanto que o Windows NT Workstationpermite apenas uma;• Windows NT Server pode importar e ex-portar replicações de diretórios, enquantoo Windows NT Workstation pode somen-te importar.O Windows NT Server oferece serviços pa-ra Macintosh, validação de logon e tolerân-cia a falhas de disco, enquanto o WindowsNT Workstation não oferece nada disso. Ogerenciamento de rede inclui monitoraçãodo comportamento da rede como parte deuma abordagem específica à resolução deproblemas. Se o planejamento, a monitora-ção e o gerenciamento forem efetuados demodo adequado, a necessidade de resolu-ção será mínima. Ao planejar uma rede, oadministrador deve implementar planos eprocedimentos para evitar problemas an-tes que apareçam. Estes planos incluembackups, padronização, atualizações regu-lares e documentação.Existem utilitários disponíveis para ajudaro administrador da rede nessas tarefas. OWindows NT tem programas internosde monitoração e gerenciamento de re-de, que oferecem estatísticas de utiliza-ção e desempenho, além de registros deevento.Como parte do gerenciamento da rede, éimportante estabelecer uma linha de ba-se do comportamento típico da rede. Issoé feito ao longo do tempo e deve ser bemdocumentado. Se realmente surgiremproblemas, a linha de base é o primeirorecurso a que o administrador pode re-correr para comparação com padrões deutilização diária, gargalos em potencial,contagens de erro e estatísticas gerais dedesempenho. Os Softwares de Redes Mi-crosoft de Servidores disponíveis nomercado atualmente são os: SQL Server2008 e o Windows Server 2008 Standard.?2.5 SQL Server 2008O SQL Server 2008 baseia-se na visão daPlataforma de Dados da Microsoft, o queajuda as organizações no gerenciamentodos dados, em qualquer local e a qual-quer momento. Ele permite que você ar-mazene seus dados a partir de documen-tos estruturados, semi-estruturados oumesmo não estruturados, como imagense músicas, diretamente dentro do bancode dados. O SQL Server 2008 fornece umvasto conjunto de serviços integradosque permitem que você faça muito maiscom seus dados como consulta, pesqui-sa, sincronização, relatórios e análises.Os dados podem ser armazenados emgrandes servidores de um data center eacessados a partir deles para desktops edispositivos móveis, fornecendo controlesobre os dados, não importando o localem que estão armazenados.Servidores no Contexto de Redes Plataforma Microsoft
  38. 38. www.codificando.netCodificando.nete-magazinee-magazine40404040Ago / Set - 2009 |O SQL Server 2008 permite que você utilizeseus dados em aplicativos personalizadosdesenvolvidos no Microsoft .NET e VisualStudio, na arquitetura SOA (service-oriented architecture - arquitetura orienta-da a serviços) e em processos de negóciospor meio do Microsoft BizTalk Server, en-quanto os profissionais da informação po-dem acessar os dados diretamente nas fer-ramentas que utilizam no dia-a-dia, como oMicrosoft Office System 2007. O SQL Ser-ver 2008 fornece uma plataforma de dadosconfiável, produtiva e inteligente para to-das as suas necessidades relacionadas aosdados.2.6 Windows Server 2008 Stan-dardO Windows Server 2008 é o mais sólido sis-tema operacional da família Windows Ser-ver já lançado. Com os recursos internosaprimorados para Web e virtualização, oWindows Server 2008 foi projetado paraaumentar a confiabilidade e flexibilidadeda infra-estrutura de seus servidores, aju-dar a reduzir custos e ganhar tempo. Pode-rosas ferramentas proporcionam maiorcontrole sobre os servidores, bem como ta-refas de gerenciamento e configuração sim-plificadas. Somado a isso, os recursos desegurança aprimorados agem na proteçãodo sistema operacional para assegurar arede e os dados, proporcionando uma basesólida e altamente confiável.2.7 Softwares Servidores Micro-softOs Softwares Servidores Microsoft estãoclassificados em:• Precursores: MS-DOS; OS/2.• Família DOS: 1.0; 2.0; 3.0; 95; 98;ME.• Família NT Servidores: 3.1; 3.5;3.51; 4.0; 200; Server 2003; Server2008.• Outros: Fundamentals for LegacyPCs; Home Server.• Futuros: 7 (Seven); Azure.Cancelados: Neptune, Nashville, Cairo.Existem muitos recursos de suporte derede que o administrador pode acessarpara ajudar a resolução de problemas,como por exemplo, Microsoft TechNet eBBS.ConclusãoRedes foram criadas pelo propósito depoder compartilhar informações, e paraque essa informação chegue mais rápidopara o seu destino final, e também parainterligar cada computador e de cadaponto diferente de uma sala até de umcontinente. No caso de servidores é im-portante ressalvar que dentro de umaempresa, por exemplo, a informação narede é processada com uma maior efici-ência e rapidez. Uma rede que funcionepor si só ainda não foi inventada. É pre-ciso incluir novos usuários. É preciso ex-cluir usuários existentes. É preciso insta-lar e compartilhar novos recursos, alémde dar as devidas permissões de acesso.Permissões de acesso são normas associ-adas ao recurso, geralmente um diretó-rio de arquivos ou uma impressora. Aspermissões regulamentam o acesso dosusuários ao recurso. Tudo isso significaque, depois que uma rede estiver instala-da, será indispensável, a necessidade degerenciá-la.Servidores no Contexto de Redes Plataforma Microsoft
  39. 39. www.codificando.netCodificando.nete-magazinee-magazine41414141Ago / Set - 2009 |ReferênciasGiungi, D.; Liesenberg, H.K.E.; Pires, F.; Al-meida, R.Q. de; Ussami, M.C. (1998). SoluçõesMicrosoft para Redes Locais, UNICAMP – U-niversidade Estadual de Campinas [on-line].Disponível em: http://www.apostilando.com/download.php?cod=394&categoria=Redes. Úl-timo acesso: 14.06.2009.Microsoft, Servidores, Windows Server. Resu-mos das Edições do Microsoft Windows Server2008 [on-line]. Disponível em: http://www.microsoft.com/brasil/servidores/sql/overview.mspx. Último acesso: 14.06.2009Microsoft, Servidores, SQL Server. MicrosoftSQL Server, Visão Geral [on-line]. Disponívelem: http://www.microsoft.com/brasil/servidores/windowsserver2008/editions/overview.mspx. Último acesso: 14.06.2009Microsoft, TechNet. TechCenter do WindowsServer. Recursos do Windows Server 2008 [on-line]. Disponível em: http://technet.microsoft.com/pt-br/windowsserver/default.aspx. Último acesso: 14.06.2009Wikipédia, Windows Server 2008. Cronologiados Softwares Servidores Microsoft [on-line].Disponível em: http://pt.wikipedia.org/wiki/Windows_Server_2008. Último acesso:14.06.2009Danilo Marion MunhózAluno de Tecnologia em Análise e Desenvolvimento de Siste-mas FATEPA – Faculdade de Tecnologia Unianchieta – CentroUniversitário Anchieta.Prof. Dr. Juliano SchimiguelProfessor do Curso de Tecnologia em Análise e Desenvolvi-mento de Sistemas Universidade Cruzeiro do Sul, CampusAnália Franco São Paulo.Servidores no Contexto de Redes Plataforma Microsoft
  40. 40. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 42424242Report Sharp ShooterComo escolher o gerador de Relatórios ?Para usar software de terceiros em nossosprojetos temos a mesma sensação de tirarfotos das Cataratas do Iguaçu. À primeiravista, as Cataratas tiram a nossa respiraçãoe é super promissor, mas você também nãoconsegue ver as pedras escondidas e temque estar equipado para emergências!O mesmo acontece com software. Você nãoconsegue ver o futuro e se preparar paraele! Mesmo quando parece que você en-controu a ferramenta certa, você nunca sa-berá o que o seu cliente irá querer de vocêamanhã, e que tarefas você terá que pro-gramar no futuro.Então, agora a história… Alguns meses a-trás, eu me deparei com a necessidade dedesenvolver uma solução de ERP de gran-de escala para a minha empresa com mui-tas características específicas. Eu não querocansá-los com toda a especificação da mi-nha aplicação, eu apenas gostaria de dizerque requeria a geração de centenas de rela-tórios diferentes e era impossível de prevertodas as particularidades que os relatóriosque meus clientes poderiam necessitar aolongo do tempo.O desafio maior era como encontrar umaferramenta de relatórios para meus aplica-tivos! Eu me perguntei: “Que critério eudevo usar para escolher a ferramenta certae que não vá me fazer cair dos 80 metrosdas Cataratas do Iguaçu na água fervidado suporte diário e debugging quandomeus clientes quisessem realizar uma ououtra tarefa?”Quando você começar a desenvolver al-gum sistema de relatórios, é impossívelpredizer de uma vez quais tipos de rela-tórios serão necessários para o seu clien-te pela sua aplicação. E eu nunca encon-trei clientes que pudessem formular seusrequerimentos suficientemente. Você en-controu?Um sistema de relatórios é usualmenteestendido por novos relatórios atravésdo tempo e você precisa cuidar e darmanutenção constantemente. Todo de-senvolvedor já se deparou com a situa-ção de quando o cliente fala: “Está bom,muito bom... mas eu quero que este textofique aqui e não ali, eu quero que estacoluna mostre outra informação...” E daípor diante. Se a sua ferramenta de rela-tórios não puder resolver, estas questõesvocê vai se sentir caindo das muito fala-das Cataratas do Iguaçú...O que fazer? Escrever sua própria ferra-menta de relatórios? Com o cronogramadisponível, inaceitável! A pior situaçãoainda é quando você enfrenta estes pro-Por: Ricardo Quartier
  41. 41. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 43434343tórios é muito conveniente; isto permitea você qualquer novo dado que for cal-culado com base na fonte dos dados. Pa-ra fazer isso, você precisa apenas fazermudanças no modelo de relatório.Habilidade de dinamicamenteconfigurar parâmetros em ummodelo de relatórios dependen-do da fonte de dados.Habilidade para dinamicamente confi-gurar parâmetros na base da fonte dedados permite flexibilidade na apresen-tação dos dados dependendo dos valo-res da fonte dos dados. Um modelo setorna versátil e isto o permite minimizaro número dos modelos de relatórios aserem desenvolvidos. Isto é especial-mente vital quando o desenvolvimentofuturo pode ser requerido.Habilidade de se extrair qual-quer dado com qualquer confi-guração em qualquer parte dodocumento final.Habilidade de se extrair qualquer dadoem qualquer lugar do relatório já rende-rizado permite a você gerar o relatóriomanualmente, inteiro ou em parte, casoa funcionalidade provida não permitirresolver uma ou outra questão. É claro,que você deve fugir de criar relatóriosmanualmente, mas isto reserva uma fle-xibilidade que deixará você confidentepara apresentar os dados de qualquerforma que você possa precisar.Então, uma vez que é impossível a ferra-menta de relatórios ideal, você precisade um produto que, de um lado, provejamuitas características avançadas, mas deblemas quando sua aplicação está quasepronta!Após dias procurando, testando, pen-sando e brigando, eu encontrei algumcritério em como encontrar a solução derelatórios correta e me precaver dos mai-ores riscos potenciais quando uma ferra-menta de relatórios não prover a necessi-dade que eu precisar depois:Bom designe de modelos de re-latórios.É uma grande sorte quando uma ferra-menta de relatórios tem um design quepermite criar a maioria das ferramentasdo dia a dia e rapidamente e intuitiva-mente relatórios com tarefas específicas.Mesmo se a funcionalidade da ferramen-ta de relatórios possa ser estendida, odesign deve prover a funcionalidade pa-ra dar certeza a resolver todas as suastarefas principais. Na outra mão, nenhu-ma ferramenta de relatórios provê toda afuncionalidade que você precisa. Sendoassim, o próximo critério principal é:Arquitetura aberta a plug-ins.Arquitetura Open plug-in é vital! Sevocê encontrar alguma tarefa que é im-possível de resolver com as característi-cas fornecidas, pelo menos, você poderáprogramar a funcionalidade requeridavocê mesmo.Habilidade de manipular a fontede dados no modelo de relató-rio.Habilidade de manipular a fonte de da-dos diretamente em um modelo de rela-Report Sharp Shooter
  42. 42. www.codificando.netCodificando.nete-magazinee-magazineAgo / Set - 2009 | 44444444ência com você agora.Primeiro de tudo, o que eu gostei maisno Report Sharp-Shooter é que ele tem aarquitetura open plug-in.Um documento e seus próprios elemen-tos definem a lógica não apenas da saídae comportamento no design, mas o maisimportante, eles definem a lógica da ge-ração do documento. Isto significa quevocê pode facilmente estender a funcio-nalidade da ferramenta redefinindo alógica dos elementos providos ou cria-dos por você mesmo.Por exemplo, o produto tem um elemen-to para saída do list footer. Na maioriados relatórios, é requerida a saída do fo-oter não à direita após a list, mas na par-te de baixo da página onde a lista acaba.Eu resolvi este assunto de forma muitosimples: Eu criei um novo elemento re-definindo a lógica do já existente. Aqui,eu adicionei uma nova propriedade,GrowToBottom que decide quando alist footer deve ser colocada na parte debaixo da página.Nós redefinimos a lógica da geração des-te elemento no método Render onde nóslimitamos o espaço livre na página gera-da para deslocar os elementos que foramgerados pela classe base na parte inferiorda página:Public Class AdvancedFooter Inhe-rits Perpetuum-Soft.Reporting.DOM.FooterPrivate _growToBottom As Boolean= False<System.ComponentModel.Category("Behavior")> _outro lado, que permita maior extensãoquando e caso você necessite. Sem falaro quanto é muito melhor quando vocêpode programar alguma nova funciona-lidade você mesmo, na base de uma fer-ramenta de relatórios do que ter que mu-dar para um novo componente em plenacorrida!As ferramentas de relatórios que tem u-ma Arquitetura de plug-in e suporte pa-ra scripting são flexíveis o suficiente pa-ra resolver as tarefas mais complexas.Arquitetura Open plug-in permite a pro-gramar a funcionalidade requerida e usodas novas características em um desen-volvimento futuro.Usando scripting, você pode definir con-figurações do modelo dinamicamente,cuidar da fonte de dados e até gerenciaro processo programaticamente, por e-xemplo, gerar partes separadas de umdocumento manualmente.Após dias de procura e testes em muitasferramentas disponíveis no mercado desoftware de diferentes vendedores mun-diais, eu encontrei um produto que fun-ciona com quase todas as minhas expec-tativas e requerimentos, Report Sharp-Shooter é a ferramenta ideal para relató-rios, ela realmente me surpreendeu coma flexibilidade que é provida. Eu termi-nei minha solução de ERP há cinco me-ses, ela funciona muito bem e os meusclientes estão bem satisfeitos. Como euprevi a diversidade de relatórios que eutive que desenvolver funcionou comouma bola de neve, mas eu tenho que ad-mitir que consegui cuidar de tudo e ficocontente de compartilhar minha experi-Report Sharp Shooter

×