codificando .net magazine - edição 04

37

Upload: weliton-junior

Post on 12-Jun-2015

662 views

Category:

Documents


4 download

TRANSCRIPT

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

Após 2 meses finalizamos a quinta edição da Codificando.Net Magazine. Realmente não é fácil manter

uma revista mensal com um nível como gostaríamos, por isso tomamos uma decisão... Teremos a partir

de agora a revista a cada dois meses, ou bimestral para quem preferir :)

Em 2 meses muitas coisas acontecem, por exemplo o São Paulo sagrou-se Penta Campeão Brasileiro.

Nesta edição temos uma entrevista internacinal (mais uma), Alfred nos EUA entrevista 2 mulheres do

time do VB na Microsoft!

Temos nossos colunistas mantendo suas colunas sempre atualizadas e artigos técnicos de muita qualida-

de .

Espero que tenham uma excelente leitura.

Alexandre Tarifa

[email protected]

Editorial

P O W E R E D B Y

C O D I F I C A N D O . N E T

O U T / N O V 2 0 0 7 E D I Ç Ã O 5 N Ú M E R O 4 A N O I

Codificando Net e-magazine

Equipe

Editor:

Alexandre Tarifa

Emerson Facunte

Reporter

Alfred Myers

Colaboradores:

Feio Tomaz

Maurício Wieler

Diego Nogare

Alexandre Lopes

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

Entrevista - Amanda e Lisa 3

Alfred Myers, MVP de C#, esteve em Redmond em setembro e aproveitou a estada pra entrevistar Lisa Feigen-

baum e Amanda Silver sobre o Visual Basic e suas carreiras na Microsoft.

ALFRED: Quem são vocês?

LISA: Eu sou Lisa Feigenbaum. Sou uma Program Manager no time do VB. Eu trabalho na IDE, em coisas do

editor como Code Snippets, Intellisense, comentários XML, code definition – coisas que você provavelmente

usa diariamente no produto.

AMANDA: Eu sou Amanda Silver. Eu trabalho na linguagem e no compilador. Trabalho com a Lisa no editor e

no debugger. Praticamente tudo no Visual Studio que for específico ao Visual Basic está no meu time.

ALFRED: Como você entrou na Microsoft?

AMANDA: Foi um acidente interessante. Quando eu me formei, estava tentando determinar para onde eu iria.

Durante o curso, eu passei a maior parte das férias de verão fazendo pesquisa científica em ciências da computa-

ção em assuntos como Complexidade Computacional. Eu pensei que iria para o mercado trabalhar por uns dois

anos, juntar uma grana e voltar para fazer o meu PHD, então eu fui para uma feira de carreiras tecnológicas,

passei o meu currículo para algumas empresas que achava que pagariam bem. Uma destas empresas era a Micro-

soft e eu vim fazer a entrevista. O cara que estava me entrevistando me perguntou por que eu era uma profes-

sora – o que aqui chamamos de Assistente de Ensino. Eu respondi que era muito importante para mim eu garan-

tir que o campo estava aberto para o maior número de pessoas possível. Então ele disse “Você se encaixa como

uma luva no Visual Basic” e me contratou. Eu vim trabalhar no time, não consigo me ver trabalhando em outro

produto e ainda não voltei à universidade para fazer o meu PHD.

LISA: Eu também ouvi falar da Microsoft através do recrutamento que eles fazem na universidade. Eu estava

fazendo o programa de bacharelado e mestrado e fiz vários trabalhos durante a graduação. Eu dei uma olhada

nas vagas e as achei bastante interessantes. Sempre gostei de arte e usabilidade, então o trabalho de edição era

interessante. Eu também sempre estive envolvida com ciências, então estar na divisão de desenvolvimento tem

este lado técnico de estar trabalhando com um pessoal técnico inteligente, liderando um time e usando um pro-

duto que está ajudando milhões de pessoas todo dia.

ALFRED: Você chegou a trabalhar em outros grupos?

LISA: Não, também sempre estive no time de Visual Basic. Eu trabalhei no debugger do VS 2005, Edit & conti-

nue e coisas assim. Agora estou trabalhando um pouco com desempenho. Trabalhei em algumas áreas diferen-

tes, mas sempre no Visual Basic.

ALFRED: Na tua opinião, quais são os recursos mais interessantes da IDE no novo Visual Basic?

LISA: O Intelisense está muito legal e é muito importante porque trás altos ganhos de produtividade. Eu posso

afirmar com certeza que assim que você começar a usar o VB 2008, você vai economizar tempo com menos

digitação, menos erros, gastando menos tempo tentando lembrar o nome das variáveis. Essencialmente, estamos

mostrando Intelisense em muito mais lugares que antes.

ALFRED: Eu soube que o VB está se tornando multi-plataforma. Como é isso?

AMANDA: Uma das novas plataformas sobre as quais temos conversado desde o Mix em abril do ano passado é

o Silverlight que é basicamente uma versão multi-plataforma do .NET Framework que vai permitir experiências

interativas ricas na web. Tem que ser multi-plataforma porque tudo isto é sobre abrangência e experiência rica

na web. Com o Silverlight, qualquer coisa que for compilada para IL (intermediate language) poderá ser multi-

plataforma. Então, o Visual Basic que é compilado para IL também passa a ser multi-plataforma.

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

Entrevista - Amanda e Lisa 4

ALFRED: E sobre o run-time do Visual Basic?

AMANDA: Esta é uma pergunta interessante. O run-time do Visual Basic, o Microsoft.VisualBasic.dll contém

funções de usuário, contém rotinas auxiliares do compilador que permitem o late-binding e as conversões no

VB. Isto está escrito em Visual Basic, que por sua vez é compilado para IL. Logo, ele também passa a ser multi-

plataforma.

ALFRED: Então podemos esperar que o Visual Basic funcione no Moonlight que é a versão Linux do SilverLi-

ght?

AMANDA: Não sei dizer.

ALFRED: Vocês ainda usam personas para representar os tipos de usuários de cada linguagem? Havia muita

conversa sobre Mort, Einstein e Elvis nos primeiros dias do .NET Framework.

AMANDA: Nós temos uma relação de amor e ódio com os personas. No início era muito difícil falar sobre o

usuário típico das linguagens aqui dentro da Microsoft. Os personas nos ajudaram a falar sobre estes usuários

típicos, mas isto é uma faca de dois gumes. Tem muita gente que acha que todos os programadores VB são

“Mort” e isto não é verdade. Nós temos todo tipo de usuário VB desde Arquitetos Seniores até gente que aca-

bou de baixar o VB Express e estão aprendendo a programar. Agora não falamos tanto de personas, e sim do

tipo de programador. Agora temos o termo “desenvolvedor oportunista” que é aquele cara orientado a tarefas,

que quer terminar o serviço.

ALFRED: Então vocês mataram o Mort ?.

AMANDA: Eu não diria que nós matamos o Mort. Tem gente aqui que ainda usa o termo internamente, mas

não é como falamos do produto hoje em dia.

ALFRED: Voltando ao Visual Studio 2008, alguma coisa mudou nos bindings de teclado no VB 2008?

LISA: Migrando do 2005 para o 2008, só há uma nova combinação de teclas. Nada foi removido. Nós adiciona-

mos um para quando o Intellisense está visível ficar transparente. Nós queremos manter aqueles atalhos de te-

clado antigos, então estamos mantendo aqueles atalhos do VB 6.

ALFRED: Há alguma novidade nos code snippets?

LISA: Nós temos algumas novidades na forma como eles funcionam. Tivemos bastante feedback falando que

aqueles campos verdes ficam na tela por muito tempo. Agora se você modificar texto fora do code snippet, isto

indica que você terminou de mexer nele e os campos podem sumir. Se mais adiante você quiser voltar ao code

snippet e ver os campos novamente, você pode clicar nele com o botão direito e selecionar “Show Snippet Hig-

hlighting”

ALFRED: Ao contrário do C#, o Visual Basic 2005 não veio com refactoring. Este era fornecido por terceiros.

Alguma coisa mudou no VB 2008?

LISA: Não foi incorporado ao produto ―principal‖, mas estamos bastante contentes com a solução atual de se

baixar separadamente o add-in do MSDN Dev Center gratuitamente. Como a gente não colocou isto dentro do

produto, tivemos tempo para trabalhar com outras coisas e colocá-las no produto. A Developer Express, desen-

