Você está na página 1de 37

Codificando Net

POWERED BY

e-magazine
CODIFICANDO.NET

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

Editorial
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
editor@codificandomagazine.net

Equipe
Editor:
Alexandre Tarifa
Emerson Facunte

Reporter
Alfred Myers
Colaboradores:
Feio Tomaz
Maurício Wieler
Diego Nogare
Alexandre Lopes
3
Entrevista - Amanda e Lisa
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.
4
Entrevista - Amanda e Lisa
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.
5
Entrevista - Amanda e Lisa
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.
6
Entrevista - Amanda e Lisa
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.
7 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.
8 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.
9 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.
10 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.

Feio Tomaz (feiotomaz@codificandomagazine.net) é 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.
11 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.
12 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.
13 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.

Felipe Cembranelli (cembranelli@excite.com) é 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.
14 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.

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.

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
15 Artigo: Integrando aplicações .Net com SAP R3
Parâmetro de Saída:

Código da função:
16 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.
17 Artigo: Integrando aplicações .Net com SAP R3
PROJETO

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.
18 Artigo: Integrando aplicações .Net com SAP R3
PROJETO

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:

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;
}
19 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.

Weliton Carlos Flor é MCTS Web Applications e analista de sistemas na Stefanini, trabalha com .Net a 4 anos
sendo 2 focado em SAP
20 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:
21 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);
22 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:
23 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);
24 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";
}
}
}

}
}
25 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:
mauricioow@gmail.com

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

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.
RECORDAR É VIVER!
PÁGINA 27

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.
PÁGINA 28

XNA - A comunidade mostra sua força


Básico/Acadêmico
Bruno Evangelista minis-
XNA e XNA Framework: desenvolvendo jogos de maneira fácil e divertida para Windows e
trou duas palestras muito
Xbox 360
empolgantes, “Criando
XNA Game Components e Game Services: criando jogos do jeito do XNA efeitos especiais usando
Shaders em XNA” e
“Criando games 3d com
Profissional XNA” em formato de
Programação Multi-Core para código nativo e gerenciado tutorial. Nesta última, os
participantes (cerca de
Perspectivas no mercado nacional e na Live Arcade 130 na sala) maravilhados
Criando efeitos especiais usando Shaders em XNA com os recursos e exce-
lência da apresentação,
Tutorial: criando jogos em 3D com XNA conseguiram extrair o
Design máximo de informações
Elementos de game design para um jogo de sucesso possíveis, extrapolando
em pelo menos em 1 ho-
Criando cenários 3D para seus jogos ra o tutorial de nosso
heróico Bruno.
Criando roteiros para jogos
Na elite dos profissionais,
Tutorial: introdução a modelagem 3D 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.
PÁGINA 29

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
PÁGINA 30

XNA - A comunidade mostra sua força


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

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 de
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.

Feio Tomaz (feiotomaz@codificandomagazine.net) é 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.....
31 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
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">
32 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>
SQL SERVER

<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 )
33 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">
SQL SERVER

<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>')
34 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>
SQL SERVER

<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

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.
36

Cinema
TROPA DE ELITE

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” pa-
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 nu-
ances do cinema americano e diálogos comparados ao cinearte europeu. Exage- ro?
Tudo bem, não dá pra comparar os diálogos com as sacadas genias de Almodó- var
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 TRASH RIDÍCULO DÁ PRO VÁ TÁ ESPERANDO


GASTO ASSISTIR O QUE?
37
.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 alt ernati-
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.