volvedora do add-in, fez um excelente trabalho e agora temos o dobro de “refactorings” que tínhamos na ver-

são 2005.

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

Entrevista - Amanda e Lisa 5

ALFRED: Muito se tem falado de LINQ. Por onde você navegue você vê material sobre LINQ. Você acha que

tem alguma coisa que não esteja sendo divulgado o bastante? Recursos interessantes sobre os quais as pessoas

não estejam falando?

AMANDA: Eu acho que uma das coisas que é particular ao VB 9 é a integração com XML que é parte do

LINQ e que basicamente te permite copiar um documento XML e colá-lo dentro do editor de Visual Basic e

você terá uma experiência semelhante ao que você tem com o editor XML hoje. Não é somente sobre copiar e

colar blocos estáticos de XML. Você também pode usar aquelas expressões conhecidas do ASP clássico “<%=”

e “%>” e inserir no meio qualquer expressão válida do Visual Basic. Ex.:

Dim d As Date = Today

Dim x As XElement = <ProcessLog>

<Process><%= d %></Process>

</ProcessLog>

Console.WriteLine(x.ToString())

Isto faz com que o recurso seja bastante poderoso e faz com que seja bastante fácil escrever o seu documento

XML dinâmico, mas combinado com LINQ, você pode incluir uma query expression dentro do documento X-

ML. Isto significa que o VB agora pode substituir o XSLT em alguns cenários. É bastante poderoso.

ALFRED: Era o que eu ia dizer: É realmente bastante poderoso. E nós não temos este recurso no C#.

AMANDA: Este recurso é específico ao VB. Em C# você usaria uma construção funcional usando a API Linq to

XML. Para criar o mesmo XML você faria algo como:

DateTime d = DateTime.Today;

XElement x = new XElement("ProcessLog",

new XElement("Process", d));

Você pode usar o C# como uma espécie de XSLT, mas é o recurso de XML literal do VB que elimina a barreira

da API. Você não precisa pensar na API. Você pensa somente no documento.

ALFRED: É bem legal não ter que pensar na API. Eu vi o mesmo tipo de coisa sendo feita em outras linguagens

com relação ao processamento de textos. Realmente facilita a nossa vida.

Que tipo de coisa podemos esperar do VB na versão que virá depois do Orcas? Eu soube que existe um protó-

tipo chamado VBx que será hosteado.

AMANDA: O que estamos tentando fazer é pegar a experiência de usar o VB a linguagem, o compilador a ex-

periência de edição e hospedá-lo num contexto fora do Visual Studio. Uma das coisas interessantes a se pensar

é como usar esta tecnologia na console de linha de comando para que você possa usar a API do PowerShell para

escrever scripts usando VB. Ainda estamos bem no comecinho do estágio de planejamento e brincando com

protótipos. Parece que vai ficar bom.

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

Entrevista - Amanda e Lisa 6

ALFRED: Vai ser um ciclo de produto mais longo do que foi o Orcas?

AMANDA: Está muito cedo para saber, mas o Orcas teve um ciclo bem curto quando comparado com a ver-

são anterior. Acho que vamos tentar seguir esta tendência.

ALFRED: O que podemos esperar de novo na IDE depois do Orcas?

LISA: Estamos trabalhando em algumas coisas que vão viabilizar os cenários do VBx.

ALFRED: Qual foi o recurso mais solicitado que não deu para encaixar no Orcas?

LISA: Estamos dando uma olhada em algumas coisas sobre as quais tivemos bastante feedback como por exem-

plo, remover line continuations, ou seja, tirar a necessidade de usar o “_” para continuar um comando na linha

de baixo. Propriedades automáticas – a idéia de não precisar mostrar o getter e o setter para as propriedades

mais simples. Estes são recursos da linguagem e da IDE que foram bastante solicitados.

AMANDA: Também estamos dando uma olhada em como melhorar a experiência de navegação no Visual Stu-

dio, como passar do código para um modo de visualização da classe, este tipo de coisa.

ALFRED: Foi muito bom conversar com vocês.

AMANDA, LISA: Obrigada!

Assista o vídeo em Inglês da entrevista completa:

http://video.msn.com/video.aspx/?mkt=pt-br&vid=d349d31c-fb38-406b-aaa8-5b51e8197e19&wa=wsignin1.0

Alfred é MVP em C#, MCPD, MCITP, MCTS, MCSD, MCAD, MCP.

Mantém um blog em português em http://thespoke.net/blogs/alfred_myers e outro em

inglês em http://alfredmyers.spaces.live.com.

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

Artigo: Novidades do Biztalk Server 2006 R2

Recentemente lançado, o Microsoft BizTalk Server 2006 R2 é a quinta versão do produto. Por ser, fundamentalmente, um release de atualização, a mudança

não foi tão radical comparada às anteriores, mas as novidades são muito interessantes e algumas eram bastante aguardadas, como o alinhamento do produto as

novas tecnologias Microsoft.

A nova versão inclui algumas coisas realmente novas, além da atualização de algumas características importantes, que aumentam bastante as capacidades do

Servidor BizTalk, como veremos a seguir.

EDI

O EDi (Electronic Data Interchange – Troca Eletrônica de Dados) é um dos meios predominantes de troca de dados eletronicamente. Pouco

utilizado no Brasil (eu mesmo nunca tive oportunidade de trabalhar com esse formato em anos de experiência com BizTalk Server) represen-

ta aproximadamente 75 por cento de todas as transações eletrônicas e cresce em média de 5 a 7 por cento por ano, segundo dados da Mi-

crosoft.

O uso de EDI implica sintaxe de mensagem e padrões (incluindo ANSI X12 e UN/EDIFACT), protocolos de mensageria e transportes.

O BizTalk Servidor 2006 R2 processa mensagens de EDI usando Receive e Send pipelines específicos que podem fazer o parse e a serialização

de mensagens EDI. As funcionalidades referentes ao EDI foram atualizadas sensivelmente melhorando em muito a sua performance.

AS/2

As transações de EDI transmitidas pela Internet (EDI over the Internet - EDIINT) são uma alternativa crescentemente popular a enviar e rece-

ber EDI usando value-added networks (VANs). Usar a Internet para troca de dados reduz custos, aumenta eficiência, e tem vantagens em ter-

mos de redundância e escalabilidade.

Para dar suporte a esta tendência de crescimento, o BizTalk Servidor 2006 R2 suporta EDIINT AS/2 (Applicability Statement 2). AS/2 é uma

especificação que permite o transporte de dados de negócio usando a Internet de maneira segura. O BizTalk Servidor 2006 utiliza “AS/2-

defined methods” para enviar, receber, encriptar, decriptar, comprimir, descomprimir, assinar e verificar assinaturas entre parceiros usando

HTTP sobre a Internet. O BizTalk Server ajuda a assegurar a segurança das mensagens pelo uso de chaves de encriptação, assinaturas digitais

e certificados.

O EDI e AS/2 do Microsoft BizTalk Server 2006 R2 executa os seguintes processamentos AS/2:

Recebimento de mensagens codificadas EDIINT AS/2 sobre transporte HTTP/HTTPS.

Envio de mensagens codificadas EDIINT AS/2 sobre transporte HTTP/HTTPS usando operações de HTTP POST.

São Implementados como “solução de múltiplas cargas de suporte”, permitindo ao usuário enviar EDI, XML, ou outros dados de negócio

seguramente pela Internet.

Retornar uma notificação de disposição de mensagem (Message Disposition Notification - MDN), tanto no corpo da mensagem em um

HTTP response (conhecido como um MDN síncrono), quanto através do novo operador HTTP POST para uma URL para o sender origi-

nal (conhecido como um MDN assíncrono).

Fornece a capacidade de aplicação de propriedades de processamento em transporte de documentos AS/2.

Fornece o status das transmissões AS/2 a partir da lista de mensagens AS/2 e suas respectivas correlações (MDNs).

Permite acesso as mensagens EDI quando enviadas via AS/2.

Microsoft BizTalk RFID

Radio Frequency Identification (RFID) é uma tecnologia originada nas forças armadas americanas que usam tags que emitem sinais de rádio, e

dispositivos chamados “readers” que captam esses sinais. Os leitores (readers) então se comunicam com softwares para transmitir as informa-

ções da tag. RFID pode ser amplamente utilizado vários cenários, tais como: supply chain, ativos de alto valor, documentos, farmacêutico, e

muitos outros.

7

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

Artigo: Novidades do Biztalk Server 2006 R2

Por questões referentes a custos, o RFID ainda é uma tecnologia não muito implementada. Mas é uma das novidades mais interessantes pre-

sente no BizTalk Server 2006 R2 porque, ao serem superadas as questões de custo dos chips, o mercado espera por larga utilização da tecno-

logia RFID.

O Microsoft BizTalk RFID é projetado para fornecer uma plataforma escálavel e expansível para desenvolver, instalar, e administrar RFIDs.

Incluído nos componentes chave podemos encontrar uma framework de abstração dos dispositivos e um conjunto robusto de ferramentas

que capacitam a construção de RFID baseados em tecnologia .NET e aplicações de sensores com:

Serviços plug and play para suporte a diversos dispositivos RFID usando o Device Service Provider Interface (DSPI).

Serviços de aplicação para interação com dispositivos e leitores de tags para filtragem, transformação e agregação de eventos.

Ferramentas para gerenciamento de dispositivos e desenvolvimento de processo de negócio baseados em RFID (RFID Manager).

Pontos de extensibilidade (event handlers) para implementar soluções baseadas em padrões.

Principais Benefícios

Gerenciamento e configuração uniforme para dispositivos RFID heterogêneos.

Simplicidade Operacional.

Inovadora arquitetura de processos que separa as atividades de design das atividades de deployment.

Comunicação síncrona e assíncrona com dispositivos RFID.

Plataforma de desenvolvimento extensível para criação de event handlers customizados.

Parte integrante do Windows Server System.

O RFID também permite a clientes e parceiros de negócio a criação de soluções fim a fim e real-time que:

Conectem a aplicações line-of-business (LOB) usando adaptadores que podem executar workflow de negócios de longa duração

(controle de inventários, por exemplo) fazendo uso de todo potencial de business-to-business (B2B) e business process management

(BPM) do BizTalk Server.

Uso de aggregations e views do Business Activity Monitoring (BAM) no BizTalk Server para a visualização fim a fim do processo e a visão

analítica do fluxo de eventos RFID durante a execução do processo de negócio.

Utilização do SQL Server para o gerenciamento de dados e Business Intelligence.

Criação e deploy de regras de negócio utilizando o Business Rules Engine (BRE) para executar as decisões de negócio baseado nos even-

tos de entrada.

Utilização do Microsoft Operations Manager (MOM) para monitoração e troubleshoot que adicionarão escalabilidade e tolerância a falhas

a soluções RFID já implementadas em ambiente produtivo.

Adaptador WCF

Penso que é essa a novidade mais interessante presente na nova versão do BizTalk Server. O BizTalk WCF (Windows Communication Foun-

dation) adapters possibilita ao Microsoft BizTalk Server 2006 R2 comunicação com aplicações WCF.

Se você ainda não sabe o que é o WCF recomendo que procure mais informações, pois aplicações WCF são a nova estratégia da Microsoft

para aplicações distribuídas, com especial atenção a SOA (Service Oriented Architecture – Arquitetura Orientada a Serviços) e deve ser am-

pla e rapidamente adotada.

8

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

Artigo: Novidades do Biztalk Server 2006 R2

O Microsoft BizTalk Server 2006 R2 contém os seguintes adaptadores WCF e wizards:

WCF-WSHttp adapter: Oferece suporte aos padrões WS-* sobre o transporte HTTP. Este adaptador implementa as seguintes especifica-

ções: WS-Transaction para as interações transacionais entre aplicações externas e o MessageBox, WS- Security para segurança de mensagem

e autenticação. O transporte é HTTP ou HTTPS, e o encoding da mensagem pode ser Texto ou MTOM (Message Transmission Optimization

Mechanism).

WCF-BasicHttp adapter: Possibilita a comunicação com Web Services baseados em ASMX, clients ou outros serviços em conformidade

com o WS-I Basic Profile 1.1. O transporte é HTTP ou HTTPS, e o encoding da mensagem pode ser Texto ou MTOM (Message Transmission

Optimization Mechanism).

WCF-NetTcp adapter: Fornece suporte aos padrões WS-* sobre transporte TCP. Oferece comunicação eficiente em ambiente WCF-

WCF. Este adaptador implementa as seguintes especificações: WS-Transaction para as interações transacionais entre aplicações externas e o

MessageBox, WS- Security para segurança de mensagem e autenticação. O transporte é TCP, e o encoding da mensagem é a codificação biná-

ria.

WCF-NetMsmq adapter: Oferece suporte para messaging assíncrono usando Microsoft Message Queuing (MSMQ) como um transporte, e

capacitando o suporte para aplicações fracamente acopladas, isolamento de falhas e operações desconectadas.

WCF-NetNamedPipe adapter: Oferece comunicação segura e está otimizado para comunicação ―on-computer cross-process‖, Utiliza

transporte seguro para transferência segura, named pipes para entrega de mensagens e codificação binária.

WCF-Custom adapter: Possibilita o uso das características de extensibilidade do WCF. O adaptador permite que operadores selecionem e

configurarem o binding WCF, o comportamento, e as extensões de comportamento para o Receive Location e Send Port.

WCF-CustomIsolated adapter: Possibilita o uso das características de extensibilidade do WCF sobre o transporte HTTP. O adaptador

permite que operadores selecionem e configurarem o binding WCF, o comportamento, e as extensões de comportamento para um Receive

Location rodando em um Isolated Host.

BizTalk WCF Service Publishing Wizard: Usado para criar e publicar orquestrações e schemas do BizTalk como um serviço WCF. Esse

wizard é bem parecido com o já bem conhecido BizTalk Web Services Publishing Wizard.

BizTalk WCF Service Consuming Wizard: Usado para gerar artefatos BizTalk, como orquestrações e tipos, assim como arquivos de

binding para criação de Send Port, para consumir um serviço WCF baseado no documento de metadado do serviço WCF.

BAM interceptor

No BizTalk Servidor 2006, o BAM é uma coleção de ferramentas, APIs, e serviços que permitem administrar aggregations, alertas, e profiles.

Com o BAM você pode também instrumentalizar processos automatizados para que enviem eventos a serem monitorados por métricas rele-

vantes no processo. Juntos, fornecem visibilidade end-to-end a um processo de negócio.

Os interceptores de BAM (BAM interceptors) estendem esta mesma funcionalidade ao Windows Workflow Foundation (WF), Windows

Communication Framework (WCF), e outros runtimes. Usando os interceptores de BAM, você pode rastrear seus processos de negócio sem

a necessidade de recompilar sua solução WF ou WCF. A integração é feita por um arquivo de configuração.

Usando o interceptador BAM WF ou WCF em seu projeto, você pode:

Usar o BAM portal para visualizar informações sobre o processo de negócio rodando em sua aplicação WF ou WCF.

Usar as funcionalidades do BAM sem acrescentar código adicional a sua aplicação.

Fazer o deploy de sua aplicação usando as já familiares ferramentas e utilitários do BizTalk Server.

Obter vantagens de seu ambiente BizTalk já existente para as aplicações WF e WCF já existentes ou mesmo novas aplicações.

Além de continuar suportando Excel 2003, o BAM XLA foi atualizado para suportar o Microsoft Office Excel 2007.

9

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

Artigo: Novidades do Biztalk Server 2006 R2

Line-of-business (LOB) adapters

Um dos principais objetivos do BizTalk Server 2006 é facilitar a troca de documentos de negócio entre parceiros. Para auxiliar a atingir esse

objetivo o BizTalk Server 2006 R2 inclui diversos adaptadores LOB que possibilitam a conectividade entre o BizTalk Server e aplicações LOB

usando dados de protocolos e formatos de documentos comumente reconhecidos.

Windows SharePoint Services adapter - O suporte para esse adaptador agora inclui Windows SharePoint Services 3.0, enquanto conti-

nua mantendo para o Windows SharePoint Services 2.0.

Enterprise Single Sign-On 4.0

A nova versão do SSO contém as seguintes funcionalidades:

Management agent for MIIS: Objetiva simplificar o gerenciamento de credenciais mapeadas no SSO database. Mapeamentos podem

ser criados e deletados no SSO usando o Microsoft Identity Integration Server (MIIS). SSO também pode receber mudanças de senha do

através de seu agente de gerenciamento.

Microsoft Management Console (MMC) snap-in: No Enterprise SSO Administration console, administradores SSO podem visuali-

zar status e gerenciar servidores SSO remotamente usando o novo snap-in MMC.

Mapping Wizard for Affiliate Applications: Permite que administradores de SSO criem mapeamentos usando um wizard quando o

nome externo de conta é baseado numa conta de domínio Windows. Adicionalmente, a senha inicial também pode ser especificada quan-

do se criar o mapeamento para um usuário.

Direct Password Sync from Windows: Habilitando esta opção em um Affiliate Application permitirá que serviços de EntSSO sincro-

nizem a senha na base de dados do SSO diretamente. A mudança de senha de Windows é recebida de qualquer Microsoft Password

Change Notification Service (PCNS) ou MIIS. Isto é útil, por exemplo, onde uma conta de domínio Windows mapeada é criada na base

de dados de SSO.

Password filtering: Para cenários ―single sign-on and password sync‖, se um filtro é definido, então a senha filtrada é retornada ao cha-

mador ou ao adaptador de sincronização de senha. Filtros básicos incluem as opções para upper case and lower case, truncagem, e remo-

ção de caracteres especiais. Filtros avançados incluem opções para substituição de caracteres e a capacidade de acomodar um caracter na

frente ou fim.

Backward compatibility and upgrade: SSO 4.0 pode atualizar versões anteriores de SSO. Isto é feito para atualizar o master secret

server, que também atualizará o SSO database. O upgrade do master secret server e do SSO pode trabalhar com todas versões prévias

de servidores de SSO.

Conclusão

Sempre alinhado as novas tendências e tecnologias (tanto as do universo Microsoft, quanto dos padrões de mercado que se consolidam), o

Microsoft BizTalk Server 2006 R2 mais uma vez prepara um grande salto para o futuro das aplicações distribuídas com os novos adaptadores

WCF.

A constante evolução e atualização do produto se mostra presente nas importantes atualizações implementadas na versão R2 e nos dão uma

boa idéia do que está por vir para a próxima versão, que deve ser lançada no final de 2008 ou começo de 2009.

Espera-se que no futuro o BizTalk Server esteja ainda mais profundamente alinhado aos investimentos recentes da Microsoft na frame-

work .NET, especialmente ao Windows Communication Foundation e Windows Workflow Foundation.

É esperar para ver.

1 0

Feio Tomaz ([email protected]) é tecnólogo em Processamento de Dados,

formado pela Fatec-Americana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor es-

pecialista em Desenvolvimento de Processos de Negócio e Soluções de Integração. Atualmente é consul-

tor da ITGROUP. Mantêm uma longa relação de amor (e algumas vezes ódio) com novidades e mudanças.

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

Artigo: Introdução às “Fábricas de Software”

Esclarecendo as coisas...

Antes de mais nada, vamos começar esclarecendo algumas coisas para evitar confusão. Na área de desenvolvimento, o ter-

mo “factory” (fábrica) é utilizado em pelo menos três diferentes situações (até onde eu conheço!), embora elas possam es-

tar relacionadas. Primeiro, traduzindo para o português, chamamos de “Fábrica de Software”, a empresa que executa servi-

ços de tercerização para a construção de softwares. Esse uso é bastante conhecido no Brasil, e diversas empresas oferecem

esse serviço. Uma determinada empresa interessada na produção de um “sistema” transfere parte ou todo o trabalho de

construção do mesmo para uma fábrica de software. Nesta fábrica existe toda a estrutura (ou deveria existir!) para que este

sistema seja produzido da forma mais rápida e barata possível, seguindo um modelo de fábrica realmente, com processos e

funções bem definidos.

Um outro uso do termo “factory”, embora menos conhecido, mas que pode causar alguma confusão aos desavisados, são

os padrões “factories” de projeto, que estão relacionados à orientação a objeto (“Factory Method” e “Abstract Factory”).

Já no terceiro uso do termo, “Software Factory” diz respeito a um conjunto de ferramentas, modelos, wizards, arquivos de

configuração, application blocks, geradores de código, padrões, documentos e outros, que podem ser utilizados pelos arqui-

tetos e desenvolvedores com a finalidade de agilizar a entrega de um produto de software. E é exatamente deste tipo de

“factory” que iremos falar neste artigo.

Como chegamos até aqui ?

A busca por produtividade no desenvolvimento de software não é algo novo. Reusabilidade de requisitos, modelos, código e

outros artefatos é um dos objetivos desta busca. Iniciativas para tentar estabelecer padrões industriais na produção de soft-

ware são do tempo das ferramentas CASE (Computer-Aided Software Engineering). Hoje temos termos como Model-

driven development (MDD), Component-Based Development (CBD), MOF (MetaObject Facility), BPMN (Business Process

Modeling Notation), SysML (Systems Modeling Language), DSL (Domain Specific Language), só para citar alguns.

Por outro lado, a padronização talvez seja uma das maneiras mais simples de caminhar na direção da produtividade. Padrões

de nomenclatura de código, padrões para o uso de determinadas bibliotecas, melhores práticas (ou para se evitar as “piores

práticas” !), padrões de projeto (os chamados “design patterns”), etc.

Conforme a complexidade do software aumenta, os prazos de entrega diminuem, a velocidade de mudança dos requisitos de

negócio aumenta ou amadurecem durante a construção. Hoje uma aplicação “normal” tem que consumir diversos serviços,

enviar email, atualizar bases de dados diferentes, gerar alertas para dispositivos móveis, acessar sistemas legados, gerar dife-

rentes formatos de interface com o usuário, aplicar recursos de autenticação, controle de acesso, auditoria, etc. Ou seja,

existe toda uma infra-estrutura que poderia (e deveria) ser reaproveitada de aplicação para aplicação. Enfim, o cenário é

caótico, o desafio é enorme. Mas calma, vamos procurar não perder a cabeça.

Inicialmente tínhamos as diretrizes para desenvolvimento publicadas na forma de documentos de padrões. A própria Micro-

soft sempre disponibilizou material de referência ou melhores práticas. Além disso, tínhamos aplicações de referência, para

que o desenvolvedor pudesse se basear em “alguma coisa” na hora de aplicar uma determinada tecnologia que ainda estava

de certa forma obscura.

Depois disso, já na era .NET, vieram os “Application Blocks”, que eram, como o próprio nome diz, “blocos” de software

que poderiam ser utilizados (ou alterados), para se ganhar tempo e qualidade na construção de aplicações .NET. Blocos de

acesso à dados, logging, tratamentos de erro, segurança, etc. Esse blocos foram sendo reagrupados para se tornarem mais

tarde as conhecidas “Enterprise Libraries”. Aliás, o desenvolvedor .NET que não usa que me desculpe, mas provavelmente

ele deve gostar de escrever bastante código e a essa altura já deve estar com algum tipo de “tendinite”. Brincadeira, o obje-

tivo dessas bibliotecas é exatamente prover a infra-estrutura necessária de desenvolvimento para a aplicação, permitindo

focar na lógica de negócio, para tornar o ciclo de desenvolvimento menos penoso para o desenvolvedor.

Seguindo essa mesma linha, percebemos que já existe uma série de recursos para dar suporte e agilizar o desenvolvimento,

porém eles estão “dispersos” na forma de documentação, guias, bibliotecas, aplicações de exemplos, etc. Isso exige um es-

forço razoável para que possamos reunir, compilar e absorver essas “toneladas” de informações.

1 1

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

Artigo: Introdução às “Fábricas de Software”

A idéia das “software factories” é exatamente essa, proporcionar um ponto de apoio para o desenvolvimento de um deter-

minado tipo de aplicativo, reunindo não só a documentação, mas também templates, wizards e aplicativos de referência em

um único lugar, com o suporte de uma ferramenta de desenvolvimento, como o VS.NET 2005.

Basicamente, uma software factory apóia-se em três idéias-chaves :

Schemas : você pode pensar em um schema como uma ―receita‖. Aliás, é exatamente esse o termo usado (recipe). Sche-

mas descrevem a arquitetura e o relacionamento entre seus componentes.

Templates : eles contém os componentes listados na receita e fornece os padrões, guias, frameworks, ferramentas de

edição de DSL e outros ingredientes.

Um ambiente de desenvolvimento extensível : como por exemplo o VS.NET 2005.

Por onde eu começo ?

A melhor maneira para começar a entender e utilizar os recursos das fábricas de software é instalando as já disponíveis, que

são:

Mobile Client Software Factory : fábrica para aplicações Windows para dispositivos móveis.

Smart Client Software Factory : fábrica para aplicações smart-clients, ou seja, aplicações com recursos Windows que

podem ser disponibilizadas através de um browser.

Web Client Software Factory : fábrica para aplicações ASP.NET 2.0 e Windows Workflow Foundation.

1 2

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

Artigo: Introdução às “Fábricas de Software”

Fique atento aos pré-requisitos para a instalação, que dependem da fábrica que será instalada. Eles podem variar desde o

GAX (Guidance Automation Extensions), que é o ―run-time‖ necessário para que o Visual Studo 2005 seja capaz de execu-

tar os pacotes, até o .NET Framework 3.0, Microsoft SQL Server 2005 Compact Edition Runtime, e outros componentes

opcionais como o GAT (Guidance Automation Toolkit) e Visual Studio 2005 extensions para .NET framework 3.0 (WCF &

WPF).

Um componente interessante citado é o GAT, que é exatamente a ferramenta que possibilita a criação de pacotes novos

de guias. Ou seja, É através do GAT que o arquiteto da sua empresa poderá criar um determinado guia de desenvolvimento

(que inclui código, documentação, templates, wizards, etc) e distribuir para os demais desenvolvedores da equipe.

Onde eu consigo mais informação ?

http://msdn2.microsoft.com/en-us/practices/default.aspx

Conclusão

Espero que este artigo tenha dado uma idéia do que se tratam as software factories. Para aqueles que estão chegando agora,

realmente, existe um “mundo novo” a ser explorado. Termos novos, ferramentas novas e conceitos novos. A medida que

caminhos da produção artesanal de software para a produção “automatizada”, ferramentas que viabilizem essa transição

tornam-se fundamentais. A idéia de “operários de software” nunca me agradou muito, mas podemos encarar as coisas por

um outro ângulo : todo o esforço de codificação realizado até agora em processos repetitivos e entediantes poderá ser

“deslocado” para áreas mais “nobres” durante a construção de uma aplicação. Essas áreas seriam exatamente onde o desen-

volvedor é insubstitível, ou seja, nas coisas que não podem ser automatizadas.

1 3

Felipe Cembranelli ([email protected]) é graduado em Ciências da Computação pela Unesp e pós-graduado em

Telecomunicações. Atua a 11 anos na área de desenvolvimento e é certificado na plataforma Microsoft desde 2001. Atual-

mente trabalha na equipe .NET da Sanmina-SCI em Campinas. Não sente saudade da época do Visual Basic 3.0.

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

Artigo: Integrando aplicações .Net com SAP R3

Olá pessoal, nesse artigo estarei demonstrando algo que não é muito comum entre os desenvolvedores .Net, e por esse

motivo, existe uma carência muito grande desses profissionais nas grandes empresas.

Para quem não conhece, o R3 é um ERP da empresa alemã SAP, atualmente na versão 6 o R3 (da versão 6 em diante é co-

nhecido como ECC), está presente em 53% das grandes empresas do planeta, e no Brasil ele é usado por empresas como

Petrobras, Vivo, Claro, TIM, Embratel, Eletropaulo entre outras. O R3 possui uma linguagem própria, o ABAP, também pos-

sui uma camada de gerenciamento de acesso a tabelas, ou seja, um programador ABAP não acessa diretamente o banco de

dados, tudo é feito no R3 e o próprio internamente persiste as informações no banco de dados.

Devido a facilidade de criação de telas de gerenciamento e relatórios, tornou-se interessante para as empresas terem aplica-

ções externas que conversam diretamente com o R3, até pelo fato da aplicação poder acessar informações do negócio em

tempo real, por exemplo um software de ponto de venda, sites con informações detalhadas até mesmo aplicações para efei-

tos gerênciais.

Em uma parceria feita entre SAP e Microsoft foi desenvolvido um componente para o Visual Studio 2003 chamado de SAP-

DotNetConnector, este consegue acessar RFCs que estão flegadas com acesso remoto no R3.

Esse projeto será demonstrado no Visual Studio 2003, porém, para as pessoas que já usam o Visual Studio 2005, como eu,

podem apenas criar uma DLL no VS2003 e usa-la no VS2005 acessando todos os seus recursos.

Primeiro é necessário instalar o SAPDotNetConnector 2.0, essa instalação já aplica algumas coisas no VS2003 para facilitar o

acesso à RFCs.

Na figura abaixo, estou mostrando uma RFC que criei como exemplo, esta estará recebendo um parametro que será o ID

de um cliente (parâmetro opcional) e estará retornando uma tabela de Clientes com todos ou apenas um referente ao ID

passado.

Parâmetro de entrada

1 4

O que é uma RFC?

RFC é uma função desenvolvida em ABAP, essa funciona como qualquer tipo de função, recebendo

parâmetros e retornando parâmetros. No R3 quando se cria uma RFC, é possível habilitar uma flag de

acesso remoto, para que assim seja visualizado por outros aplicativos.

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

Artigo: Integrando aplicações .Net com SAP R3

Parâmetro de Saída:

Código da função:

1 5

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

Artigo: Integrando aplicações .Net com SAP R3

Execução da função:

Resultado:

Nesse momento, a parte que será feita no R3 está pronta, observem na ultima figura que quando não passamos nenhum

parametro a função returna todos os usuários.

1 6

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

Artigo: Integrando aplicações .Net com SAP R3

P R O J E T O

Já com o SAPDotNetConnector instalado, vou criar um projeto Windows Application. Indo ao “Server Explorer”, ao pres-

sionar o botão Refresh vai aparecer um icone do SAP, Vou expandindo em “Application Servers” e adiciono uma conexão

com o servidor do ambiente no qual desenvolvi a RFC, expando para Functions e efetuo um “filtro” para ver as RFCs, veja

va figura abaixo.

Feito isso, adiciono uma classe no projeto, selecionando “New Item”, mais aparecerá outro tipo de classe, veja na imagem

abaixo.

1 7

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

Artigo: Integrando aplicações .Net com SAP R3

P R O J E T O

Para poder usar a RFC, apenas arrasto do Server Explorer para o container criado pelo VS, observem na imagem abaixo.

Aqui é importante dizer que, por traz, o SAPDotNetConnector, lê as informações da RFC cria um método, que é a chama-

da da RFC e quando a mesma recebe ou retorna tabelas, ele cria o mapeamento dessas tabelas, observe que ele criou o

metodo com o mesmo nome da RFC, criou uma estrutura com os campos da tabela KNA1 (Clientes) e uma coleção que

seria a tabela, esse conceito é bem parecido com o que temos no DataSet Tipado.

Feito isso, voltarei ao Formulário e vou adicionar uma Grid (dgClientes) e no Load do formulário, vou adicionar o seguinte

código:

1 8

private void Form1_Load(object sender, System.EventArgs e) { clsSAP S = new clsSAP(); S.ConnectionString = "StringConexaoSAP"; KNA1Table t_kna1 = new KNA1Table(); S.Z_Exemplo_Weliton("", ref t_kna1);

dgClientes.DataSource = t_kna1; }

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

Artigo: Integrando aplicações .Net com SAP R3

Após exetutar o projeto aparecerá todos os clientes na grid conforme mostra a imagem abaixo.

A versão do R3 usada na demonstração é a versão 4.6C, a partir da versão 6 a SAP implantou o conceito de SOA no ECC, dessa forma é

possível acessar qualquer informação de RFC por meio de Web Services.

Conclusão: Com esse artigo, eu quis demonstrar como é possível fazer acessos remotos à RFCs no R3. Atualmente as gran-

des empresas estão querendo cada vez mais aplicações que conectem em tempo real com informações do negócio, o SAPDot-

NetConector ajuda e muito à acessar essas informações. Até o próximo artigo.

1 9

Weliton Carlos Flor é MCTS Web Applications e analista de sistemas na Stefanini, trabalha com .Net a 4 anos

sendo 2 focado em SAP

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

Artigo: Mundo Acadêmico

Queria contar-lhes uma experiência que creio que é comum a todos no ambiente universitário, principalmente. Ouvimos

que o Java é a linguagem ideal para o ambiente universitário, que ela tem isso, tem aquilo, é orientada a objetos, que é a úni-

ca capaz de ensinar aos alunos o verdadeiro conceito de programação orientada a objetos. Dentre outros mitos, ouvimos

que as linguagens C#, Visual Basic.NET e outras não “servem” para que aprendamos o básico de algoritmos e fluxogramas,

isto é, que não são próprias para dar os primeiros passos no estudos das linguagens de programação.

Vamos desmistificar essa série de besteiras e “mitos” bobos e ver quão práticas são essas linguagens para a aprendizagem

nas disciplinas de Algoritmos e Linguagens de Programação.

Vamos abordar aqui um problema bem simples, que é a resolução de uma equação de segundo grau, da forma:

ax²+bx+c = 0

A resolução dessa equação usa a fórmula

de resolução de Báskara, que nos diz:

em que

x é a raiz da equação de segundo grau,

além disso, dá-se o nome de delta (∆) é

chamado de discriminante da equação e

quem nos permite dar casos condicionais

para a resolução da equação de segundo

grau, como segue:

Se ∆ >0 = > Existem duas raízes reais

diferentes.

Se ∆ =0 = > Existem duas raízes reais e

iguais.

Se ∆ <0 = > Não existem raízes reais.

Em que ∆ = b2 – 4ac.

O fluxograma desta aplicação (que pode

ser melhorado, este é apenas um exemplo

prático feito rapidamente para que mos-

tremos a simplicidade de trabalhar com

o .NET) é dado abaixo:

2 0

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

Artigo: Mundo Acadêmico

A seguir, temos a implementação do código em C#, no modo Console:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleEquacao2Grau

{

class Program

{

static void Main(string[] args)

{

double A, B, C, DELTA, RAIZ, X1, X2;

string nomeUsuario;

Console.WriteLine("Digite o seu nome: ");

nomeUsuario = Console.ReadLine();

Console.WriteLine("Bem-vindo {0}!", nomeUsuario);

Console.WriteLine("Digite o valor de A: \n");

A = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("{0}, digite agora o valor de B: \n", nomeUsuario);

B = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("E por último, digite o valor de C: \n");

C = Convert.ToDouble(Console.ReadLine());

DELTA = (B * B) - (4 * A * C);

// Se DELTA for maior ou igual a zero

if (DELTA >= 0)

{

RAIZ = System.Math.Sqrt(DELTA);

X1 = (-B + RAIZ) / (2 * A);

X2 = (-B - RAIZ) / (2 * A);

Console.WriteLine("Caro {0}, o valor da RAIZ é {1}! E o valor de

DELTA é {2}", nomeUsuario, RAIZ, DELTA);

Console.WriteLine("E os valores de X1 e X2 são {0} e {1} respectiva-

mente.\n", X1, X2);

Console.WriteLine("DELTA é maior ou igual a zero.\n");

Console.WriteLine("Pressione ENTER ou qualquer tecla para finali-

zar!");

Console.ReadLine();

}

else

{

Console.WriteLine("Caro {0}, o valor de DELTA é {1}\n", nomeUsuario,

DELTA);

2 1

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

Artigo: Mundo Acadêmico

Console.WriteLine("Portanto, o valor de DELTA é negativo!\n");

Console.WriteLine("Pressione ENTER ou qualquer tecla para finali-

zar!");

Console.ReadLine();

}

}

}

}

Cujo resultado será:

O projeto, em Windows Forms, usando a linguagem C#, criaria um layout como segue:

2 2

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

Artigo: Mundo Acadêmico

Seu código fonte de implementação fica desta forma:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Equacao2Grau

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnSair_Click(object sender, EventArgs e)

{

// Encerrar a aplicação

Application.Exit();

}

private void btnLimpar_Click(object sender, EventArgs e)

{

//Limpar caixa de textos e

// E focalizar no txtA

txtA.Text = "";

txtB.Text = "";

txtC.Text = "";

txtX1.Text = "";

txtX2.Text = "";

txtMensagem.Text = "";

txtA.Focus();

}

private void btnCalcular_Click(object sender, EventArgs e)

{

// Criar variáveis

double A, B, C, D, RAIZ, X1, X2;

// Declarando variáveis

// Nesse caso é convertido tudo que o usuário digitar

// que é considerado string (texto) e o .Net Framework 2.0

// através da classe "Convert" converte para o tipo "Double" para que a

lógica

// do sistema funcione.

A = Convert.ToDouble(txtA.Text);

B = Convert.ToDouble(txtB.Text);

C = Convert.ToDouble(txtC.Text);

2 3

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

Artigo: Mundo Acadêmico

// Fórmula do Báskara

D = (B * B) - (4 * A * C);

// Ponto de decisão do sistema

// Se DELTA for maior ou igual a ZERO

// o sistema continua.

if (D >= 0)

{

/* No .NET Framework 2.0 para se calcular uma raiz é preciso

* adicionar a classe "System.Math.Sqrt"

* Assim será possível executar a RAIZ do problema

*/

RAIZ = System.Math.Sqrt(D);

// Calculando o X1 e X2

X1 = (-B + RAIZ) / (2 * A);

X2 = (-B - RAIZ) / (2 * A);

// Convertendo os valores de X1 e X2 para exibição em formato texto

// através da classe "Convert" e passando para "String" (texto).

txtX1.Text = Convert.ToString(X1);

txtX2.Text = Convert.ToString(X2);

}

else

{

// Se delta for menor que zero

{

// Exibindo a mensagem caso o DELTA for menor que ZERO!

txtMensagem.Text = "Delta é menor que zero";

}

}

}

}

}

2 4

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

Artigo: Mundo Acadêmico

E, funcionando, teremos:

Viram a facilidade e a produtividade e os conceitos que foram vistos nos códigos?

Quaisquer dúvidas e/ou esclarecimentos, por favor, não hesitem em escrever para meu email:

[email protected]

Até a próxima e poderiam, para o próximo número da revista, pensar em como resolveriam um sistema de duas equações linares

a duas incógnitas em C#, em modo console e em modo Windows Forms.

Desde já, obrigado e não se esqueçam, senhores:

“No stress, think .NET !”

Abraços a todos

MAURICIO WIELER

2 5

Mauricio Wieler Orellana - Bacharel em Ciências da Computação, Mestrando em Ciências da Com-

putação na USP, MCSD em Visual Studio 6, MCP em C#, atua no mercado Informática há 14 anos e é

professor da Universidade Paulista (UNIP), Universidade Salesiana de São Paulo (UNISAL) e Faculdade

Montessori, desde 2000. Foí Coordenador Acadêmico da INETA Brasil.

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

RECORDAR É VIVER!

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

P Á G I N A 2 7

XNA - A comunidade mostra sua força

O dia 15 de setembro de 2007 vai ficar para a história do desenvolvimento de games. Neste dia a grande comunidade de desenvol-

vedores e entusiastas de games mostraram sua força no 1º XNA Game Fest Brasil (www.gamefestbrasil.net ).

O evento aconteceu na UNIP, campus Tatuapé e foi organizado por dois grandes grupos: Codificando.Net

(www.codificandomagazine.net) e SharpGames.Net (www.sharpgames.net) .

Os participantes foram contemplados com cerca de 10 horas de atividades divididas em três níveis: Estudantes/Games 2D, Profissi-

onais/Games 3D e Game Design.

Logo na abertura, contabilizamos cerca de 750 pessoas disputando cada centímetro (corredores laterais, central e demais área de

circulação) do auditório para assistir ao descontraído KeyNote de Amintas Neto, Diretor Acadêmico da Microsoft Brasil, apoiado

por sua “tropa de elite” (peço licença pelo uso do

trocadilho), Galileu Vieira, Gerente de Inovações da

Microsoft Brasil e André Furtado, um vitorioso dou-

torando ((http://afurtado1980.spaces.live.com), campe-

ão de diversos campeonatos de desenvolvimento, a-

presentaram qualidades e a evolução da tecnologia

XNA.

As palestras foram ministradas por grandes profissio-

nais da área e também por entusiastas que mergulham

fundo na tecnologia, como é caso de José Antonio Leal

Farias, popularmente conhecido como JALF.

JALF arrancou gargalhadas da galera com seu bom hu-

mor, mas provou com seriedade que desenvolver ga-

me exige uma boa dose de paciência.

Também fomos contemplados com o talento do MSP

Roger Tang, um dos responsáveis por criar o tutorial

em CD distribuído aos participantes do evento. Tang

apresentou os desafios da criação de jogos em 3D.

Outro entusiasta e expert em GOW (Gears of War),

Murilo Maciel Curti, aka SHINJi – ou seria ao contrário? – apresentou um game semelhante ao Guitar Hero, demonstrando que os

desafios podem estimular a criatividade.

Esse nobre Jedi que vos fala (como é difícil falar na terceira pessoa) apresentou um tutorial passo-a-passo sobre o desenvolvimento

de um pequeno game 2D, com scrolling de cenário, teste de colisão, controles do teclado e joystick e também técnicas simples para

criação de personagens.

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

P Á G I N A 2 8

XNA - A comunidade mostra sua força

Bruno Evangelista minis-

trou duas palestras muito

empolgantes, “Criando

efeitos especiais usando

Shaders em XNA” e

“Criando games 3d com

XNA” em formato de

tutorial. Nesta última, os

participantes (cerca de

130 na sala) maravilhados

com os recursos e exce-

lência da apresentação,

conseguiram extrair o

máximo de informações

possíveis, extrapolando

em pelo menos em 1 ho-

ra o tutorial de nosso

heróico Bruno.

Na elite dos profissionais,

Roger Tavares do Game

Cultura e Fabio Razzo Galuppo da ZINIA, quebraram alguns paradigmas da concepção de um game, apresentando aspectos do de-

sign de games e programação multi-core, respectivamente. Suas palestras

foram rapidamente interrompidas pela performance de um animado grupo

de Cosplayers.

Como ninguém é de ferro (exceto alguns personagens dos games), tive-

mos dois intervalos para repor as energias, com lanches, pipoca, algodão-

doce e muito refrigerante. Além de repor as energias, o intervalo serviu

como um momento para o networking , onde a galera trocou experiên-

cias, contatos e também muitas dicas de games para XBOX 360.

Básico/Acadêmico

XNA e XNA Framework: desenvolvendo jogos de maneira fácil e divertida para Windows e

Xbox 360

XNA Game Components e Game Services: criando jogos do jeito do XNA

Profissional

Programação Multi-Core para código nativo e gerenciado

Perspectivas no mercado nacional e na Live Arcade

Criando efeitos especiais usando Shaders em XNA

Tutorial: criando jogos em 3D com XNA

Design

Elementos de game design para um jogo de sucesso

Criando cenários 3D para seus jogos

Criando roteiros para jogos

Tutorial: introdução a modelagem 3D

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

P Á G I N A 2 9

XNA - A comunidade mostra sua força

Bruno Evangelista ministrou duas palestras muito empolgantes, “Criando

efeitos especiais usando Shaders em XNA” e “Criando games 3d com

XNA” em formato de tutorial. Nesta última, os participantes (cerca de 130

na sala) maravilhados com os recursos e excelência da apresentação, conse-

guiram extrair o máximo de informações possíveis, extrapolando em pelo

menos em 1 hora o tutorial de nosso heróico Bruno.

Reforçando ainda mais o sucesso do evento, tivemos forte cobertura jorna-

lística, com a presença da Play TV, Revista Oficial XBOX (ROX), Revista

Game Master, Revista Independente XBOX 360 (Digeratti), Game Cultura,

Portal XBOX, Game Reporter e Estadinho.

Configura o que foi publicado na imprensa:

• Trecho do programa PlayZone, que vai ao ar de segunda a sábado na PlayTV: www.bizmedia.com.br/microsoft/

clipping.aspx?video=gamefest

• Matéria da Revista Oficial XBOX 360 http://www.revistax360.com.br/modules/noticias/ver.php?id=275

Revista Game Master número 33 Excelente matéria de destaque – Já nas bancas (outubro/novembro)

Além das matérias publicadas pela imprensa, observamos muitos posts em blogs de qualidade:

• André Furtado—André traça um perfil bem humorado do evento

http://afurtado1980.spaces.live.com/blog/cns!63514833CE40C143!219.entry

• Panacea Design—Gostamos muito do ponto de vista crítico, além dos destaques positivos do evento.

http://panaceadesign.com.br/?p=24

• Aventura da galera de Vila Velha-ES—O pessoal mais animado e dedicado do evento, com uma caravana de cerca de 20

pessoas, arrasaram! http://s10.invisionfree.com/enrevil/index.php?showtopic=6007

Os videos também estão presentes na comunidade do YouTube:

• Auditório lotado—http://uk.youtube.com/watch?v=JvOrat4QsZg

• Game desenvolvido por André Furtado - http://uk.youtube.com/watch?v=9I4HCCUlc3w

• Apresentação de Bruno Evangelista http://uk.youtube.com/watch?v=mNFIFR_gbv4

• André Furtado arrancando gargalhadas da platéia http://uk.youtube.com/watch?v=NbxU2bpcRws

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

P Á G I N A 3 0

XNA - A comunidade mostra sua força

Concluindo a matéria, é importante destacar que o evento contou com patrocina-

dores de peso, como: Microsoft, EA Games, Livraria Saraiva e UNIP-Tatuapé, além d e

fortes apoiadores, MSDN, Game Cultura, Comunidade Amiga.Net, Ineta, Microsoft A -

cadêmico e Microsoft Games.

É isso aí nobre Jedis! Até o próximo Game Fest.

Inscritos 1.250

Participantes Quase mil pessoas

Palestras 15

Apoiadores Microsoft Acadêmico Microsoft Games MSDN UNIP EA Games Sharp Games Codificando.Net Game Cultura Livraria Saraiva Comunidade Amiga.Net Ineta

Imprensa Play TV Revista Oficial XBOX Revista Game Master Estadinho (Jornal O Estado de São Paulo) Revista XBOX 360 – Digeratti Game Cultura Game Reporter

Arrecadação alimentos Mais de 750 kg

Feio Tomaz ([email protected]) é tecnólogo em Processamento de Dados, formado pela Fatec-

Americana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor especialista em Desenvolvimento de Proces-

sos de Negócio e Soluções de Integração. Atualmente é consultor da ITGROUP. Tem saudades dos bons tempos quando as

coisas pareciam ser mais simples e os vídeo games tinham apenas um botão.....

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

Coluna: Desvendando o SQL Server

Pessoal,

Nesta série de artigos para a revista Codificando.net, estou demonstrando o uso de XML com SQL Server 2005. Os seguintes

tópicos estão sendo abordados:

Introdução: XML e SQL Server 2005

Gerenciando dados XML

Trabalhando com XML

Dados XML e tecnologia SQL Server

Modificando dados XML

Criando Indices XML

Os 3 primeiros tópicos foram abordados anteriormente, restando os demais para serem desvendados posteriormente. Antes

disso, será preciso explicar o que venha a ser “XML Schema”.

“XML Schema” descreve a estrutura e o conteudo de um documento XML. Abaixo encontra-se um exemplo que será utilizado,

pode-se notar que é bastante parecido com a definição de uma tabela e seu conteúdo (dados). Sendo assim, salve o conteudo

abaixo em um arquivo (pode ser logRecordSchema.xsd) e vamos para a próxima etapa.

<?xml version="1.0" encoding="utf-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="logRecord" type="logRecordType" />

<xsd:simpleType name="flagEnum">

<xsd:restriction base="xsd:string">

<xsd:enumeration value="warning" />

<xsd:enumeration value="information" />

<xsd:enumeration value="failure" />

<xsd:enumeration value="custom" />

</xsd:restriction>

</xsd:simpleType>

<xsd:simpleType name="eventEnum">

<xsd:restriction base="xsd:string">

<xsd:enumeration value="appStart"/>

<xsd:enumeration value="appClose"/>

<xsd:enumeration value="logIn"/>

<xsd:enumeration value="logOut"/>

</xsd:restriction>

</xsd:simpleType>

<xsd:complexType name="logRecordType">

<xsd:choice maxOccurs="unbounded">

<xsd:element name="information" type="informationType"/>

<xsd:element name="error" type="errorType"/>

<xsd:element name="post" type="postType"/>

</xsd:choice>

<xsd:attribute name="machine" type="xsd:string" />

<xsd:attribute name="timestamp" type="xsd:dateTime" />

</xsd:complexType>

<xsd:complexType name="postType">

SQ

L S

ER

VE

R

3 1

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

Coluna: Desvendando o SQL Server

<xsd:sequence>

<xsd:element name="moreInformation" type="xsd:string" maxOccurs="1" minOc-

curs="0"/>

</xsd:sequence>

<xsd:attribute name="eventType" type="eventEnum"/>

</xsd:complexType>

<xsd:complexType name="informationType">

<xsd:sequence>

<xsd:element name="message" type="xsd:string" />

</xsd:sequence>

<xsd:attribute name="flag" type="flagEnum" />

</xsd:complexType>

<xsd:complexType name="errorType">

<xsd:sequence>

<xsd:element name="message" type="xsd:string" />

<xsd:element name="module" type="xsd:string" />

</xsd:sequence>

<xsd:attribute name="number" type="xsd:int" />

</xsd:complexType>

</xsd:schema>

Na edição anterior, criamos o banco de dados “codificandoxml” e a tabela “tabelaexemploxml” (a ser utilizada futuramente em

outros artigos). Para isso, estando no SQL Server Management Studio, digitamos o seguinte comando que irá, ao mesmo tempo,

carregar o arquivo codificando.xsd e criar a tabela a ser utilizada nos próximos exemplos:

USE codificandoxml

Go

declare @schema XML

select @schema = c from openrowset (

bulk 'c:\codificando\logRecordSchema.xsd', single_blob) as temp(c)

create xml schema collection LogRecordSchema as @schema

go

Criar a tabela de exemplos da apresentação:

CREATE TABLE UniversalLog

( ID INT IDENTITY(1,1) NOT NULL,

LogDateTime DATETIME NOT NULL CONSTRAINT [DF_UniversalLog_LogDateTime]

DEFAULT (GetDate()),

ApplicationName NVARCHAR(50) NOT NULL,

LogRecord XML(LogRecordSchema) NULL )

SQ

L S

ER

VE

R

3 2

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

Coluna: Desvendando o SQL Server Neste ponto, chegou o momento de inserir dados na tabela:

USE CodificandoXML

GO

INSERT UniversalLog(ApplicationName, LogRecord)

VALUES ('SalesApp',

'<logRecord machine="server1" timestamp="2000-01-12T12:13:14Z">

<post eventType="appStart">

<moreInformation>All Services starting</moreInformation>

</post>

</logRecord>')

INSERT UniversalLog(ApplicationName, LogRecord)

VALUES ('Inventory',

'<logRecord machine="server2" timestamp="2000-01-13T12:13:14Z">

<post eventType="appStart"/>

<information flag="warning">

<message>Duplicate IP address</message>

</information>

</logRecord>')

INSERT UniversalLog(ApplicationName, LogRecord)

VALUES ('HR',

'<logRecord machine="server1" timestamp="2000-01-14T12:13:14Z">

<error number="1001">

<message>The user does not have enough permissions to execute query</message>

<module>DataAccessLayer</module>

</error>

</logRecord>')

INSERT UniversalLog(ApplicationName, LogRecord)

VALUES ('CustomerService',

'<logRecord machine="server2" timestamp="2000-01-15T12:13:14Z">

<post eventType="logOut"/>

<information flag="custom">

<message>User must change password on next login</message>

</information>

</logRecord>')

SQ

L S

ER

VE

R

3 3

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

Coluna: Desvendando o SQL Server INSERT UniversalLog(ApplicationName, LogRecord)

VALUES ('HoursReport',

'<logRecord machine="server2" timestamp="2000-01-11T12:13:14Z">

<information flag="failure">

<message>Hard Disk with ID #87230283 is not responding</message>

</information>

<error number="18763">

<message>Application can not start</message>

<module>AppLoader</module>

</error>

<post eventType="appStart"/>

</logRecord>')

SELECT * FROM UniversalLog

GO

O resultado encontra-se abaixo:

Até o momento preparamos todo o nosso ambiente de estudos criando o database, as tabelas, XML schema e inserimos os

dados que serão utilizados na próxima etapa.

Por enquanto ficaremos por aqui, no próximo artigo continuaremos a desvendar o uso de XML com SQL Server explicando

como os dados XML se comportam com a tecnologia SQL Server, modificaremos os dados XML inseridos neste segundo artigo

e também será explicado a criação de indices XML. Preparem-se, a viagem promete!

Abraços,

Alexandre Lopes SQ

L S

ER

VE

R

Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br).

Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como

instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.

3 4

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

T R A S H R I D Í C U L O D Á P R O

G A S T O

V Á

A S S I S T I R

T Á E S P E R A N D O

O Q U E ?

T R O P A D E E L I T E

O Cinema Nacional em patamar de cinema de primeiro mundo.

Nobres Jedis, é dificil analisar e fazer uma crítica transparente quando nossa e -

moção supera a razão.

Assisti ao filme logo na estréia e confesso que tentei “trabalhar como crítico” p a -

ra escrever à vocês, mas a emoção falou mais alto.

Bem, aí vai minha análise crítica:

Aqui a arte imita a vida, a realidade de um mundo cinzento, uma fronteira in-

transponível repleta de armadilhas.

Tropa de Elite não pode ser rotulado apenas como “mais um filme que trata de

problemas sociais”. Trata-se de uma obra-prima de produção invejável, com n u -

ances do cinema americano e diálogos comparados ao cinearte europeu. Exage- r o ?

Tudo bem, não dá pra comparar os diálogos com as sacadas genias de Almodó- v a r

ou ironias de Woody Allen, mas Capitão Nacimento, brilhantemente interpreta- d o

por Wagner Moura, dispara palavras conexas num perfeito timing.

O diretor, José Padilha, teve sensibilidade e forte sintonia com sua equipe, atingindo a excelência em fotografia e som – este um show a parte, com sin-

cronismo e perfeição em todas as cenas.

Respire fundo e prepare-se para intermináveis cenas de ação, com muito sangue, humilhação, piadas sarcásticas e um heroísmo duvidoso; claro, depen-

dendo do seu ponto de vista.

Nobres Jedis, esse é um filme imperdível, onde você fará uma forte crítica sobre a sociedade, e não somente sobre o filme.

Os brincalhões de plantão não perdem tempo e já me enviaram algumas frases sobre o Capitão Nascimento. Aí vai:

• Quando Bruce Banner fica p#@! ele vira o Hulk, quando o Hulk fica p#t! ele vira o capitão Nascimento.

• Capitão Nascimento não lê livros, ele bota eles no saco até conseguir toda a informação que precisa.

• Capitão Nascimento apostou queda de braço com o Superhomem e quem perdesse teria que usar a cueca por cima da calça.

• O capitão Nascimento só dorme de luz acesa, porque o escuro tem medo dele.

• No Aurélio a palavra "vítima" está definida como "aquele que encontra o capitão Nascimento".

• Capitão Nascimento dorme com um travesseiro debaixo da arma.

Amigos, sem dúvida nenhuma,

esse filme vai dar no que falar.

Divirtam-se. - Emerson Facunte

Cinema

3 6

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

.Close() Visual Studio 2008! O melhor debug de todos os tempos

Debugar, debugar e debugar.... Uma tarefa muito comum em nossas vidas e que graças as evoluções das ferramentas conseguimos

fazer cada vez melhor.

Principalmente em momentos de bugs absurdos, o Debug é parceiro fiel para qualquer desenvolvedor... O Visual Studio já nos ofere-

ce um debug muuuuito bom, com recursos sensacionais ainda mais para fãs de trabalhar com coleções, o Debug é sensacional.

O time de produto do Visual Studio 2008 surpreendeu ao anunciar um novo recurso de Debug... A partir da próxima versão, sim-

plesmente poderemos navegar pelo debug na implementação na Biblioteca de Classes do Framework... Isso mesmo, na implementa-

ção de código feita pela Microsoft.

O que ganho com isso?

Um nível a mais de debug... Poderemos por exemplo em debug entrar na implementação do método Replace da classe String.... E

muito mais claro :)

Dá para imaginar no trabalho que devem ter tido para fazer isso? Imaginem a limpeza no código, tirar as soluções técnicas alternati-

vas (gambiarras), tirar os comentários do tipo: “Não sei o que faz, mas não apaguem”, etc etc etc... Mas até ai, o trabalho que isso

deu para fazer não é muito problema nosso :) , mas o recurso sim e nosso e os debugs de quem utilizar Visual Studio 2008 vão ser

muito mais profundos...

Veja mais: http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx

Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em

diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client.

Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático

torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.

3 7