Você está na página 1de 48

Powered by Microsoft Publisher

#2
 360 S PARTA N UM E R O 2 AN O I
E NGINES… UMA FORÇA PRO SEU GAME

 E NTRETENIMENTO
DICAS GASTRONÔMICAS, CINEMA E LAZER

Codificando Net
e-magazine

Novidades do Windows Server 2008


E muito mais...
Codificando Net
POWERED BY

e-magazine
CODIFICANDO.NET

NESTA
J U L H O 2 0 0 7
EDIÇÃO E D I Ç Ã O 2 A N O I

Editorial
Entrevista 3

Artigo 7
Win 2008

Artigo 13 Chegamos na terceira edição, a número 2. Estamos consolidando um número muito bom de acessos e
Gerência downloads a revista, são mais de 7.000 somando as duas edições já lançadas, um número realmente muito
bom. Isso graças a colaboração da comunidade que ajuda em muito no conteúdo e divulgação.
Artigo 16
SQL
Nesta edição temos dois novos colunistas, Alexandre Lopes fala sobre SQL e Bruno Sonino sobre Silverli-
Artigo 18 ght, os dois chagam com muita sede e publicam excelentes colunas logo de cara.
WCF e AJAX

Coluna 20 Gostaria de anunciar também a nova equipe de editores, agora somos dois editores: Alexandre Tarifa e
XNA Emerson Facunte, onde vamos revezar no editorial das edições.

Coluna 21
Biz.talking A partir desta edição teremos novos conteúdos, voltados a vida social dos desenvolvedores... Isso mes-
mo, desenvolvedor tem vida social :) teremos assuntos como cinema, culinária, turismo, etc...
Coluna 24
SQL
Temos também o Grito do Leitor onde através do email grito@codificandomagazine.net todo mundo
Coluna 28 pode gritar, reclamar, sugerir, contribuir, etc :), tudo comandado pelo nosso amigo Ganso (Sérgio).
Qualidade

Coluna 33
Silverlight

Coluna 36
Acadêmico
Boa leitura!
Coluna 37 Equipe
Web
Alexandre Tarifa Editor:
Alexandre Tarifa
Coluna 39 editor@codificandomagazine.net
Emerson Facunte
Compact Plane

Entretenimento 44 Co-Editores:
Andrey Sanches

Comunidade 47 Reporter
Mutex Alfred Myers
Colaboradores:
Coluna: 48
Hélio Sá Moreira
.Close() Feio Tomaz
Eduardo Gomes
Maurício Wieler
Israel Aéce
JALF
Bruno Sonino
Ramon Durães
Diego Nogare
Alexandre Lopes
3
Entrevista - Eduardo Miranda
Alfred Myers: Quem é você, sua formação e o que você faz?
Eduardo Miranda: Sou Eduardo Miranda, Software Development Engineer na Microsoft. Formei-me em Economia, mas em
certo momento da vida me interessei por desenvolvimento de software. Comecei uma pós-graduação em análise de sistemas
para ver “qual era”. Pelo meu desempenho, melhor que a média da turma, formada por profissionais atuantes na área, percebi
que eu podia seguir esta nova profissão. Desde então trabalho na área, sempre focado em tecnologias Microsoft. Atualmente
atuo como SDE do time de localização do Dynamics AX no Brasil, sou responsável pelo desenho e desenvolvimento de fun-
cionalidades brasileiras para o produto. Recentemente completei um Mestrado em Gestão de empresas, no qual me aprofun-
dei em inovação nas empresas de software.
AM: Como foi o processo de seleção para entrar na Microsoft?
EM: O processo de seleção da Microsoft é bem conhecido e divulgado na internet [1]. O meu não foi diferente, após algumas
entrevistas por telefone fui convidado para uma seção de entrevistas técnicas com vários entrevistadores. O foco é em solu-
ção de problemas e pensamento lógico. O processo é cansativo, mas divertido, para quem gosta de desenvolver software.
Sem dúvida foi uma experiência única para mim, que estava acostumado com os processos de seleção mais usuais. Para ter
uma idéia um mês antes eu havia sido sondado por uma grande consultoria, mas a recrutadora nem quis marcar uma entrevis-
ta comigo, pois precisava de alguém para “começar a desenvolver amanhã” e eu estava algum tempo distante do código-fonte,
atuando como analista de negócios.
Sobre o desenvolvimento do Dynamics AX:
AM: Quais são as linguagens que você usa no dia-a-dia para desenvolver as features do Dynamics AX?
EM: A linguagem de desenvolvimento utilizada no AX é o X++, uma linguagem orientada a objetos e com sintaxe semelhante
ao C#. Uma característica única do X++ é sua capacidade de acesso a dados na própria linguagem, que lembra o LINQ, para
mim a maior novidade da próxima versão do .Net framework.
AM: A IDE é o Visual Studio?
EM: Além de ser um ERP, com todas as funcionalidades comuns a este tipo de software, o Dynamics AX é uma plataforma de
desenvolvimento, que permite a customização, extensão e até criação de novas funcionalidades. Todas as ferramentas de
desenvolvimento, como a IDE e o debugger, estão integradas no próprio produto. Logo após a aquisição do produto, houve
um cuidado da MS em tornar estas ferramentas o mais parecidas possível de sua principal IDE, o Visual Studio. Com isto a
transição entre as duas ferramentas é bem tranquila e rápida.
AM: Se não for uma linguagem e IDE mainstream, poderia nos mostrar um exemplo de código e uma ima-
gem da IDE?
EM: Na foto ao lado tentei mostrar um pouco do ambiente de desenvolvimento que uso no dia-a-dia. A área 2 é o AOT, um
primo do Solution Explorer,
que lista todos os objetos
do AX, como tabelas, clas-
ses e formulários. Existe
também a possibilidade de
criar projetos para agrupar
apenas os objetos que são
importantes no momento.
A área 1 é o editor de códi-
go. Como se pode ver a
sintaxe do X++ é muito
parecida com o C#. Nas
caixas destaquei a integra-
ção com a camada de da-
dos, o X++ permite que um
loop em linhas de um select
seja feito diretamente.
4
Entrevista - Eduardo Miranda
Desenvolvimento em geral:
AM: O que é a DLR (Dynamic Language Runtime) e o que ela trás para o mundo .NET?
EM: Para mim o DLR é uma amostra da capacidade de evolução da Microsoft e da plataforma .Net. O conceito de plataforma
multi-linguagem é expandido para as linguagens dinâmicas e continua sendo um grande diferencial. Além disto, o DLR, junto
com o IronRuby, oferecem para a comunidade .Net a oportunidade de experimentar o poder das linguagens dinâmicas para a
criação de frameworks web e DSL (Domain-Specific Languages). Acredito também que este movimento mostra que a MS tem
capacidade de ouvir a comunidade de desenvolvedores e reagir as suas necessidades e desejos.
AM: Quais os utilitários que não devem faltar na máquina do desenvolvedor?
EM: Minha máquina tem tantos utilitários, sou o rei das bugigangas. Mas se eu tivesse que escolher um punhado destes para
levar para uma ilha deserta seriam:

Sobre a estrutura de desenvolvimento do AX:


AM: Como foi a montagem da primeira equipe de desenvolvimento da Microsoft no Brasil?
EM: A equipe começou com a escolha do gerente da área, Joel Pereira, que é Brasileiro, mas tem anos de experiência na
Microsoft em Redmond. Esta experiência foi fundamental para que o time se tornasse rapidamente produtivo e absorvesse a
cultura de desenvolvimento da Microsoft. O Joel, junto com o David Greenspoon, então General Manager da área, vieram ao
Brasil para um processo intensivo de entrevistas e seleção. Ao longo dos seis meses seguintes completamos o time com no-
vas contratações.
AM: Quais os fatores que levaram a Microsoft a criá-la?
EM: Não há dúvidas que o principal motivo foi ganhar competitividade no mercado brasileiro. O GDL (Global Development
Localization) vem buscando aumentar a competitividade dos produtos da linha Dynamics ao redor do mundo. O Brasil se
destaca pela complexidade das regras de negócio e também pela maturidade do mercado. Por isto se viu necessário criar este
time, que tem como prioridade implementar funcionalidades necessárias e desejadas pelos clientes no Brasil. Nosso objetivo é
fazer do Dynamics AX o melhor ERP do mercado brasileiro.
AM: Qual a metodologia usada na sua equipe de desenvolvimento? (Ex.: MSF, Scrum, XP, etc)
EM: A gerência do nosso time é feita utilizando SCRUM, mas nem sempre os sprints terminam em um release de nova ver-
são, pois temos que sincronizar a agenda de releases do produto globalmente. Fazemos parte de um time globalmente disper-
so, que trabalha paralelamente em funcionalidades dependentes entre si. Portanto, documentação é extremamente necessária.
Não utilizamos práticas como TDD ou pair programming, no entanto, aplicamos diversas práticas que já fazem parte da cultu-
ra da empresa, como revisão de código, nigthly builds seguidos de baterias de testes, períodos de estabilização antes do lança-
mento de um RTM e controle integrado de issue/versão.
AM: Como é composto o time local de desenvolvimento do AX? Estrutura, quantidade de colaboradores,
funções, etc.
EM: Nosso é time é estruturado como qualquer time de produto da Microsoft. As principais funções são: PM (Program Ma-
nager), responsável pelos requisitos; SDE (Software Development Engineer), desenha e desenvolve as funcionalidades; SDET
(Software Development Engineer in Test), responsável pelo desenvolvimento de testes; Content Publisher, responsável pela
documentação para os usuários. Cada uma destas disciplinas tem sua própria estrutura organizacional, ou seja, tem diferentes
gerentes diretos, mas reportam ao mesmo General Manager. Um detalhe importante é que a principal função de um SDET é
desenvolver testes automatizados e não executar testes manuais, o que é mais comum no Brasil.
5
Entrevista - Eduardo Miranda
Sobre o produto AX:
AM: Há um mercado no Brasil para a customização de soluções AX?
EM: A Microsoft está apostando no sucesso do Dynamics AX no Brasil. Como sempre os parceiros terão uma grande impor-
tância neste sucesso. Além das implantações e customizações, acredito que existe uma ótima oportunidade para a implemen-
tação de verticais e add-ons. Imagine uma pequena empresa de software que atende um segmento bem especializado com seu
próprio ERP. É difícil manter sua vantagem competitiva, pois, além de investir nas funcionalidades específicas, é preciso investir
nas funcionalidades básicas, como compras e contabilidade. Implementando esta vertical no AX a empresa pode focar na sua
área de know-how sabendo que a Microsoft está investindo constantemente no produto como um todo.
AM: O AX chega a estar preparado para lidar com a legislação brasileira quanto à emissão de notas e livros
fiscais ou isto está fora do escopo?
EM: Este é o objetivo do nosso time. Enquanto nós focamos as funcionalidades brasileiras, outros times trabalham forte nas
funcionalidades globais e na infra-estrutura. Acredito que esta seja a vantagem da Microsoft neste mercado. A evolução não
pára.
AM: O AX chega até o PDV (ponto de venda, POS Point of Sale)? A Microsoft tem soluções para isto no mer-
cado nacional?
EM: Esta é uma das grandes oportunidades para nossos parceiros hoje. Um mercado forte, até pelas exigências do governo,
que pode ser explorado tanto com a integração de uma solução de PDV ao Dynamics AX, quanto com o desenvolvimento de
uma solução na própria plataforma. O produto oferece ferramentas para as duas alternativas.
AM: A Microsoft pretende trazer os outros ERPs que ela tem no exterior para o mercado brasileiro?
EM: A Microsoft têm soluções ERP disponíveis em todo o mundo, inclusive o Brasil, sob a marca Dynamics.
Comunidade:
AM: Quais os blogs nacionais que você acompanha?
EM: Tento acompanhar a blogoesfera brasileira de perto. Tenho no meu rss reader 23 blogs em português. Mas o grande
problema é a inconsistência de nossos blogueiros. Fiz uma pesquisa rápida, para responder esta pergunta, e contei apenas sete
destes 23 publicaram alguma coisa nos últimos sete dias. Tento ser otimista, mas devo concordar com o Tarifa [2] que são
poucos blogs no Brasil com alguma informação relevante.

Cezar Guimarães: http://blogs.msdn.com/cguimar/default.aspx


Israel Aéce: http://weblogs.pontonetpt.com/israelaece/
Fabiano França: http://fabiano.tv/
Thiago Bohn http://blog.thiagob.com/
Paulo Quicoli: http://pauloquicoli.spaces.live.com/
Renato Guimarães: http://renatoguimaraes.spaces.live.com/
Alfred Myers http://thespoke.net/blogs/alfred_myers/default.aspx

AM: E os gringos?
EM: Acompanho vários blogs internacionais, em diversos assuntos. Tentei filtrar os que mais gosto de ler:
Ayende http://ayende.com/Blog
David Starr http://www.elegantcode.com/
Jeff Atwood http://www.codinghorror.com/blog/
Jeremy Miller http://codebetter.com/blogs/jeremy.miller/default.aspx
Joel Spolsky http://www.joelonsoftware.com/
Michael Feathers http://michaelfeathers.typepad.com/michael_feathers_blog/
Scott Hanselman http://www.hanselman.com/blog/
6
Entrevista - Eduardo Miranda
AM: Como você enxerga o papel dos grupos de usuários no eco-sistema de comunidades Microsoft no Brasil?
EM: As comunidades tiveram papel fundamental na divulgação de conhecimento da plataforma .Net no Brasil. Isto beneficia as
empresas, que precisam de profissionais qualificados, e os profissionais, que se posicionam melhor no mercado de trabalho.
Acho que o próximo desafio é levar a comunidade .Net para um novo nível de amadurecimento, fortalecendo o conhecimen-
to de arquitetura, design patterns e qualidade de código. Atingindo este nível de maturidade, será possível oferecer soluções
de alta qualidade com a produtividade já conhecida da plataforma .Net. Ai sim a competividade do profissional e das solu-
ções .Net será muito superior às concorrentes.

Referências:
[1] Entrevistas na Microsoft http://en.wikipedia.org/wiki/Microsoft_interview
Joel Pereira fala sobre o processo de seleção http://www.joelpereira.com/CategoryView.aspx?category=BDC%20(Brazilian%
20Development%20Center)
[2] http://blogs.vstsrocks.com.br/alexandretarifa/archive/2007/06/05/442.aspx

Eduardo Miranda (http://eduardomiranda.net/blogs/dotnet): Pós-


graduado em Análise de sistemas e mestre em Gestão Empresarial,
atuou no desenvolvimento de soluções na plataforma .Net frame-
work desde sua versão 1.0. Atualmente é Software Development
Engineer na Microsoft e faz parte do primeiro time de desenvolvi-
mento da empresa no Brasil.

Alfred Myers (alfred2007@yuma.com.br) - Premiado como Microsoft MVP em C# por


sua contribução à comunidade, obteve as certificações MCPD Enterprise Applications
Developer, MCSD .NET e MCITP Database Developer, entre outras, da Microsoft.
Durante os últimos 16 anos, desenvolveu sistemas para empresas como IG, WebMotors,
BM&F, CDHU, SEADE, Telebahia e revendas da AmBev e Coca-Cola.
Atualmente trabalha na ITGROUP onde se dedica ao desenvolvimento de sistemas distri-
buídos com o .Net Framework.
7 Artigo: Novidades do Windows Server 2008
O Windows Server 2008 (codinome Longhorn) será o novo sistema operacional para servidores da Microsoft em sucessão ao Windows Server 2003. Como
todos esperam, o lançamento de um sistema operacional introduz muitos componentes novos e a melhoria de componentes já existentes.
A Microsoft possui uma grande preocupação em re-utilizar todo o conhecimento já adquirido por desenvolvedores e profissionais de infraestrutura nas ver-
sões atuais e anteriores do produto. Assim, logo de imediato, podemos dizer que todo esse conhecimento adquirido por nós será precioso e útil para essa
nova geração.
Além disso, durante a fase de desenvolvimento de um produto tão complexo como um sistema operacional, uma das grandes preocupações é escutar a opinião
e os comentários das pessoas que utilizam esses softwares. Isto não é diferente da Microsoft, que possui diversas fases e métodos de interação com clientes,
parceiros, desenvolvedores, profissionais, etc. para entender o mercado e suas necessidades.
Atualmente em seu estágio Beta 3, O Windows Server 2008 está
disponível publicamente para download e testes (HTTP://
www.microsoft.com/getbeta3).
Logo de imediato, percebemos que o Windows Server 2008 foi
concebido para que diversos cenários reais do dia a dia pudessem
ser gerenciados de modo seguro e flexível. Assim, é fácil “agrupar”
algumas destas novas características baseado nesta linha de raciocí-
nio. A figura à esquerda ilustra essa idéia:

A partir de agora neste artigo passarei a descrever algumas destas


funcionalidades. Logicamente, uma documentação completa seria
muito mais extensa. Se você tem a necessidade e/ou curiosidade de
conhecer a maioria destas funcionalidades, recomendo a leitura do
Guia de Revisores do Windows Server 2008 Beta 3 que foi traduzi-
do para o português pela equipe do TechNet Brasil e está disponí-
vel gratuitamente para download.

CENÁRIO 1 - GERENCIAMENTO DO SERVIDOR

A tarefa de gerenciar e instalar um servidor foi drasticamente reduzida no Windows Server 2008 com a mudança de alguns conceitos e a
introdução de algumas ferramentas.

Logo durante a instalação do servidor, percebemos que não há mais a necessidade de se fornecer várias informações durante o processo de setup, tais como
nome da máquina, endereçamento IP, configurações de domínio, etc. Durante a instalação do Windows Server 2008, apenas a chave de registro e o local de
instalação (drive lógico) é solicitado. Assim, o processo de instalação é otimizado. Após o primeiro reboot, uma nova janela chamada de Tarefas de Configura-
ções Iniciais (Initial Configuration Tasks) é apresentada. Nesta janela, todas as configurações consideradas básicas e iniciais de um servidor podem ser efetua-
das a partir da mesma console, incluindo-se:
8 Artigo: Novidades do Windows Server 2008

Por falar em papéis de servidor, essa é outra mudança no gerenciamento de servidores. No Windows Server 2003 e 2000, a instalação e configurações de
funções ou papéis (tais como servidor de arquivos, impressão, WEB, etc.) eram efetuadas por diversas ferramentas (Adicionar ou Remover Programas, Geren-
ciador do Computador, Assistente de Configuração de Segurança, etc.). Isto acabava confundindo e muitas vezes duplicando o trabalho de administradores e
desenvolvedores de sistema. Assim, no Windows Server 2008, todo esse trabalho é efetuado a partir de uma console centralizada chamada “Gerenciador do
Servidor” (Server Manager).
Gosto de comparar o Server Manager a um jornal. Sua página inicial é a primeira página de um jornal, onde temos informações primordiais, tais como o status
do servidor, se há algum papel ou função que não está operando como esperado ou algum erro crítico. A partir desta interface, é possível acessar as “seções”
ou páginas secundárias, assim como um jornal de verdade. Através do Server Manager, as seguintes operações podem ser executadas:
Instalação ou remoção de papéis: papéis são funções principais de um servidor, tais como servidor de arquivos, impressão ou web. Há inclusive um novo
papel que vai interessar aos desenvolvedores chamado “Application Server” que é uma função que prepara o servidor para executar aplicativos baseados em
Microsoft .NET Framework 3.0 (WinFX). Você pode usar essa mesma função ou papel para executar outros tipos de aplicações, tais como COM+, Message
Queuing, Web Services e distributed transactions. Um ponto interessante
a ressaltar é que após a instalação inicial, nenhum papel está disponível por
padrão. É necessário que o administrador escolha e instale esses papéis e
ao fazer isto via Server Manager, essa função já será instalada em modo
seguro, seguindo todas as boas práticas da Microsoft. Isto significa, por
exemplo, que não é mais necessário se executar o Assistente de Configu-
ração de Segurança (Security Configuration Wizard) após a instalação ou
remoção de um papel;
Instalação ou remoção de Serviços de papéis (role services): um
“role service” pode ser definido como uma sub-função de um papel que
adiciona alguma característica em especial. Por exemplo, a função de servi-
dor de arquivos (role) pode ter ativado o serviço de DFS (Distributed File
System) que é uma role service deste papel, assim como para o a papel
Application Server, uma role service seria o COM+ Network Access.
Desta maneira, é possível efetuar uma configuração bem granular e con-
trolada, o que lhe fornecerá um servidor mais seguro e ajustado às neces-
sidades de seu cenário;
Instalação ou remoção de características (Features): podemos
definir uma feature como um componente que pode ser utilizado por
diferentes papéis, providenciando serviços auxiliares ou complementares. O serviço de Network Load Balancing, Windows Server Backup e .NET Framework
3.0 estão nesta categoria.

O último ponto deste cenário que gostaria de mencionar é que o Windows Server 2008 já vem preparado e com suporte para Windows Powershell. Diferen-
te dos sistemas operacionais anteriores, o Windows PowerShell é uma “feature” que pode ser instalada a partir do Server Manager. Não é necessário um
download separado da Internet nem quaisquer configurações especiais.
Para os administradores de sistemas, o Windows Powershell introduz uma nova maneira de gerenciamento. Podem-se criar scripts poderosos para gerencia-
mento em lote, tudo isto construído tendo como base o .Net CLR (common language runtime) e o .NET Framework. Isto significa que os desenvolvedores
estarão da mesma forma aptos a construírem scripts poderosos para gerenciamento de sistemas e servidores, ocorrendo uma ótima opor-
tunidade de integração entre profissionais de TI e desenvolvedores!!

CENÁRIO 2—PLATAFORMA PARA WEB

Um dos componentes principais deste cenário é sem dúvida o Internet Information Services (IIS) 7.0.
O servidor web foi reconstruído, tomando como princípios a modularidade e a flexibilidade de gerenciamento tanto para desenvolvedores como para profis-
sionais de TI. Podemos dizer que a plataforma Windows Server 2008 é uma plataforma preparada que integra IIS, ASP.NET, Windows Communication Founda-
tion e Windows Sharepoint Services. O IIS 7.0 é compatível com soluções existentes hoje. Todas as aplicações construídas em ASP, ASP.NET 1.1 e ASP.NET
2.0 devem funcionar sem problemas ou alteração de código (usando o suporte ISAPI compatível). Todas as extensões ISAPI e a maioria dos filtros ISAPI irão
também continuar funcionando, sem alterações. Apenas filtros ISAPI que se baseiam em notificações RAD RAW DATA não serão suportados. Scripts ADSI e
WMI também serão compatíveis com os novos modelos de configuração e gerenciamento. Como características principais do IIS 7.0, destacaria:
9 Artigo: Novidades do Windows Server 2008

Extensibilidade: os desenvolvedores podem agora “estender” e desenvolver seus próprios módulos para o IIS 7.0, de acordo com sua necessidade. Para isto,
podem utilizar não apenas código nativo (C/C++), mas também código gerenciado (linguagens tais como C# e Visual Basic ® 2005, que utilizam o .NET Frame-
work). Isto aperfeiçoa a curva de aprendizado e o tempo de desenvolvimento, permitindo que mais desenvolvedores interajam diretamente com o servidor
web. Como exemplos o desenvolvedor pode criar seu próprio módulo de logging, talvez complementando o log do IIS ou utilizando uma base SQL Server para
armazenamento destas informações. Pode-se também customizar a interface gráfica do IIS, criando-se novas abas, ícones, atalhos, etc. O site do time do pro-
duto do IIS (HTTP://www.iis.net) possui vários módulos desenvolvidos seguindo esse raciocínio, disponíveis para download;

Diagnósticos e Resolução de problemas: o IIS 7.0 possui um poderoso conjunto de APIs que são expostas via interface gráfica, linha de comando ou s-
cripts WMI / Windows Powershell que permitem o acompanhamento em tempo real de determinada requisição ou aplicativo. Utilizando o recurso de FREB
(Failed Request Event Buffer) é possível registrar a cada fase da requisição seu status e comportamento, criando-se uma maneira eficiente e segura de se resolver
o problema com uma aplicação mal-comportada ou mesmo algum parâmetro incorreto do servidor web;

Administração Delegável: o administrador do servidor web pode agora com o IIS 7.0 “delegar” certas operações para grupos ou usuários não-
administradores do servidor. Com o IIS 6, certas configurações só poderiam ser feitas pelo administrador do servidor; com o IIS 7, é possível que determina-
das configurações sejam delegadas a nível de sites, diretórios virtuais ou aplicações. Desta maneira, principalmente em ambiente de hosting, os ambientes ficam
isolados e um desenvolvedor não interfere nas configurações de outro desenvolvedor. Além disso, o tempo de administração do servidor fica otimizada, pois o
responsável pelo servidor pode dividir esse trabalho com sua equipe. Outro ponto importante é que essa administração pode ser feita por um administrador
ou desenvolvedor a partir de sua estação de trabalho. O time do IIS está trabalhando em um cliente que pode ser instalado em máquinas executando o Win-
dows XP ou Windows Server 2003 (e logicamente Windows Vista e Server 2008) que permite uma conexão remota segura (SSL) em um servidor web ou site
sem a necessidade de se utilizar um acesso via Remote Desktop, por exemplo. Isto otimiza também o trabalho da equipe de desenvolvedores e profissionais de
TI, principalmente se estamos falando de ambientes complexos com múltiplos servidores;

Segurança Otimizada através de Customização: o IIS 7.0 é totalmente modular: cerca de 40 módulos podem ser escolhidos um a um, o que proporcio-
na um servidor web totalmente customizável e modular de acordo com o cenário e necessidade da solução. Assim, se você precisa de um servidor web que
processe ASP.NET utilizando apenas certos módulos de autenticação, nada mais precisa ser instalado, apenas esses módulos. Isto garante uma segurança me-
lhorada, pois otimiza a superfície de ataque existente, melhora o desempenho, pois o número de módulos carregado na memória será menor e melhora o
gerenciamento, pois menos módulos instalados significam para o administrador de sistemas menos módulos a serem gerenciados (pense por exemplo no cená-
rio de gerenciamento de patches ou correções);

Distribuição de aplicações otimizado via Xcopy: todas as configurações do IIS 7.0 são armazenadas em arquivos web.config, o que significa que uma
simples operação de cópia entre servidores duplica e padroniza a configuração de servidores. Isto possibilita o cenário de “web farms”, onde esses arquivos
podem ser centralizados em uma pasta compartilhada e diversos servidores IIS 7.0 podem compartilhar essas configurações. Assim, uma alteração em apenas
um local significaria a implementação simultânea em diversos servidores. Para o desenvolvedor, outra grande oportunidade é que agora ao se instalar o serviço
do IIS, não mais uma conta de computador (seja ela local ou no Active Directory) é responsável por inicializar ou parar o serviço. Uma conta especial, com um
SID (Security Identifier) conhecido por sistemas operacionais Windows Server 2008 e Windows Vista é responsável por isto. Na prática, isto altera o com-
portamento do acesso anônimo (anonymous user), onde o permissionamento NTFS de arquivos e pastas é feito utilizando essa conta, o que significa que ao se
copiar dados de um servidor web para outro, não é mais necessário se preocupar em re-aplicar permissões NTFS.

Gerenciamento integrado de Web Services: o Windows Server 2008 possui um componente chamado WPAS (Windows Process Activation Service) que
suporta a ativação arbitrária de “listeners” de protocolos. O WPAS é responsável também, dentro do contexto do IIS 7.0, por controlar o funcionamento de
Application Pools, Worker Process e web sites (o que anteriormente no IIS 6 era de responsabilidade do serviço de WWW). Fora isto, é possível utilizar esses
contextos para aplicações não-HTTP. O que significa isto? Que aplicações construídas, por exemplo, em Windows Communication Foundation podem se be-
neficiar desta arquitetura e todas suas vantagens de isolamento de processos, gerenciamento e controle de erros, compartilhando uma mesma infraestrutura.
Assim, o IIS 7.0 e WPAS se tornam uma poderosa plataforma para aplicações web, sejam elas HTTP ou não.

Como já mencionado anteriormente, ainda no contexto de aplicações WEB, há uma nova função de servidor chamada “Application Server”, que habilita um
servidor Windows Server 2008 a ser otimizado e configurado para suportar aplicações desenvolvidas em padrões conhecidos. Os principais componentes
desta nova função são:
10 Artigo: Novidades do Windows Server 2008

Isto significa que agora os administradores de sistema e desenvolvedores poderão falar a mesma “língua” e preparar um sistema operacional com os compo-
nentes adequados e necessários de acordo com a necessidade de modo mais padronizado e gerenciável.

CENÁRIO 3-VIRTUALIZAÇÃO

O Windows Server 2008 já estará completamente preparado para cenários de virtualização de servidores. Isto significa que ambientes de
consolidação de servidores ou ambientes de teste e homologação de aplicativos, por exemplo, poderão se valer desta plataforma de imedi-
ato. Toda essa plataforma é construída em cima da tecnologia Windows Server Virtualization (WSv), evolução da plataforma Win-
dows Server 2003 + Virtual Server 2005, que possui como suas principais características:

Windows hypervisor: esta é uma camada de software muito fina que proporciona mais robustez em termos de segurança e gerenciamento. Através desta
tecnologia, não é mais necessário se trabalhar na arquitetura onde é necessário instalar um sistema operacional para hospedar as máquinas virtuais e mais uma
camada (um aplicativo, por exemplo, o Virtual Server 2005) para gerenciar esses recursos. Com Windows hypervisor, essa fina camada é responsável pelo
gerenciamento de acesso e compartilhamento de hardware. Essa tecnologia que não é baseada em códigos de terceiros ou drivers ajuda a criar um ambiente
mais estável e seguro.

Gerenciamento Dinâmico de Recursos: essa nova tecnologia pro-


porcionará a capacidade de adicionar recursos tais como CPU, memória,
redes e discos para as máquinas virtuais em tempo real, sem tempo de
parada.

Suporte a Guests 64 bits e multiprocessados: Windows Server Vir-


tualization suportará máquinas virtuais 64x, possibilitando uma escalabilida-
de muito maior do que ambientes atuais além de suportar máquinas virtu-
ais até oito processadores;

Migração ―ao vivo‖ de máquinas virtuais: esse procedimento, conhe-


cido como “live migration” permite move uma máquina virtual de uma
máquina física para outra sem tempo de parada. Essa característica, junta-
mente com tecnologias de failover clustering providencia alta disponibilida-
de flexibilidade para cenários como datacenter dinâmicos.

Acesso offline à VHD: é possível manipular um disco (formato VHD)


virtual de modo offline, realizando algumas operações sem a necessidade
de se estar executando uma máquina virtual que utilize esse HD.

CENÁRIO 4 - ACESSO CENTRALIZADO A APLICAÇÕES

No quesito Serviço de Terminal (Terminal Services) há muitas novidades também no Windows Server 2008, tanto para desenvolvedores
como para profissionais de TI que podem se valer destes recursos para otimizar a disponibilização de aplicações de modo centralizado e
seguro. Dentre elas, vale destacar as seguintes novas características.

Funções básicas: as seguintes características estão disponíveis para uma solução de Terminal Services rodando com Windows Server 2008 ( para se valer de
algumas destas funções é necessário ter instalado o cliente Remote Desktop Connection 6.0 - http://go.microsoft.com/fwlink/?LinkId=79373):

 Dispositivos portáteis baseados em Windows;

 Microsoft® Point of Service for Microsoft .NET devices;

 Monitores que suportam altas resoluções, tais como 1680x1050 ou 1920x1200;

 Múltiplos monitores;

 Experiência do Desktop com aparência do Windows Vista (AERO);

 Prioridade de banda, tais como não deixar que teclado e mouse sejam afetados por grandes tráfegos de trabalhos de impressão;
11 Artigo: Novidades do Windows Server 2008

Terminal Services Gateway: essa nova funcionalidade (implementada na forma de “role service”) permite que usuários autorizados se conetem em servido-
res de terminal a partir de localidades não-confiáveis, como por exemplo, Internet. O TS Gateway usa Remote Desktop Protocol (RDP) sobre HTTPS para
criptografar as conexões de usuários da Internet para a rede corporativa. Isto significa que você pode instalar um servidor para atuar como TS Gateway, instalá
-lo em um segmento de rede de perímetro e otimizar o acesso de seus clientes a partir da Internet, sem que esses precisem por exemplo, fechar uma conexão
VPN segura, uma vez que eles poderão trafegar seus dados com RDP sobre HTTPS;

Terminal Services RemoteAPP: basicamente, significa que agora você pode “publicar” uma aplicação instalada em um servidor Terminal Services sem a
necessidade de publicar o desktop como um todo, como era obrigatório nas versões anteriores. Isto traz uma experiência ao usuário muito melhor, pois na
prática, ele não vai perceber que a aplicação está rodando em um outro ambiente. Além disso, todos os redirecionamentos (discos, dispositivos, impressoras,
etc.) acontecem normalmente. É também possível associar as extensões de arquivos conhecidos (como por exemplo .doc) a essa aplicação remota (por exem-
plo, o Microsoft Word 2007 instalado em um servidor remoto). Essa funcionalidade pode ser acessada via publicação da aplicação com arquivos do tipo .MSI
(Windows Installer) ou .RDP (Remote Desktop) ou mesmo via browser através do recurso de TS Web Access (que é um webpart que pode ser customizável
por exemplo em uma intranet baseada em Sharepoint Services).

CENÁRIO 5 - ESCRITÓRIOS REMOTOS

O cenário de Escritórios Remotos (matriz -> filial) é um cenário muito comum nas estruturas atuais que merece atenção especial. Neste
cenário, a Microsoft providencia com Windows Server 2008 funcionalidades que melhoram o gerenciamento, controle e segurança do
ambiente, destacando-se:

Controladores de Domínio Somente Leitura (ou Read Only Domain Controllers - RODC): um RODC é um novo tipo de controlador de domí-
nio que possui sua base de dados do Active Directory (ntds.dit) somente leitura. Isto, em um ambiente matriz -> filial significa maior grau de segurança, uma
vez que, se o servidor ou a base forem comprometidos (roubados, por exemplo) em uma filial (que geralmente não possui o mesmo grau de segurança como
um datacenter central) as informações não poderão ser compromissadas. Por padrão, um RODC não armazena as senhas dos usuários em sua base local. Isto
pode ser configurado pelo administrador do ambiente de modo granular, definindo quais grupos ou usuários poderão ter suas credenciais armazenadas em um
RODC. Além disso, para efeitos de replicação do Active Directory, o processo é otimizado, uma vez que existe apenas replicação unidirecional (pelo fato que
o RODC não gera nenhuma alteração em sua base);

Bitlocker Drive Encryption: o mesmo recurso disponível no Windows Vista™ Enterprise e Ultimate está agora disponível também no Windows Server
2008, com a vantagem que volumes de dados também podem ser criptografados;

Server Core: Server Core é uma nova opção de instalação disponível no Windows Server 2008. É baseado no conceito de “instalação mínima” (o que muitos
costumam chamar de “somente prompt”) onde apenas os componentes essenciais para algumas funções do sistema operacional estarão disponíveis. Em termos
práticos, isto significa que alguns componentes tais como o Microsoft Internet Explorer, Microsoft Outlook Express e .NET Framework não estão disponíveis.
Isto cria um servidor mais enxuto especialmente desenhado para ambientes de escritório remoto, que muitas vezes necessitam de um servidor que desempe-
nhe um número reduzido de funções. Nas versões anteriores, mesmo que você não necessitasse de todas as funções do sistema operacional, você não tinha a
opção de escolher um sistema mais enxuto. Neste cenário em mente, um servidor com Windows Server 2008 com a opção de Server Core pode desempe-
nhar somente as seguintes funções:

 Servidor DHCP

 Servidor de Arquivos e Impressão

 Servidor de DNS

 Servidor de Active Directory Domain Services (o antigo Directory Services, conhecido agora como AD DS)

 DNS / DHCP

 Servidor de Active Directory Lightweight Directory Services (o antigo ADAM, conhecido agora como AD LDS)

 Media Server

 Windows Server Virtualization

 IIS 7.0 (sem suporte a .NET Framework)


12 Artigo: Novidades do Windows Server 2008

CONCLUSÃO E PRÓXIMOS PASSOS

Logicamente, há inúmeros outros cenários e características técnicas novas que podemos discutir. Por isso, a Microsoft vem trabalhando junto com parceiros e
clientes na capacitação técnica antecipada deste ecossistema. Inúmeras iniciativas já estão acontecendo para isto, tais como eventos presenciais, webcasts, fó-
runs de discussão, etc. Aconselho a consulta regular do site TechNet Brasil onde estamos centralizando todas as informações técnicas a respeito do Windows
Server 2008.

Uma delas que gostaria de chamar a atenção é o Microsoft TechNet Experience On-Line
Windows Server 2008 . Basicamente, é uma série de vídeos (em torno de 15 vídeos) dividi-
dos em quatro módulos. Cada vídeo descreve, por volta de 45 minutos um dos cenários ou
tópicos mais importantes do Windows Server 2008. Ao final de cada módulo, o profissional
pode testar seus conhecimentos através de um exame on-line e se aprovado nos quatro
módulos, recebe um certificado de conclusão, comprovando seu conhecimento adquirido.
Essa é uma maneira de se atualizar tecnicamente de modo prático e rápido, uma vez que
todo este conteúdo está disponível de modo on-line (com a possibilidade de download do
material) e gratuito. Aproveite e já se prepare tecnicamente !!!

Danilo Bordini é MCSE e MCSA em Windows 2000 / 2003. Trabalha na área de informática desde 1996, nos últimos
anos se especializando em ambientes de alta disponibilidade e soluções para Internet para clientes corporativos, onde
participou de vários projetos de implementações e migrações de sistemas operacionais, redes e serviços de diretório
para o ambiente Microsoft. Atualmente trabalha na Microsoft Brasil como IT Pro Expert, atuando juntamente com a
comunidade de profissionais de IT. Sua missão é contribuir com os profissionais e comunidades de Tecnologia a explo-
rar as funcionalidades e recursos da plataforma Microsoft.
13 Artigo: Gerente de projetos: uma nova ótica para
Da experiência na consultoria de empresas, o que se revela a base de toda problemática é a carência de conhecimento sobre o que real-
mente está acontecendo na dinâmica do projeto. Não se conhece o que acontece, não se conhecem as realidades que estão agindo naquele
momento a não ser pelos efeitos póstumos.
Não estamos falando de conhecimentos técnicos específicos, pois estes podem ser adquiridos facilmente. Estamos falando de liderança nos
projetos, na organização. Porque para além de toda a tecnologia a primeira referência de qualquer atividade é o individuo. A diferença no
sucesso de qualquer atividade não é mais devida apenas a técnica, mas ao indivíduo. Um dado incontestável é que o êxito de um projeto é
sempre verificação histórica de um homem.
Um novo projeto de software, infelizmente, possui uma enorme chance de ter resultados decepcionantes. O problema nasce do fato que
os projetos são iniciados sem levar em conta fatores humanos, ou melhor, criam-se expectativas sobre ferramentas, metodologias e pro-
cessos esquecendo que o que realmente faz um projeto funcionar são os seus participantes.
Quando estudamos propostas diferentes para este quadro geral, observamos no manifesto ágil:
_ “Indivíduos e interações ao invés de processos e ferramentas”.
Desta forma podemos definir que ser ágil é aplicar propostas diferentes para problemas antigos, sob uma nova ótica – a ótica humana. É
simples, é apenas uma nova abordagem.
Por exemplo, muitas empresas nestes últimos anos montaram escritórios de projetos (também conhecidos como PMO – Project Manage-
ment Office) com o objetivo de mudar alguma coisa no cenário dos resultados dos desenvolvimentos dos projetos. Aplicou-se um vasto
conhecimento de processos e construíram uma infinidade de controles. Na minha visão, passaram horas a fio estudando algo que já é evi-
dente, que todos têm certeza. “Os projetos estão com sérios problemas”.
Este tipo de ação orienta ao determinismo psíquico. Desta forma, uma causa gera um efeito, este efeito gera outro efeito e depois outro
efeito como um programa.
Meu objetivo neste artigo não é esgotar o assunto, sabendo-se que é vasto e polêmico. Ficarei imensamente feliz se eu conseguir sensibi-
lizar meu leitor a curiosidade de conhecer propostas diferentes.

Projeto e programa

Antes de continuar o artigo, acredito que seja muito válido explicar, ou melhor, especificar o sentido da palavra “projeto”. Na minha
leitura, torna-se fácil quando diferenciamos do conceito de programa.

O programa é uma série pré-impostada de eventos fixos, os quais produzem um determinado efeito. Se o projeto tem sempre, como no
caso do programa, o seu escopo específico, diferencia-se do primeiro pelo fato que no seu proceder é absolutamente variável.

Por exemplo: não é importante conhecer passagens intermediárias de quem tem a intenção de ir estudar na biblioteca; se o seu projeto
é esse, pode usar qualquer meio, passar por qualquer lugar, desde que permaneça fiel ao efeito final: estudar na biblioteca.

No programa, ao contrário, tudo é sistematicamente calculado. Onde passar, como e quando são fundamentais.

A máquina funciona por programas, enquanto o homem é capaz também de projetar.

Se trouxermos isso para um projeto de desenvolvimento de software, poderíamos:

Colher idéias sobre requisitos necessários ao nosso projeto;

Validar estas idéias, reduzindo-as ou especificando-as (tornando-as claras). Coloque-as numa lista que poderíamos apelidar de
“Product Backlog”;

Estimar e priorizar todos os itens da lista. Separe depois em conjuntos de funcionalidades que devem ser produzidas em determina-
do tempo. Vamos apelidar este conjunto que deve ser produzido em um tempo fixo de “sprint”;

Desenvolva;

Revise seu desenvolvimento;

Faça uma retrospectiva no final do conjunto de funcionalidades, colhendo fatos, avaliando o que foi bom e o que deve melhorar.
Parece simples. É simples. É a metodologia SCRUM. Nesta metodologia duas práticas são fundamentais ao gerente de projetos: Manter as
coisas simples e livrar-se de todos os impedimentos. Minha contribuição da dúvida para meu leitor imaginário é: como pode alguém que
está seguindo sistematicamente processos manter as coisas simples e livrar-se de todos os impedimentos?
14 Artigo: Gerente de projetos: uma nova ótica para
O novo gerente de projetos
Hoje, quem trabalha com projetos, é sobretudo um knowledge worker, ou melhor, uma pessoa que trabalha por métodos e não por pro-
cessos, sobre objetivos e não por horários.
Muitos processos tornam-se imediatamente obsoletos devido a novas características de negócios. A velocidade das mudanças impõe a exi-
gência de uma atualização contínua das competências e das habilidades. Para ser gerente de projetos hoje não se pode permanecer esclero-
sado em papéis, funções e modalidades operacionais que necessariamente devem confrontar-se com cenários mutáveis.
Um tipo de resultado positivo em um projeto só é totalmente repetível se permanecerem as mesmas pessoas e se tratar dos mesmos pro-
blemas. Em outras palavras, é inútil seguir um “script” de como gerenciar um projeto de desenvolvimento de software.
Eu particularmente acredito que no futuro próximo, a diferença fundamental entre os gerentes de projetos não será a bagagem de conheci-
mentos e experiências que soube acumular, organizar e renovar, mas sobretudo o método com o qual saberá continuamente capitalizá-los
em adaptação e evolução.
Se estudarmos MSF (Microsoft Solutions Framework), tanto MSF Essentials como MSF for Agile Software Development, encontraremos
uma descrição e uma lista de responsabilidades que devem ser efetuadas pelo gerente do projeto. A especificação de responsabilidades
claras para os papéis necessários de um projeto é um dos pontos fortes do MSF. Entretanto a informação sempre toma forma conforme os
olhos de quem a vê. Mesmo que eu e o meu leitor estudemos juntos, seriamente, tudo que é ensinado no papel MSF Project Manager,
agiremos de forma diferente dentro do projeto.
Em resumo, o sucesso como gerente de projetos não será pela quantidade de informação que se tem, e sim pelo modo útil de usar a infor-
mação em função do escopo do projeto.
É preciso compreender que o conhecimento diferencia-se em três:

Conhecimento explícito: é o conhecimento que pode ser catalogado. Facilmente


encontra-se em livros e artigos;
Conhecimento incorporado: é o conhecimento que você reproduz, seja com ação,
seja com direção, sem entender. É uma soma da informação com a intuição;
Conhecimento tácito: é um modo particular de entender que não é possível de ser
explicado.
Todos nós temos estes três tipos de conhecimento. Por isso, somos únicos em
determinada situação, somos parecidos em outra determinada situação. Agimos de
acordo com nossos tipos de conhecimentos.

Como trabalhar por métodos


O cenário no qual o colaborador é fundamentalmente um executor, guiado por processos e regras muito claras e das quais raramente se
desvia está se deslocando para um cenário no qual o colaborador tem cada vez mais responsabilidades, não trabalha mais com base em
horas, mas com base no alcance de certos objetivos.
Executores com regras claras é um cenário apropriado para o nível puramente operacional. Quando tratamos dos cargos estratégicos e
táticos, os livros sobre PMI, CMMI, RUP, TOC, MSF e SCRUM devem servir como um guia de técnicas e práticas que podem ser aplicados
para determinada situação, desde que você compreenda e transcenda.
Compreender é alcançar com inteligência o que está sendo ensinado no livro. Transcender é passar além dos limites de forma superior ao
que está sendo ensinado. Em outras palavras, construa em cima de ensinamentos que você compreendeu e terás resultados magníficos.
Não existe nenhum empresário que espere do gerente de projetos relatórios mostrando como estão os projetos em andamento. Relató-
rios, gráficos, controles, são todos menores comparados ao cliente satisfeito por um produto (que normalmente é o resultante de um
projeto) sendo entregue.
15 Artigo: Gerente de projetos: uma nova ótica para
Para trabalhar com base em métodos, verifica-se hoje que as propostas ágeis são as mais adequadas. Agilidade pode ser definida como "a
habilidade tanto para criar quanto para responder às mudanças, de modo a lucrar em um ambiente turbulento de negócios." (Jim Highsmi-
th, no livro "Agile Software Development Ecosystems").
Para identificar um gerente de projetos que trabalha por métodos, não utilize o critério de avaliar seus certificados técnicos, sua formação
acadêmica ou as empresas no qual trabalhou. Observe seus resultados. Observe como ele lidera. Não é ser gerente de projetos do ponto
de vista técnico, é ser gerente de projetos do ponto de vista realizador.

Considerações finais
A intensidade da mudança exigida das empresas para serem competitivas, remetem-nos a tornar indispensável a necessidade de formação
contínua e inovadora. Esta formação deve buscar respostas eficazes que se ponham “a priori” e não “a posteriori” como é observado em
praticamente todos os departamentos de informática. O resultado prático desta formação é preparar pessoas para saber dar, de tal modo,
respostas eficazes aos problemas – que mudam momento a momento.
O gerente de projetos deve ser cada vez mais um tipo de profissional que sabe gerir, mais individualmente do que em nível de categoria, as
próprias relações dos projetos. Ele deve acima de tudo saber que: O que realmente faz funcionar uma empresa são as pessoas.

Referências
Agile Software Development: The Cooperative Game by Alistair Cockburn;
Visual Studio Team System Rocks by Fábio Câmara, Clementino Mendonça e outros;
Software Engineering with Microsoft Visual Studio Team System by Sam Guckenheimer;
Agile And Iterative Development – A Managers Guide by Craig Larman.

Fábio Câmara (fabio.camara@fcamara.com.br): Microsoft MVP VSTS, MCT, MCSD .NET, MCTS - TFS, ITIL Founda-
tions, Certified SCRUM Master e MSF Practitioner, é professor e consultor. Seu lema é: Antes de investir em metodo-
logia, processos e ferramentas, lembre-se que o maior valor do seu projeto de software é o valor humano.
16
Artigo: Analisando tabelas utilizando DBCC ShowContig
Antes de começar a fundo o artigo, seria interessante nivelarmos os conhecimentos. Alguns termos que serão apresentados podem ser desconhecidos para
alguns leitores.
Fill Factor: É a porcentagem de espaço em branco utilizado na criação de cada página de dados.
Página de Dados: É onde ficam armazenados os dados das tabelas, cada página tem exatamente 8Kb e podem ter diversos registros, um registro deve
iniciar e terminar na mesma página.
Heap: É um conceito que representa o agrupamento de todas as páginas de uma tabela.
Extent: É um conjunto de 8 páginas, totalizando 64Kb (8 páginas de 8Kb).
Page Split: Ocorre quando os dados armazenados em uma página são divididos em duas, dei-
xando aproximadamente metade de cada página preenchida.
Index Clustered: É um índice físico que ordena os dados fisicamente na tabela, os dados são
colocados em ordem dentro do Heap. Uma analogia muito utilizada para exemplificar o index
clustered, é pensar em um dicionário. Os dados estão ordenados fisicamente.
Fragmentação: Quantidade de espaço em branco, existente no contexto que está sendo utili-
zado. Se falarmos de Fragmentação de Tabela, é o espaço em branco da tabela, se for Fragmenta-
ção de Página é o espaço em branco na página, e assim por diante.
Agora que já apresentamos os termos que poderiam ser novidades, vamos analisar a densidade
de uma tabela com 20.000 registros. Para isso, vamos acompanhar o código que utilizaremos
para analisar esta tabela. Primeira coisa cria-se uma tabela com um campo INT e dois campos
CHAR(100). Utilizei o tipo de dados CHAR para ele ocupar realmente as 100 posições pré-
definidas, substituindo por espaços os caracteres que faltam para completar as 100 posições.
A segunda coisa foi criar duas variáveis INT para utilizar no WHILE que populará a tabela com os
20.000 registros. A primeira variável é @CONT e a segunda é @TOTAL, iniciadas respectiva-
mente com 0 (zero) e 20000 (vinte mil). Depois é feito um WHILE para inserir dados na tabela.
Para analisar a tabela, utilizamos a ferramenta DBCC ShowContig. Esta ferramenta resulta na
analise das tabelas do banco. Caso a tabela tenha sido criada em um banco no qual exista outra tabelas, o resultado demonstrará a analise de todas as tabe-
las. Para chamar esta ferramenta, digite DBCC SHOWCONTIG e execute esta instrução. Vamos entender agora o que significam os principais resultados
obtidos.
Pages Scanned é a quantidade de páginas que foram consultadas, isso significa que esta tabela possui 541 páginas, mas não significa que
todas as páginas estão preenchidas completamente com 8Kb de informações.
Avg. Pages per Extent representa a média de páginas em cada Extent, lembrando que um Extent possui 64Kb.
Extent Scan Fragmentation é a média de porcentagem de fragmentação em cada Extent.
Avg. Bytes Free per Page apresenta a média da quantidade de Bytes livres em cada página. Neste resultado são 221.7 Bytes.
Avg. Page Density é a porcentagem média de densidade nas páginas. Densidade pode ser
entendida neste ponto como a quantidade ocupada pelos dados. O texto (FULL) é uma anali-
se que o SQL Server fez baseado a porcentagem, este texto pode variar de acordo com a por-
centagem apresentada.
A conclusão que conseguimos chegar, baseado na analise feita nos resultados da ferramenta DBCC
ShowContig é que a nossa tabela praticamente não está fragmentada e está com sua densidade de
dados bem alta. Este tipo de analise não segue um roteiro pré-definido especificando que um resultado
é bom ou ruim. A ferramenta apresenta os resultados da analise e o DBA ou o analista que está solici-
tando os dados chega a uma conclusão tomando como base o que pretende alcançar. Se o objetivo
desta tabela é realizar diversas consultas, uma tabela pouco fragmentada é ótima, pois são menos pági-
nas que devem ser consultadas para recuperar todos os dados. Já para tabelas que necessitam muitas
inserções, uma tabela fragmentada é mais rápida, pois sempre possui espaço em páginas e não é neces-
sário ocorrer Page Split antes da inserção. O Page Split só ocorre quando trabalhamos com Índice
Físico (index clustered) na tabela. Quando a tabela não possui um índice, o dado é armazenado em qual-
quer página dentro do Heap. Para evitar um Page Split em uma página, uma saída seria criar a tabela
com Fill Factor de 50%. Isso assegura que quando houver a necessidade de inserir um registro em uma
tabela, existe grande chance de já ter uma página com espaço suficiente para armazenar este registro.

Diego Nogare é Graduado em Ciência da Computação, Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento
Web com .NET. Colaborador do Portal Linha de Código. Co-Líder do grupo Codificando .NET. MCP e MCTS em SQL Server 2005. Pa-
lestrante em eventos da Microsoft, Codificando .NET e INETA BR.
RECORDAR É VIVER!
18
Artigo: Consumindo serviços WCF no AJAX
Uma das grandes partes do .NET Framework 3.0 foi o WCF - Windows Communication Foundation. Quando ele foi lançado, várias formas de acessar os servi-
ços WCF também foram disponibilizadas. Entre as formas, conhecidas como endpoints, podemos citar algumas, tais como: HTTP, TCP e MSMQ. Com a vin-
da do ASP.NET AJAX, surgiu a necessidade de consumir serviços WCF diretamente dentro deste tipo de aplicação.

Através do Visual Studio .NET 2008 e o .NET Framework 3.5, a Microsoft se preocupou com a necessidade de consumir serviços WCF no AJAX e aprovei-
tou esta oportunidade para criar um binding. Este binding, chamado de WebHttpBinding, trata-se de um novo tipo de binding que permite a criação de um
endpoint para ser consumido por aplicações AJAX. É basicamente algo semelhante ao BasicHttpBinding, com a exceção de que os dados são serializados em
formato JSON (JavaScript Object Notation). É bom dizer que esta classe está dentro do namespace System.ServiceModel do Assembly System.ServiceModel.Web.dll.

Para possibilitar a chamada de serviços WCF através do AJAX é necessário, primeiramente, a criação da estrutura do serviço, ou seja, a criação da Interface,
decoradas com os atributos ServiceContract e OperationContract; além disso, a criação de um arquivo *.svc para que seja possível acessá-lo. Até este momento,
não há nada de diferente em relação a criação de um serviço que será exposta via protocolo HTTP, usando como host o IIS. As mudanças começam efetiva-
mente a partir daqui, ou seja, a configuração do endpoint no arquivo Web.Config e do controle ScriptManager.

Como foi mencionado acima, devemos recorrer a utilização do binding webHttpBinding. O único detalhe que você deve se atentar é na configuração do beha-
vior do endpoint, onde devemos informar o elemento enableWebScript para habilitar o acesso via AJAX. O trecho de código abaixo ilustra a configuração do
serviço e do endpoint no arquivo Web.Config:

<system.serviceModel>
<services>
<service name="Usuario" behaviorConfiguration="SrvBehavior">
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
<endpoint
binding="webHttpBinding"
behaviorConfiguration="EdpBehavior"
contract="IUsuario"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SrvBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="EdpBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>

Defaulf.aspx

Uma vez configurado o serviço, chega o momento de consumí-lo no cliente, ou melhor, através do código Javascript. O primeiro passo é definir um controle
ScriptManager na página onde deseja consumir o serviço; esse controle gerencia as bibliotecas e arquivos de scripts e, entre outras funcionalidades, a geração
de proxies para o consumo de serviços via AJAX. Esse controle possui uma coleção de serviços chamada Services, onde cada um dos elementos, do tipo Servi-
ceReference, corresponde a um serviço que será exposto e consumido pelo cliente.

O próximo passo é, através do código Javascript, invocar o código no cliente. Assim como acontecia com o Client-Side Callbacks, você cria uma função que
servirá como ponto de entrada e será disparada através de um evento, também client-side; na implementação desta função, você efetivamente invocará o
serviço WCF, mas na verdade é método do proxy, que foi criado pelo controle ScriptManager. O proxy cria os métodos que são disponibilizados pelo serviço,
mas adiciona mais três parâmetros, que são: o ponteiro para um método de callback que será disparado quando o método retornar; um ponteiro para um
método que será disparado caso alguma exceção for disparada quando o método for executado e, finalmente, um objeto que servirá como contexto e será
passado para todos os métodos durante a execução. O código abaixo mostra a página ASPX devidamente configurada para invocar o serviço WCF:
19
Artigo: Consumindo serviços WCF no AJAX
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function ExibirBoasVindas()
{
var proxy = new tempuri.org.IUsuario();
proxy.BoasVindas('Israel', Resultado, null, null);
}

function Resultado(result)
{
alert(result);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/UserService.svc" />
</Services>
</asp:ScriptManager>
<input
id="Button1"
type="button"
value="button"
onclick="javascript:ExibirBoasVindas();" />
</form>
</body>
</html>

Web.Config

Como podemos notar, definimos o serviço WCF (arquivo *.svc) no interior do controle ScriptManager que será responsável por criar, em tempo de execu-
ção, o proxy para o consumo via AJAX. Já o tempuri.org trata-se do namespace padrão que é criado e, se você desejar visualizar o proxy que é criado, pode
acessar o serviço WCF da seguinte forma: http://localhost:1029/Projeto/UserService.svc/js, ou seja, adicionar o /js no final do endereço do serviço. Isso permitirá
que você efetue o download do proxy que é gerado em tempo de execução.
Chamadas entre domínios
É importante dizer que o objeto XMLHttpRequest não permite efetuar chamadas para serviços que
estão fora dos limites do servidor local. Sendo assim, você não poderá referenciar serviços que estão em
outros domínios ou sub-domínios e mudança de protocolos ou portas. Podemos, através da imagem
abaixo, visualizar essas restrições:

Como podemos ver, não podemos invocar qualquer serviço que está além da aplicação local mas, se
por algum motivo, desejarmos fazer isso, então devemos proceder da mesma forma que vimos no de-
correr deste artigo porém, o serviço WCF local que devemos criar, servirá de proxy para o serviço que está em algum outro local.

Conclusão: Os serviços WCF fornecem uma grande flexibilidade em cenários que precisam, de alguma forma, expor informações ou componentes para que terceiros
possam consumí-los. Finalmente, com a vinda do Visual Studio .NET 2008 e o .NET Framework 3.5, podemos agora invocar esses serviços através de aplicações AJAX,
garantindo assim uma interatividade muito melhor, sem a necessidade de recorrer a postbacks para a execução de recursos como estes.

Israel Aéce (Israel@projetando.net) - Microsoft MVP, MCP, MCAD, MCTS e MCT.


Fundador do site Projetando.NET (http://www.projetando.net). Atualmente atua como desenvolvedor de aplicações .NET. Blog: http://
weblogs.pontonetpt.com/israelaece/.
20

Coluna: XNA - Engines


Engines!
Mais potência pro seu game.

Salve Spartanos!
Aqueles que já iniciaram a aventura no mundo XNA, poderão contar com dezenas de engines para melhorar em todos os sentidos as características de
seus jogos.

Mas o que são engines?


Podemos definir como engines um pacote de bibliotecas para tratamento de elementos de um game, como: cenários, personagens, controles, sons, etc.
Acontece que tudo isso você pode fazer na “unha”, mas alguns engines extrapolam na criatividade e oferecem elementos fascinantes, como reflexos
automáticos, sombras, efeitos de luzes, detecção de colisões, criação dinâmica de cenários, entre outros. Tudo isso é realizado de maneira simples,
evitando uma longa jornada de programação para obter determinados efeitos.

No mundo XNA alguns engines ganham destaque:


Torque X - http://creators.xna.com/subscribers/torquex.aspx
Recursos de drag and drop para produzir games 2D, efeitos de scrolling, efeitos avançados de luz e shader, trata-
mento de colisões por polígonos, entre outros.
A versão disponível no XNA Creators Club é totalmente gratuita e permite explorar fortemente o potencial da
tecnologia.

EvoFx XNA - http://www.3devolution.net/EvoFxEngine/tabid/64/Default.aspx


Fiquei impressionado com os recursos de criação de cenários com vegetação vasta, criação dinâmica de partículas (exemplo: explosões, água, etc).

Nobres, façam uma visita no endereço http://www.facunte.com.br/xna para conhecer mais engines.

U-Há! U-Há!

Emerson Facunte
21
Coluna: BizTalk.
Em uma integração, é requisito fundamental que a troca de mensagens seja feita de forma eficiente em diferentes máquinas e
por meio de diferentes softwares. Internamente o BizTalk trabalha com o formato XML, que é um formato padrão de mercado.
É importante ter em mente que, para nossa infelicidade, nem sempre (ou quase nunca) as mensagens origem e destino estão no
Biztalk.ing
formato XML e que os protocolos de comunicação podem ser dos mais diversos. Em alguns casos recebemos um arquivo flat
file num servidor FTP e temos que enviar o resultado do processo como um IDOC ao SAP, por exemplo.
Felizmente o BizTalk Server 2006 dá suporte a uma grande variedade de protocolos e formatos de mensagem. Com ele pode-
mos enviar e receber mensagens de praticamente qualquer formato por quase todos os tipos de transporte imagináveis. Não
quero dizer com isso que exista algo impossível de ser feito no BizTalk e sim que algumas coisas serão feitas com mais facilidade
que outras.
Basicamente os artefatos disponíveis no BizTalk são: Schemas, Mappers, Pipelines e Orchestrations. Um dos documentos sugeri-
dos na coluna do mês passado explica detalhadamente todos esses artefatos, mas vamos resumir cada um deles:

Schemas (Esquemas)
Internamente o BizTalk trabalha apenas com documentos XML, os quais estão em conformidade com algum esquema XML. Para
tal é necessário que possamos definir esses esquemas. Schemas são, basicamente, definições da estrutura e dos tipos das infor-
mações de um documento e utilizam a linguagem XSD (XML Schema Definition).
Embora alguns Schemas sejam mais complexos, a grande maioria é simples e de fácil definição e a ferramenta usada para essa
definição é o Visual Studio 2005. Adicionalmente temos a nossa disposição wizards para auxiliar no processo de definição dos
schemas.

Mappers (Mapas)
É muito comum que o “documento de entrada” seja diferente do “documento de saída” em um determinado processo. É co-
mum que as informações contidas nos documentos recebidos sejam transferidas para os documentos enviados e, algumas vezes,
transformadas de alguma forma. O BizTalk Mapper pode ser utilizado para definir uma transformação, chamada de Mapa, de um
documento para o outro. O W3C definiu o XSLT (Extensible Stylesheet Language Transformation) como a forma padrão para
expressar esses tipos de transformações entre esquemas XML e, por esse motivo, os mapas no BizTalk Server 2006 são imple-
mentados como transformações XSLT.
Transformações mais complexas também são possíveis com a utilização de functoids. Um functoid é um grande conjunto de
código executável que pode definir, arbitrariamente, mapeamentos complexos entre esquemas XML. Algumas dessas transfor-
mações são bem comuns e o BizTalk Server 2006 inclui um número razoável de functoids incorporados.
Esses functoids padrão auxiliam o desenvolvedor a resolver a maioria absoluta dos problemas, com o scripting functoid funcionan-
do como um ótimo “coringa”Esse functoid pode acessar qualquer código que seja necessário, seja ele um assembly externo ou
código “inline”, escrito no próprio editor de configurações do functoid.
Além disso, é possível editar o XSLT em casos mais extremos.

Pipelines
Uma vez que o mecanismo do BizTalk Server 2006 trabalha somente com documentos XML internamente e que deve ser capaz
de lidar corretamente com as mensagens, é necessário fornecer um modo de converter outros formatos para o XML e conver-
ter para outros formatos a partir do XML. Este processamento pode envolver diversas etapas e, por isso, ele é realizado por
um pipeline de mensagens. Uma tradução livre possível para o termo pipeline é encanamento, ou seja, um cano por onde a men-
sagem vai passar que contém “um monte de código” que manipularão essa mensagem conforme a necessidade descrita nesse
código.
As mensagens de entrada são processadas por um pipeline de recebimento, enquanto as mensagens de saída são processadas
por um pipeline de envio. Outros serviços também podem ser exigidos, como a autenticação do remetente de uma mensagem.
O pipeline contém um ou mais componentes .NET ou COM (Component Object Model). Cada componente manipula uma
parte específica do processamento da mensagem.
O mecanismo do BizTalk Server 2006 fornece diversos componentes padrão que lidam com a maioria dos casos comuns. Se
isso não for suficiente, os desenvolvedores poderão criar componentes personalizados tanto para os pipelines de recebimento
quanto para os pipelines de envio.
22
Coluna: BizTalk.
Orchestrations (Orquestrações)
Sabemos que a lógica de um processo de negócios automatizado pode ser implementada com uma linguagem qualquer (C#, VB,
etc.). Sabemos também do desafio que é criar, manter e gerenciar processos de negócios complexos utilizando linguagens con-
Biztalk.ing
vencionais de programação. O BizTalk Server 2006 permite a criação gráfica de um processo de negócios.
Uma vez “desenhada” a orquestração no Visual Studio, depois de compilada, ela será automaticamente transformado em um
assembly padrão executado no .NET Framework.

Com esses artefatos é possível construir soluções BizTalk que atendam necessidades de Mensageria (Messaging) e Processos de
Negócio (Business Process). Na figura abaixo temos o fluxo “normal” das mensagens dentro do BizTalk:

Messaging
Normalmente uma solução de Messaging é feita somente com troca de mensagens entre duas ou mais aplicações. É como mos-
trado na figura acima, porém sem a “caixinha” que representa o Business Process (Orchestration).
O fluxo das mensagens numa solução de Messaging é mais ou menos o seguinte:

Os mapas podem ser aplicados no Port de recebimento ou no Port de envio da mensagem. Podemos ainda adicionar filtros
(pequenas “condições” ou regras de negócio “simples”, como o roteamento de mensagens baseadas em um determinado campo
do documento) para que as mensagens sejam encaminhadas para os seus destinos corretos.
23
Coluna: BizTalk.
Business Process
Algumas regras de negócio podem ser adicionadas no processo de transformação da mensagem (mapper). Contudo essas regras
seriam apenas aplicáveis nos casos onde a transformação atenda o requisito do negócio. Lógicas mais complexas precisam de
Biztalk.ing
outra abordagem: as orquestrações.
Como citado anteriormente, uma orquestração é uma representação gráfica do processo de negócio. Ela é “desenhada” no
Visual Studio, e depois de compilada com os outros artefatos da solução BizTalk, será automaticamente transformado em um
assembly.

A diferença básica entre as duas arquiteturas é que a solução de Messaging é aplicável a processos de troca de mensagens entre
aplicações enquanto que as orquestrações são indicadas para processos de negócio mais complexos e que precisam atender a
fluxos que a simples Mensageria não seria capaz de atender. Em outras palavras, podemos dizer que, nos processos onde as
regras de negócio não estejam “nas pontas”, as orquestrações são a solução adequada para implementação dessas regras de
negocio.

Nas orquestrações é possível implementar fluxos alternativos, tais como controle de exceção e fluxos de compensação para
uma infinidade de casos diversos. Isso, normalmente, não é possível em soluções de Mensageria.

É muito comum vermos soluções de Mensageria que utilizam incorretamente orquestrações. Também é muito comum encon-
trarmos soluções de Business Process que utilizam pipelines customizados (normalmente escritos em linguagens de programa-
ção como C#) que se encarregam de implementar a lógica de negócios e que não utilizam orquestrações.

Particularmente eu creio que esse tipo de solução não é, naturalmente, uma boa idéia e subverte o uso adequado dos artefatos
disponíveis. O uso adequado da ferramenta é proporcional ao sucesso da solução.

Além disso, as ferramentas gráficas de desenvolvimento desses artefatos presentes no Visual Studio 2005 são excepcionais e os
wizards que nos auxiliam no processo de definição dos schemas são muito produtivos.

Como “nem tudo são rosas”, é um engano achar que sempre será possível construir uma solução completa usando apenas as
interfaces gráficas sem escrever nenhum código. É mais comum do que possa parecer a necessidade de desenvolvimento (com
código C# ou VB) de functoids, pipelines customizados e até adaptadores específicos.

Cabe a cada desenvolvedor, ou ao arquiteto de soluções, definir o melhor caminho a ser seguido. E esse caminho pode levar ao
sucesso ou ao fracasso da solução.

Se você observar atentamente a figura acima verá que o Message Database não foi sequer citado hoje. O Message Database
(conhecido simplesmente por MessageBox) e os adaptadores serão assuntos para um futuro próximo. Aguardem.

Até a próxima !!!

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.....
24 Coluna: Desvendando o SQL Server
Pessoal,

Iremos a partir deste mes desvendar os segredos do SQL Server e seus “derivados” (Analysis Services, Integration Services,
Reporting Services, etc…), mas antes gostaria de agradecer o convite e me sinto extremamente honrado por participar desta
revista eletronica que irá mudar os rumos da história das publicações destinadas aos Developers brasileiros.
No mínimo o leitor deve estar se perguntando: “Porque colocaram esse sujeito para falar de SQL Server e porque falar sobre
esse assunto em uma revista de Developers ?”.
A primeira resposta é complicada, eu mesmo fiquei surpreso com o convite do grande mestre Alexandre Tarifa. Atuo profissio-
nalmente com SQL Server desde a versão 6.5, sempre estudando as versões que eram lançadas e suas novas features, consegui
obter certificações da Microsoft e da Oracle, virei noites estudando e resolvendo problemas em projetos complexos e não tão
SQL SERVER

complexos assim, sem prazos ou com prazos apertadíssimos, encarei muito DBA e Developer de Oracle falando que “Oracle é
o BANCO, se voce quer ganhar dinheiro, esquece isso e vem para o nosso mundo”. Nunca desisti do SQL Server e acabei co-
mo Consultor e Instrutor especializado em SQL Server.
Em relação ao fato de uma coluna mensal sobre esse excelente produto da Microsoft, a minha visão e que irei compartilhar com
voces, é de que tanto o produto SQL Server e o Visual Studio estão cada vez mais próximos e integrados, o que torno o apren-
dizado de ambos quase uma questão de sobrevivencia no mercado de trabalho.
Vamos deixar de lado essa conversa toda, e vamos ao que interessa; escrever e colocar a “mão na massa”. Pretendo escrever
pouco e ser bastante claro e objetivo para colocar em prática o que aprendemos por aqui. Mais hands-on é quase que impossí-
vel. Apertem os sintos e vamos desvendar o SQL Server!
Neste primeiro artigo, irei demonstrar uma característica nova do SQL Server 2005: Guardar seus dados de forma segura. Te-
nho notado que os Developers possuem muitas dúvidas sobre esse tema e irei demonstrar como é extremamente simples e
seguro.
O SQL Server 2005 fornece uma infra-estrutura para encriptação de dados, um nivel de segurança não existente em versões
anteriores do SQL Server. Essa nova característica encontra-se disponivel em todas as edições do produto (Express, Standard,
Workgroup, Developer e Datacenter).
Voce pode encriptar dados utilizando chaves simétrica ou assimétrica e certificados. Encriptação de dados é uma nova feature
bastante bem vinda pela comunidade que anteriormente, era obrigada a recorrer a software de terceiros ou desenvolver suas
próprias stored procedures para encriptar e decriptar os dados.
O lado negativo, fica para o alto impacto na performance, devido ao 'overhead' no processo. Essa nova feature do SQL Server
2005 trabalha baseado no "service master key" que é uma chave simétrica gerada automáticamente quando a instancia do SQL
Server é instalada (instancias default e nomeadas). Ela só pode ser aberta pelo usuário que inicializou o serviço do SQL Server.
O "engine" do banco de dados utiliza a "service master key" para encriptar senhas no linked server, string de conexões, contas
de usuários e a "master key" dos bancos de dados.
Existe a possibilidade de ter um backup da "service master key" ? Sim, voce pode gerenciar o backup e restore usando as seguin-
tes linhas de código:

BACKUP SERVICE MASTER KEY TO FILE = ENCRYPTION BY PASSWORD = 'password'


RESTORE SERVICE MASTER KEY FROM FILE = DECRYPTION BY PASSWORD = 'password'

Para recriar a chave:

ALTER SERVICE MASTER KEY REGENERATE

Lembrando sempre que apenas o SA ou usuários com permissão de sysadmin podem utilizar as linhas de código acima. É extre-
mamente recomendável realizar um backup em mídia e envia-lo para local seguro. Como se trata de uma hierarquia de chaves de
encriptação, o próximo nível é o "database master key" que, como o próprio nome diz, trabalha a nivel de banco de dados. Voce
pode criar uma chave simetrica no nivel do banco de dados para encriptar certificados e chaves. O 'database master key' é crian-
do usando a seguinte linha de código (atente para o fato de estar posicionado no banco de dados no qual deseja trabalhar com
os dados encriptados):
25 Coluna: Desvendando o SQL Server
USE ADVENTUREWORKS
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ´password´

O armazenamento do 'database master key' é realizado no banco de dados master e a chave é encriptada usando o 'service mas-
ter key'. A outra cópia é armazenada no banco de dados (no exemplo acima, em 'ADVENTUREWORKS').
O próximo nivel na hierárquia, é a encriptação a nivel da dados, que fornece duas opções de encriptação: chave simétrica e cha-
ve assimétrica.
Uma chave simétrica é um mecanismo de encriptação mais rápido para encriptar e decriptar dados. Voce pode utilizar chave
SQL SERVER

simétrica para dados que são constantemente acessados. A linha de código abaixo é um exemplo de criação da chave simétrica:

CREATE SYMMETRIC KEY WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'password'

O uso da senha não é obrigatório e recomendado, imagine utilizar a linha de código acima em diversas aplicações? A senha ficaria
exposta o que pode causar vulnerabilidade. Utilizarei neste artigo apenas para repassar ao leitor todas as funcionalidades disponi-
veis e como utiliza-las.
O algoritmo utilizado acima (AES_256) não é o unico, voce utilizar o DES e o TRIPLE_DES que fornecem uma chave mais
"forte". Para maiores informações sobre algoritmos, consulte o books online do SQL Server 2005.
A partir do momento que voce criou uma chave a nivel de dados, chegou o momento de encriptar e decriptar seus dados. Utili-
za-se as funções EncryptByKey e DecryptByKey no caso de chave simétrica.
A chave assimétrica é a combinação de uma chave privada com uma chave pública. É considerada muito mais "forte" que uma
chave simétrica, mas por outro lado, consome mais recursos do sistema. A linha de código abaixo é um exemplo da criação de
chave assimétrica:

CREATE ASSYMETRIC KEY WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = ´password´

Os algoritmos utilizados podem ser RSA_512, RSA_1024 e RSA_2048.


Para encriptar e decriptar dados, utiliza-se as funções EncryptByAsmKey e DecryptByAsmKey.
Certificado Digital é o mecanismo mais "forte" disponivel no SQL Server 2005. Um certificado de chave publica é assinado digi-
talmente e associado uma uma identidade de usuário, dispositivo ou serviço que armazena a chave privada. Ou seja, a chave
publica, como o próprio nome informa é de conhecimento publico e serve para decriptar, a chave privada faz o inverso; decripta.
Esse modelo é amplamente utilizado e segue as normas X.509. Por ser extremamente seguro, o impacto na performance tam-
bém é sentida devido ao overhead quando se encripta e decripta os dados. A linha de código abaixo é um exemplo de criação do
certificado:

CREATE CERTIFICATE WITH SUBJECT = 'subject_do_certificado'

As funções utilizadas são EncryptByCert e DecryptByCert.


Vamos colocar tudo em prática? Pois bem, iremos fazer o seguinte: Encriptar e decriptar uma coluna usando encriptação simétri-
ca. Utilizando o banco de dados de exemplo do SQL Server (AdventureWorks) iremos adicionar uma coluna chamada
"Comentarios" na tabela JobCandidates que utiliza o schema 'HumanResources'. O objetivo é manter os dados do campo
"Comments" encriptados. Na prática, a coluna será encriptada usando chave simétrica protegida com certificado digital.

Faremos os seguintes passos:


1) Criar a infra-estrutura da chave, ou seja, a "database master key", criar o certificado e a chave simétrica;
2) Encriptar os dados;
3) Decriptar os dados.
26 Coluna: Desvendando o SQL Server
Utilizaremos o SSMS (SQL Server Management Studio) para realizar nos estudos.
Digite o seguinte código para criar a "database master key":

USE ADVENTUREWORKS
GO
CREATE MASTER KEY ENCRYPTION BY PASSOWRD = '1234567890'
GO
SQL SERVER

Crie o certificado que iremos utilizar para encriptar a chave simétrica:

CREATE CERTIFICATE MeuCertificado


WITH SUBJECT = 'Comentarios do candidato'
GO
CREATE SYMMETRIC KEY ChaveComentario
WITH ALGORITHM = DES
ENCRYPTION BY CERTIFICATE MeuCertificado
GO

Até o momento, o passo 1 foi realizado com sucesso. Vamos agora encriptar e decriptar os dados. Mas antes precisamos incluir
o campo 'Comentarios' na tabela JobCandidates:

ALTER TABLE HumanResources.JobCandidate


ADD Comentarios varbinary(4000)
GO

O momento agora é crucial, e muitos Developers e DBAs ficam na dúvida porque não conseguem encriptar seus dados. A solu-
ção é simples, antes de se utilizar as funções que citei acima para encriptar e decriptar, é necessário "abrir" a chave utilizando o
certificado gerado acima.

OPEN SYMMETRIC KEY ChaveComentario


DECRYPTION BY CERTIFICATE MeuCertificado

Agora sim iremos fazer uma atualização na coluna 'Comentários' utilizando a função de encriptação:

UPDATE HumanResources.JobCandidate
SET Comentarios = EncryptByKey(Key_GUID(´ChaveComentario'), 'Esta informacao será encriptada e decriptada')

Consulte a tabela JobCandidate para ver a coluna 'Comentários' encriptada:

SELECT JobCandidateID, Comentários FROM HumanResources.JobCandidate


27 Coluna: Desvendando o SQL Server
Neste momento vem a seguinte pergunta: E agora? como faço para visualizar os dados da coluna 'Comentarios'?
Como tudo no SQL Server é simples, não seria agora que as coisas se tornariam dificeis, concordam?

Para acessar os dados na coluna encriptada, precisamos decriptar a coluna, mas antes precisamos abrir novamente a chave sime-
trica usando o certificado:

OPEN SYMMETRIC KEY ChaveComentario


DECRYPTION BY CERTIFICATE MeuCertificado
SQL SERVER

Simples, não? Vamos ao select para conferir:

SELECT JobCandidateID, CONVERT(VARCHAR, DecryptByKey(Comentários))


FROM HumanResources.JobCandidate

Voce pode criar uma view para o código acima, tornando mais fácil a sua utilização:

CREATE VIEW vJobCandidate


AS
SELECT JobCandidateID, CONVERT(VARCHAR, DecryptByKey(Comentários))
FROM HumanResources.JobCandidate

Desta forma, bastaria utilizar:

SELECT * FROM vJobCandidate

Para completar o conteúdo deste artigo, recomendo enfáticamente a leitura no Books Online dos seguintes tópicos:

BACKUP SERVICE MASTER KEY


RESTORE SERVICE MASTER KEY
ALTER SERVICE MASTER KEY
CREATE MASTER KEY
CREATE CERTIFICATE
CREATE SYMMETRIC KEY
OPEN SYMMETRIC KEY

Ficaremos por aqui, no próximo artigo começaremos a desvendar o uso de XML com SQL Server.

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.
28
Coluna: Coluna de Qualidade
Na última coluna demonstrei com exemplos uma técnica básica para isolar dependências e tornar o código fonte mais
flexível tanto para realizar testes como manutenções. Você deve ter percebido que muitos dos códigos que antes você
achava “intestáveis” na sua máquina de desenvolvimento, como aqueles que acessem utilizam grandes dependências
(bancos de dados, listas do sharepoint, dispositivos de hardware, sistemas em outras plataformas) já não são mais tão difí-
ceis de lidar.
Hoje gostaria de demonstrar uma alternativa para aquelas situações onde a dependência está tão atrelada ao sistema que
seria muito complicado utilizar um objeto falso.
Vamos exemplificar: A imagem abaixo contém o encadeamento de chamadas para um sistema de cadastro de clientes.
Durante o projeto do sistema o desenvolvedor reutilizou toda a lógica de persistência com um web service coorporativo
Qualidade

de cadastro de clientes montado por outra equipe de desenvolvimento. Este web service está inclusive em outra rede já
que o banco de dados foi separado da rede do site por questões de segurança, essa configuração é muito comum para
aplicações expostas na Internet.
Além disso, o site propriamente dito é composto por três camadas: a página aspx, um componente de lógica de negócio
(Business Logic Layer) e um componente de acesso a dados (Data Access Layer) que realiza a chamada ao web service.

CadastroCliente.aspx BLLCadastroCliente DALCadastroCliente WebServiceCadastroCliente

CadastrarCliente

CadastrarCliente

CadastrarCliente

Ok

Ok

Ok

Nesta situação o grande problema é que aplicar a técnica de substituir a dependência do web service é trabalhoso. No
nosso aplicativo de testes seriamos obrigados a passar um objeto “FalsoWebServiceCadastroCliente” por todas as classes
da hierarquia (BLLCadastroCliente e DALCadastroCliente) e rapidamente o código ficaria consideravelmente mais compli-
cado apenas para permitir a substituição da dependência. Sabemos que esse é um exemplo bem simples, muitas vezes
nossos objetos possuem dependências de classes “difíceis de testar” em chamadas que encadeiam muitas vezes seis ou
sete métodos. O código simplificado do exemplo seria algo como o seguinte:

public class BLLCadastroCliente


{
private DALCadastroCliente dal = new DALCadastroCliente();
public bool CadastrarCliente(string Nome)
{
return dal.CadastrarCliente(Nome);
}
}
public class DALCadastroCliente
{
public bool CadastrarCliente(string Nome) {
localhost.Service wsCadastrarCliente = new localhost.Service
();
return wsCadastrarCliente.CadastrarCliente(Nome);
}
}
29
Coluna: Coluna de Qualidade
O primeiro passo é criar uma interface para permitir a substituição da dependência, como você pode ter percebido na
última coluna interfaces ou subclasses são a única maneira para permitir essa flexibilidade. Vamos então alterar o código:

public interface ICadastroCliente


{
bool CadastrarCliente(string Nome);
}
public class CadastroClienteWS : ICadastroCliente {
public bool CadastrarCliente(string Nome)
Qualidade
{
localhost.Service wsCadastrarCliente = new localhost.Service
();
return wsCadastrarCliente.CadastrarCliente(Nome);
}
}

public class DALCadastroCliente


{
public bool CadastrarCliente(string Nome)
{
ICadastroCliente cadastro = new CadastroClienteWS();
return cadastro.CadastrarCliente(Nome);
}
}

Ótimo, agora precisamos de uma maneira de substituir a classe CadastroClienteWS sem modificar todas as classes do
projeto. Para isso podemos utilizar um padrão de projeto chamado “Singleton” descrito no livro obrigatório para todos
os desenvolvedores: Design Patterns de Gamma, Helm, Johnson e Vlissides, também conhecidos como Gang Of Four.
Como podemos ver no exemplo abaixo um Singleton nada mais é que uma classe que garante que apenas uma instância
sua seja criada, já que armazena toda informação de estado do objeto em variáveis static (ou shared no Visual Basic)

public class LocalizadorDeServicos


{
protected LocalizadorDeServicos() { }
protected static LocalizadorDeServicos instancia = null;

public static LocalizadorDeServicos getInstancia()


{
if (instancia == null)
instancia = new LocalizadorDeServicos();
return instancia;
}
private Dictionary<string, object> providers = new Diction-
ary<string, object>();
public object localizar(String nomeServico)
{
return providers[nomeServico];
}
public void registrarServico(object provider, String nomeServico)
{
if (providers.ContainsKey(nomeServico))
{
providers.Remove(nomeServico);
}
providers.Add(nomeServico, provider);
}
}
30
Coluna: Coluna de Qualidade
A tarefa desta classe é manter uma classe armazenada para cada serviço, de modo que ela possa ser recuperada pelo no-
me, talvez ao ver o código alterado da classe DALCadastroCliente as coisas fiquem um pouco mais claras:

public class DALCadastroCliente


{
public DALCadastroCliente() {
LocalizadorDeServicos.getInstancia().registrarServico(new Ca-
dastroClienteWS(), "CadastroCliente");
}
Qualidade
public bool CadastrarCliente(string Nome)
{
ICadastroCliente cadastro = (ICadastroCliente)
LocalizadorDeServicos.getInstancia().localizar("CadastroCliente");
return cadastro.CadastrarCliente(Nome);
}
}

Agora o método CadastrarCliente não tem a classe CadastroClienteWS mais fixa, e nós podemos substituí-la diretamente
no LocalizadorDeServicos ao invés de passá-la como parâmetro por toda a cadeia de chamadas. Vamos criar o código de
testes e uma classe para substituir o web service:

class Program
{
static void Main(string[] args)
{
BLLCadastroCliente cadastro = new BLLCadastroCliente();
if (cadastro.CadastrarCliente("Eduardo"))
Console.WriteLine("OK");
else
Console.WriteLine("ERRO");
}
}
public class CadastroClienteFalso : ICadastroCliente
{
public bool CadastrarCliente(string Nome)
{
return Nome.Length != 0;
}
}

Para realizar a instalação desta falsa classe eu agora apenas preciso acessar o LocalizadorDeServicos e chamar o método
registrarServico para sobrescrever a classe registrada no construtor de DALCadastroCliente pela minha classe falsa:

class Program
{
static void Main(string[] args)
{
BLLCadastroCliente cadastro = new BLLCadastroCliente();
LocalizadorDeServicos.getInstancia().registrarServico(new Ca-
dastroClienteFalso,"CadastroCliente");
if (cadastro.CadastrarCliente("Eduardo"))
Console.WriteLine("OK");
else
Console.WriteLine("ERRO");
}
}
31
Coluna: Coluna de Qualidade
Perfeito! Conseguimos fazer com que a classe DALCadastroCliente funcionasse com uma dependência substituída sem
precisar alterar a classe BLLCadastroCliente com a ajuda de LocalizadorDeServicos que trocou a instância padrão Cadas-
troClienteWS por CadastroClienteFalso!
Novamente eu poderia criar testes para a solução sem que o web service estivesse disponível ou para verificar situações
extremas como tratamento exceções e ainda por cima fornecer extensibilidade até mesmo de código real, como trocar a
chamada de web service para .NET Remoting, por exemplo, apenas criando uma nova classe que implemente ICadastro-
Cliente.
Segue abaixo todo o código para que você observe a substituição no seu Visual Studio, debugue no passo-a-passo, tente
criar uma nova classe ICadastroCliente, comente no programa de testes a linha que registra a classe falsa em Localizador-
Qualidade

DeServiceos, enfim brinque um pouco com o código:

class Program
{
static void Main(string[] args)
{
BLLCadastroCliente cadastro = new BLLCadastroCliente();
LocalizadorDeServicos.getInstancia().registrarServico(new Ca-
dastroClienteFalso(),"CadastroCliente");
if (cadastro.CadastrarCliente("Eduardo"))
Console.WriteLine("OK");
else
Console.WriteLine("ERRO");
}
}
public class BLLCadastroCliente
{
private DALCadastroCliente dal = new DALCadastroCliente();
public bool CadastrarCliente(string Nome)
{
return dal.CadastrarCliente(Nome);
}
}
public interface ICadastroCliente
{
bool CadastrarCliente(string Nome);
}
public class CadastroClienteWS : ICadastroCliente {
public bool CadastrarCliente(string Nome)
{
//Comentado já que você não possui o web service
//localhost.Service wsCadastrarCliente = new localhost.Service
();
return false; // wsCadastrarCliente.CadastrarCliente(Nome);
}
}
public class CadastroClienteFalso : ICadastroCliente
{
public bool CadastrarCliente(string Nome)
{
return Nome.Length != 0;
}
}
32
Coluna: Coluna de Qualidade
public class DALCadastroCliente
{
public DALCadastroCliente() {
LocalizadorDeServicos.getInstancia().registrarServico(new Ca-
dastroClienteWS(), "CadastroCliente");
}
public bool CadastrarCliente(string Nome)
{
ICadastroCliente cadastro = (ICadastroCliente)
LocalizadorDeServicos.getInstancia().localizar("CadastroCliente");
Qualidade
return cadastro.CadastrarCliente(Nome);
}
}
public class LocalizadorDeServicos
{
protected LocalizadorDeServicos() { }
protected static LocalizadorDeServicos instancia = null;

public static LocalizadorDeServicos getInstancia()


{
if (instancia == null)
instancia = new LocalizadorDeServicos();
return instancia;
}
private Dictionary<string, object> providers = new Diction-
ary<string, object>();
public object localizar(String nomeServico)
{
return providers[nomeServico];
}
public void registrarServico(object provider, String nomeServico)
{
if (providers.ContainsKey(nomeServico))
{
providers.Remove(nomeServico);
}
providers.Add(nomeServico, provider);
}
}

Espero que você tenha se aventurado a incorporar algumas destas idéias nos seus projetos e eu gostaria muito de feed-
back sobre as suas experiências, ganhos e dificuldades através de e-mail ou do meu blog.

Os leitores que tem familiaridade com ferramentas utilizadas para testes unitários como NUnit ou Unit Tests do Visual
Studio talvez gostariam de mais conteúdo sobre ferramentas para automatizar ou simplificar a criação dos testes, no en-
tanto eu acredito que a maioria dos desenvolvedores precisa primeiro de uma ajuda nestes conceitos de design. Nós che-
garemos lá. Até a próxima!

Eduardo Mendonça Gomes (edugomes@codificandomagazine.net) é consultor de tecnologias Microsoft e


de qualidade de software na ITGROUP. Você pode encontrar outras informações sobre qualidade e notícias sobre
desenvolvimento em seu blog em http://edumgomes.blogspot.com/
33
Coluna: Introdução ao Silverlight...
Com o .net Framework 3.0, a Microsoft trouxe uma nova tecnologia de interfaces para aplicações desktop e web : o
WPF. Baseado em arquivos XML especiais (os arquivos XAML) e com inúmeros recursos, como animações, ligação
de dados, estilos para os componentes, layouts dinâmicos, 3D e visual rico, entre outros, ele veio para revolucionar
o desenvolvimento de aplicações.

Porém, o uso do WPF na web tem uma limitação: ele só roda em Internet Explorer 6 ou 7, para Windows com
o .net Framework 3.0 instalado, o que limita bastante a distribuição das aplicações. Para que uma tecnologia se popu-
larize, é necessária a possibilidade de executar os programas em qualquer browser e em todas as plataformas. A
resposta a isso veio com o irmão mais novo do WPF, o Silverlight. Baseado na mesma tecnologia do WPF, ele con-
silverlight
tém uma parte do XAML que permite criar programas com animações, estilos e visual rico para Internet Explorer,
Firefox ou Safari, nas plataformas Windows ou Mac. Para isto, basta apenas que o usuário baixe um plugin de 1MB!

O Silverlight foi lançado em duas versões: a 1.0, que está em beta e deve ter sua versão final em breve, se integra
com o Javascript e com os elementos da página, e a versão 1.1, que está em alfa e tem lançamento previsto para o
final de 2007 ou para o ano de 2008, permite que se escreva código gerenciado em linguagens .net, como C# ou
VB.net, ou ainda IronPyton, IronRuby ou managed JScript. Assim, com a versão 1.1 do Silverlight, podemos escrever
programas .net que rodam em Mac, bastando apenas que o usuário baixe um plugin de 4MB!

Você deve estar dizendo: isto parece bom, mas por onde começo? O ideal é conhecer um pouco da linguagem de
markup que está por trás do WPF e do Silverlight, o XAML (pronuncia-se zémel). Esta é um tipo de linguagemXML
que determina os elementos da página. Você pode criá-los com qualquer editor de texto, inclusive o bloco de notas
do Windows.

Porém, o melhor é usar um editor que permita visualizar o conteúdo que está sendo gerado. Alguns editores simples
são o XamlPad, que é instalado com o SDK do Windows (http://www.microsoft.com/downloads/details.aspx?
familyid=C2B1E300-F358-4523-B479-F53D234CDCCF&displaylang=en) , o XamlCruncher (http://wpf.netfx3.com/
files/folders/developer/entry1002.aspx) ou o Kaxaml (http://notstatic.com/archives/49). Para usar qualquer um destes
três editores, você precisa ter instalado o .net Framework 3.0 – ele já vem instalado no Vista, mas precisa ser baixa-
do em http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-
25634C3BF043&displaylang=en, para o XP.

Além destes editores, você pode usar o SilverlightPad (http://silverlight.net/samples/1.0/Silverlight-Pad/default.html).


Neste caso, temos um editor escrito em Silverlight 1.0, que demonstra o poder da ferramenta e roda no browser,
precisando apenas do plugin, que pode ser baixado em http://msdn.microsoft.com/vstudio/eula.aspx?id=fbc0ab04-
4ad9-664d-07f4-d4592dd8e157 e, inclusive, tem os fontes disponíveis.
Agora que você já tem um editor, vamos criar nosso primeiro arquivo XAML:

<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800" Height="600">
<Ellipse Width="100" Height="100" Stroke="Blue"
StrokeThickness="10" Fill="Yellow" />
</Canvas>

O elemento raiz é o Canvas: ali iremos colocar os elementos da página. Incluímos os namespaces onde são definidos
os elementos Silverlight e o tamanho da página: 800 x 600. Dentro do Canvas, adicionamos um círculo de diâmetro
100, preenchida com a cor amarela e borda azul, de espessura 10. Se você está usando o Silverlight Pad, ao clicar o
botão Load, pode ver que o desenho é mostrado na parte superior da janela.

Podemos melhorar nosso desenho, deixando a borda e o preenchimento como gradientes:


34
Coluna: Introdução ao Silverlight...
<Ellipse Width="100" Height="100" StrokeThickness="10">
<Ellipse.Stroke>
<LinearGradientBrush>
<GradientStop Color="White" Offset="1.0"/>
<GradientStop Color="Navy" Offset="0.0"/>
</LinearGradientBrush>
</Ellipse.Stroke>
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Color="White" Offset="0.0"/>
silverlight
<GradientStop Color="Navy" Offset="1.0"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>

Com o .net Framework 3.0, a Microsoft trouxe uma nova tecnologia de interfaces para aplicações desktop e web : o
Aqui criamos dois gradientes invertidos: o gradiente da borda tem cor azul no início e branca no final (dados pela
propriedade Offset, enquanto que o preenchimento tem a cor branca no início e azul ao final.

Em seguida, vamos acrescentar uma animação à elipse: isto é feito incluindo-se um Storyboard, que é ativado quando
o Canvas é carregado:

<EventTrigger RoutedEvent="Canvas.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="(Canvas.Left)"
From="0" To="500" Duration="0:0:10"
RepeatBehavior="Forever" AutoReverse="True" />
<DoubleAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="(Canvas.Top)"
From="200" To="0" Duration="0:0:3"
RepeatBehavior="Forever" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Canvas.Triggers>
35
Coluna: Introdução ao Silverlight...
Nesta animação estamos animando duas propriedades: a posição horizontal (Canvas.Left) e a posição vertical
(Canvas.Top). A posição Horizontal varia de 0 (From) a 500 (To), tem duração (Duration) de 10 segundos, repete-se
(RepeatBehavior) indefinidamente e faz o movimento de vai-e-volta (AutoReverse). A posição vertical é animada de
maneira semelhante, de 200 até 0, em 3 segundos. Isto faz que a elipse faça um movimento de zigue-zague pela tela.
Nas animações, estamos indicando que o elemento que estamos animando tem o nome de Ellipse, portanto precisa-
mos dar o nome a ela, com a propriedade x:Name:

<Ellipse Width="100" Height="100" StrokeThickness="10" x:Name="Ellipse">

Assim, finalizamos o arquivo e temos uma elipse que se movimenta na tela, sem que tenha sido necessário escrever
código (code-behind) para isso. O código final é:
silverlight

<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800" Height="600"> <Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="(Canvas.Left)"
From="0" To="500" Duration="0:0:10"
RepeatBehavior="Forever" AutoReverse="True" />
<DoubleAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="(Canvas.Top)"
From="200" To="0" Duration="0:0:3"
RepeatBehavior="Forever" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Canvas.Triggers>
<Ellipse Width="100" Height="100" StrokeThickness="10"
x:Name="Ellipse">
<Ellipse.Stroke>
<LinearGradientBrush>
<GradientStop Color="White" Offset="1.0"/>
<GradientStop Color="Navy" Offset="0.0"/>
</LinearGradientBrush>
</Ellipse.Stroke>
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Color="White" Offset="0.0"/>
<GradientStop Color="Navy" Offset="1.0"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
</Canvas>
Como pudemos ver, o XAML é uma linguagem de markup muito poderosa, com recursos que permitem desenhar e
manipular os elementos da página. No próximo artigo, veremos como integrar o XAML aos elementos da página,
criando uma aplicação Silverlight. Até lá.

Bruno Sonnino é Microsoft MVP, consultor e desenvolvedor há mais de 20 anos. É autor de 5 livros de Delphi,
escreve artigos para diversas revistas nacionais e estrangeiras, como PCMagazine Brazil, .net Magazine, entre outras.
Desenvolveu mais de 15 utilitários para a revista PCMagazine americana. Foi palestrante em diversos eventos, como
TechEd 2006, nas 5 edições da BorCon Brasil e na 11a. BorCon americana.
36
Coluna: No Stress… Think .Net
Caros leitores:

Durante as palestras, eventos e sessões de estudo das Células Acadêmicas, em São Paulo, no interior do Estado ou
Mundo Acadêmico
em outros Estados do Brasil, nota-se uma pergunta muito comum: Como e de onde partir para o estudo do .NET,
Windows Server, AD, etc, ou seja, como começar no estudo das diferentes ferramentas e tecnologias Microsoft, se
não tenho acesso a livros ou materiais impressos ainda em minha Universidade ou Curso Técnico?
Isso é perguntado e questionado, por que até 2005 a MS fornecia às Células Academicas um “kit de boas-vindas”,
que além de alguns belos brindes e softwares de avaliação, vinha com alguns bons livros. Como a polítiva da MS, por
parte da área Acadêmica viu por bem cancelar esse “kit”, eis aqui uma bela oportunidade para você que pensa em
montar ou participar de uma Célula Acadêmica e se sente órfão de materiais de estudo: O Microsoft Faculty
Connection!
Esse portal acadêmico, está localizado no endereço http://www.microsoft.com/education/facultyconnection/
e, como todo bom portal de conteúdo para a área de Ciência da Computação, está com seu conteúdo em inglês.
Entretanto, se o leitor estiver com o seu inglês totalemente for a de forma ou nunca o fez entrar em campo, eis o
site, com conteúdo para o Brasil, em língua portuguesa:
http://www.microsoft.com/education/facultyconnection/BR/Default.aspx
Lá, além do excelente conteúdo (recomendo, particularmente, o Academic Resource Center, com conteúdos de
iniciação fabulosos e o setor de Articles, em que vocês terão acesso a atigos atualizados e com conteúdo muito
bom, de diferentes professores e colegiados de universidades dos EUA e do Canadá), temos um setor que é o de
Software, em que , após vocês efetuarem o seu cadastro no site, terão acesso a alguns softwares para poderem
utilizar em seus estudos, tais como o Windows XP Professional, o Visual Studio 2005 Professional e muitos outros.
Agora sim, vocês não tem desculpas para começar a estudar e se aperfeiçoarem nas tecnologias Microsoft, vocês têm
a faca, o queijo, o prato, a companhia, tudo, para poderem adquirir conhecimento.

Enjoy it !
No stress, think .NET ! (Renato Haddad)

Mauricio Wieler Orellana - Bacharel em Ciências


da Computação, Mestrando em Ciências da Compu-
taçã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), Universi-
dade Salesiana de São Paulo (UNISAL) e Faculdade
Montessori, desde 2000. Foí Coordenador Acadêmi-
co da INETA Brasil.
37
Coluna: Iniciando com Asp.Net
Quando se inicia em uma nova tecnologia, normalmente usa-se sair aprendendo uma quantidade enorme de conteú-
do sem muita lógica nesse caminho que quase nunca é fácil de seguir. Por isso, resolvi escrever sobre como iniciar os
seus estudos quando se necessita aprender o desenvolvimento de aplicações Web com ASP.NET

O primeiro passo a seguir quando se quer aprender ASP.NET é entender um pouco de como é sua arquitetura e
como ela se divide para que se tenha, a princípio, uma visão geral da tecnologia e também para que facilite o estudo
do mesmo.

A minha opinião para iniciar o estudo, diz que você deve aprender os seguintes tópicos:

 Ter conhecimentos básicos de desenvolvimento utilizando Html;


 Conhecer os controles básicos do ASP.NET (TextBox, Button, DropDownList, etc);
Visão Web

 Conhecer e entender o arquivo web.config (arquivo que configura aspectos do seu web site);
 Segurança (autenticação e autorização)

 Personalização;
 XML Web Services
 Controles de Acesso a Dados

 Controles de Navegação
 Ajax Library
 Conhecer C# ou VB.NET para codificação das páginas

Essa pequena lista não precisa ser seguida nessa ordem, porém considero estes itens importantes para ter uma maior
visão da tecnologia a ser aprendida. Atualmente vejo muitos desenvolvedores de outras tecnologias migrando para o
ASP.NET, mas ainda tentando executar as tarefas da forma que executava anteriormente, isso é um grande problema
já que o ASP.NET têm conceitos muitos diferentes de outras tecnologias e essa técnica pode atrapalhar nos estudos
e trabalhos desenvolvidos. O ideal é estudar os tópicos apresentados e executar exatamente como deve ser feito na
nova tecnologia para que não sobre rastros de conhecimentos e vícios anteriores.

A participação em eventos da comunidade também tem sido essencial para o aprendizado. Sempre apresentamos
temas atuais, nos mais diversos níveis e nos mais diversos assuntos para cobrir o máximo de necessidade da comuni-
dade, atingindo um grande público e sempre levando conteúdo de qualidade aos participantes.

Onde encontrar material de estudo ? – Pra quem está começando agora com ASP.NET, já terá disponível uma gran-
de quantidade de material de estudo na internet, além de livros e outros meios de estudo que sito a seguir:

http://www.msndbrasil.com.br - Site oficial do Desenvolvedor Microsoft contendo material completo de tudo que
envolve o desenvolvimento de aplicações utilizando tecnologia Microsoft, inclusive uma sessão especial sobre
ASP.NET
38
Coluna: Iniciando com Asp.Net
http://asp.net - Site oficial do produto ASP.NET mantido pela Microsoft, com dicas, tutoriais, vídeos e muito material
para estudo sobre desenvolvimento WEB

http://www.codificando.net - Site de uma das maiores comunidades de desenvolvedores no Brasil, onde é possível
participar da lista de discussões e ter contato com mais de 2.000 desenvolvedores tirando dúvidas e sugerindo solu-
ções para os mais diversos problemas do nosso dia-a-dia

http://www.linhadecodigo.com.br - Site muito conhecido no meio de desenvolvimento, onde apresenta uma quanti-
dade enorme de artigos sobre diversas tecnologias, inclusive ASP.NET da Microsoft. Além desse, o Linha de Código
também mantém o site http://www.linhadecodigo.com.br/videos_dotnet/ onde você encontrará diversos vídeos cria-
dos por muitos colaboradores do portal, inclusive diversos MVP’s Microsoft.
Visão Web

Dentro de cada um desses sites você encontrará diversos outros links para compra de livros, DVD’s de estudo, trei-
namento e muitos outros meios de estudo para aprimorar o seu conhecimento.

Um bom conhecimento de POO (Programação Orientada à Objetos) também fará de você um desenvolvedores de
qualidade e lhe fará aproveitar ainda mais todos os recursos que o ASP.NET disponibiliza para nós desenvolvedores.
É normal encontramos ainda hoje aplicações sem definição de arquitetura, sem ao menos um modelo de objetos re-
aproveitáveis tornando uma aplicação muito mais flexível e de fácil manutenção.

Lembre-se que para ser um desenvolvedor você precisa saber muito mais do que arrastar controles na página, escre-
ver código c#, compilar e colocar no servidor IIS. Por isso dedique-se usando essas dicas e muitas outras que sempre
se consegue com amigos, colegas de trabalho, estudos particulares e muito mais. A ferramenta de busca do Google
também tem sido uma excelente opção de consulta, apontando sempre para um artigo ou download de código de
algum site relacionado ao tema.

Desejo boa sorte em seus estudos e fique ligado sempre às novidades !

Andrey Sanches - andrey.sanches@uol.com.br é MVP (Most Valua-


ble Professional), MCP (Microsoft Certifield Professional) e trabalha
com desenvolvimento de sistemas na tecnologia .NET desde sua versão
beta. Líder da comunidade de desenvolvedores Codificando.Net de SP
(www.codificando.net), ministra treinamentos especializados na Trei-
nando.Net (http://www.treinando.net) e em diversas empresas, tam-
bém escreve constantemente artigos para sites como Portal Linha de
código, DevMedia e revistas como MSDN Magazine e Web Mobile.
39
Coluna: A longa espera até o Visual Studio 2008
A não ser que você more num barril, já está sabendo que o Visual Studio 2008 (beta2) já está disponível para down-
load. Como é de costume, hordas de programadores vão fazer o download e testar todas as excitantes novidades
exaustivamente, milhares de tópicos (e flames) serão criados nos fóruns em todo mundo, muita discussão, muitas
controvérsias e muitas opiniões em torno do produto serão expostas. Ponto para a Microsoft.
Porém, nós do “mundo mobile” somos mais cautelosos. Preferimos que o pessoal do “ASP.NET” e afins teste bas-
tante o produto antes de nos exaltarmos em atualizar aplicações e dispositivos não é mesmo?
COMPACT PLACE
Nós de Mobile somos uns covardes. Mas isso é assunto para outro artigo 
Nesse espírito inovador, vamos dar uma olhada nas principais características interessantes para nós da área de de-
senvolvimento móvel que virão com o novo Visual Studio 2008:
TESTES DE UNIDADE

Finalmente poderemos rodar testes de unidade no código do Compact Framework. O Visual Studio irá automatizar
o processo de testes de unidade também para dispositivos móveis. Esse é um recurso excelente e deve ser recebido
com festa.
OS MAIS NOVOS EMULADORES (VERSÃO 3.0)

Você pode agora automatizar cenários de testes direto no emulador, de forma a simular mudanças que possam ocor-
rer no estado do device - perda de sinal, bateria, etc.
Funciona assim: Você pode agora armazenar uma série de configurações do emulador e usá-las automaticamente
para um a determinada sessão de testes. Assim você pode rodar seu programa sob diferentes condições de configu-
ração e estado sem precisar ficar configurando toda vez. Excelente.
SUPORTE AO DESIGNER DO SQL SERVER 3.5 COMPACT EDITION

Podemos agora criar bancos de dados no SQL Compact Edition usando a “experiência” de design do Visual Studio
2008, como fazemos com os outros bancos de dados normais. Ajuda bastante.
ÚLTIMA VERSÃO DO COMPACT FRAMEWORK (VERSÃO 3.5)

Aqui temos excelentes novidades. Começando pelo namespace System.IO.Compression support, que agora
inclui o suporte a compressão HTTP. Sim, agora vamos poder fazer chamadas aos webservices usando a compressão
nativa do protocolo. Prevejo mais uma onde de soluções usando WebServices mesmo em redes GPRS.
Temos também o LinQ, ou melhor, um sub-conjunto do LinQ. É aquela história que já estamos cansados de ouvir.
Para mim uma inovação sem grande importância para nós. É divertido, mas sem grandes vantagens.
Temos também uma nova API para suporte a sons, podendo tocar de forma síncrona ou assíncrona diversos forma-
tos de áudio diferentes (MP3 também). Temos também uma nova API em Microsoft.WindowsCE.Forms para, de
forma simples, sabermos se nossa aplicação está rodando em um Smartphone ou em um PocketPC e aí fazer os ajus-
tes de interface necessários. Ótimo.
Na parte de mais baixo nível, podemos agora ativa o log para funções de código nativo (como na versão maior do
framework), melhor suporte a pilha de chamadas no rastreio de exceções e (finalmente) um GAC decente, que real-
mente libera memória do dispositivo de forma mais inteligente. Só o GAC novo já vale toda essa versão nova do
Compact Framework.
Ah!..já ia me esquecendo. Teremos também uma versão “compact” do Windows Communication Foundation, que
por si já é uma excelente novidade e iremos abordá-lo em um artigo somente sobre ele. Aguardem.
CONCLUSÃO

Com certeza, nessa nova versão do Visual Studio, o time do Compact Framework trabalhou bastante e teremos
umas das versão da ferramenta mais “mobile-friendly” já lançadas. Vamos aguardar e observar esse lançamento de
perto.

José Antonio Leal de Farias é MVP em Windows Mobile Development e bacharel


em ciências da computação pela UFCG, programador profissional nas linguagens C++ e
C# e atualmente é Diretor Técnico da Light Infocon S.A . Atua como consultor na área
de desenvolvimento para dispositivos móveis há mais de 10 anos, participando de proje-
tos em todo Brasil e em diversos países.”
41
Destaques: Download do Mês
Todo mês temos alguma novidade para baixar da internet e para ninguém perder nenhum desses down-
loads, vamos publicar mensalmente os principais downloads.

Download do Mês
O Beta 2 do Visual Studio 2008 já está disponível!
Acessem: http://msdn2.microsoft.com/en-us/vstudio/default.aspx

Visual Studio 2008 Professional


http://www.microsoft.com/downloads/details.aspx
?FamilyId=B98A61BA-99B0-40B7-AB6E-5386A2B94217&displaylang=en

Mais informações de outras versões:

http://blogs.msdn.com/bharry/archive/2007/07/26/orcas-beta-2-download-urls.aspx
42
Destaques: Blog do Mês
Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia, especificamente na área de
desenvolvimento, temos muitos blogs com informações pra lá de quentes sendo atualizados diariamente.
Muitos funcionários da Microsoft, membros da comunidade, especialistas, etc. formam uma gigante co-
munidade on-line com notícias, dicas, artigos, etc. Vamos destacar em nossas edições dois blogs, sendo
um nacional e um internacional. Sempre analisando a qualidade dos posts e freqüência.

Blog Nacional
Cezar Guimarães trabalha na Microsoft Brasil e mantém um blog bem atualizado falando sobre WCF,
Silverlight, Asp.Net e novidades no mundo Microsoft.

Link do Blog: http://blogs.msdn.com/cguimar

Blog Internacional
O Brasileiro Hélio Sá MVP de Sharepoint mantém um blog em inglês sobre Sharepoint! Leitura imperdí-
vel para os fãs do produto.
“Os Blogs hoje são

ferramentas
Link do Blog: http://www.sharepointblogs.com/heliosa
essenciais para

quem acompanha

tecnologia”
43
Dicas
Hoje em dia temos uma quantidade gigantesca de materiais de estudo, porém um direcionamento sobre
esses materiais é sempre muito importante. Nesta edição vamos apontar bons materiais produzidos no
país.

Open Source
“Hoje em dia
Muitos projetos Open Source podem ajudar em muito o dia-a-dia de quem trabalha com o Visual Studio
temos uma ou .Net em geral. Temos um novo site com diversos projetos para Download.

quantidade

gigantesca de http://www.codeplex.com
materiais de

estudo, porém um

direcionamento

sobre esses

materiais é sempre

muito importante”
Muitos Web Casts
O número de Web Casts disponibilizado pela Microsoft aumenta cada dia mais, visite o site e agende os
mais interessantes.

http://www.microsoft.com/brasil/msdn/
Eventos/Webcasts.mspx

VSTS Brasil
A primeira comunidade do Brasil chama-se VSTS Rocks! Já com diversos eventos realizados, o site possui
uma área de blogs atualizada por Alexandre Tarifa, Fábio Camara e Mauro Ana.

http://www.vstsrocks.com.br
44

Cinema
TRANSFORMERS – O FILME (2007, TRANSFORMERS 2007)

O que esperar do melhor blockbuster do ano? Eu já sabia: efeitos visuais incríveis, ação quase que ininterrupta, áudio de destruir (procure salas THX) e
poucos diálogos para favorecer a nada sutil nobreza das batalhas de um grande desenho dos anos 80. Acredito que os diálogos atrapalhariam o nosso
desejo por ação, ação e mais ação!
O diretor Michael Bay (A Ilha) soube explorar os mais avançados recursos tecnológicos para expor de maneira brilhante esse petardo guardado em nos-
sas memórias longínquas
Se você ainda não assistiu, não cometa o pecado de fazê-lo somente na ocasião do lançamento em locadoras. Vá ao cinema, mas sem a namorada... pois
ela irá detestar - que machismo, não?

RATATOUILLE – (2007, RATATOUILLE)

Adultos, crianças, esposas, namoradas, gatos, cachorros e afins, irão adorar Ratatouille. A parceria Disney/Pixar nos brinda com uma animação fantástica
e acertou ao escolher o talentoso diretor de Os Incríveis, Brad Bird, para comandar o pelotão criativo.
Tudo é perfeito neste longa, que conta a história de Remy, um ratinho com olfato e paladar apurado e que sonha em ser um grande chef em Paris. Dá pra
imaginar um ratinho numa cozinha francesa? Pois é, o pelotão criativo, conseguiu transpor toda a inesgotável imaginação.
Dá pra rir muito e consumir pipoca de montão nesta excelente animação.
Não esqueça de levar a pivetada. 

TRASH RIDÍCULO DÁ PRO VÁ TÁ ESPERANDO


GASTO ASSISTIR O QUE?
45

Locadora

300 DE SPARTA (2007, 300)

Impressionante o que Zack Snyder (diretor do filme) conseguiu fazer com a graphic novel de Frank Miler! Claro que ele teve a ajuda do fantástico rotei-
rista de Band of Brothers, Kurt Johnstad e do estreante Michael Gordon.
O filme é fiel a obra de Miler, mas Snyder vai além e pela primeira vez no cinema consegue sincronizar trilha sonora com movimentos, golpes, jatos e
mais jatos de sangue, e olhares fulminantes.
Os diálogos são perfeitos, até mesmo na pequena e importante participação do brasuca Rodrigo Santoro. Rodrigo, um ator acima da média (brilhantes
atuações em Bicho de Sete Cabeças e Carandiru) vem conquistando espaço no disputado mercado americano.
Cenas estonteantes e memoráveis, como a muralha de mortos, a nada suave orgia dos Persas, a volúpia por sangue e honra dos Spartanos, irão prendê-lo
neste épico (podemos chamá-lo assim) imperdível.

Das Antigas (+ de 10 anos)


OS SUSPEITOS (1995, THE USUAL SUSPECTS)

Pra mim este é um dos melhores filmes de suspense policial dos últimos anos. Roteiro de primeira, com excelentes diálogos, trama impecável e um dos
desfechos mais inteligentes que o cinema já produziu.
O excelente ator Kevin Spacey – que infelizmente irá se aposentar do cinema – faz o papel de um deficiente físico que integra um grupo de suspeitos.
Após serem detidos numa delegacia em Nova York, eles chegam num acordo para realizarem um grande trabalho, no entanto, são apenas coadjuvantes de
um plano bem elaborado.
O filme é digno de 4 estrelas, no entanto nossas redes de televisão fizeram a gentileza de estragar os diálogos com edições pífias para os longos comerciais.
Para quem assistiu na TV, esqueça e corra já pra locadora mais próxima.

TRASH RIDÍCULO DÁ PRO VÁ TÁ ESPERANDO


GASTO ASSISTIR O QUE?
46

Gastronomia

São Paulo
Sandubas
Big-X Picanha - http://www.bigxpicanha.com.br
Bastante conhecido pelos paulistanos a casa oferece cerca de 15 tipos de sandubas bem servidos e suculentos. Além do tradicional Big-X Picanha que leva
o nome da casa (ou será o contrário?) não deixe de experimentar o Big-X Dog. Sensacional.

Charles Dog - http://www.charlesdog.com.br


Tradicional nas noites da Zona Norte, o antigo trailer de dog virou um ponto fixo na av. Braz Leme. A casa oferece fartos dogs preparados com molho
especial e outros ingredientes ao gosto do cliente. Dá pra encher a pança, mas não vá esperando um lugar aconchegante.

Joakin’s - http://www.joakins.com.br
Falar de sanduba e esquecer o Joakin’s seria imperdoável. Os sandubas da casa são espetaculares, sem mencionar o milkshake que serve bem duas pessoas
famintas 
Não esqueça de pedir uma porção de smiles e a fantástica maionese preparada na própria casa. O local é bem aconchegante, mas se for no sabadão, es-
queça o tempo e leve um pouco de paciência, pois a espera pode ultrapassar 30 minutos.

Nas próximas edições teremos dicas de restaurantes Italianos, Asiáticos e R$ 5,00 à R$ 10,00
até mesmo Australianos. Até lá.
R$ 10,00 à R$ 30,00

Emerson Facunte R$ 30,00 à R$ 50,00


Um gourmand compulsivo, que um dia foi gourmet  R$ 50,00 à R$ 100,00

TRASH FUJA MATA A RANGO TÁ ESPERANDO


FOME DOS BONS O QUE?
47
Comunidade: Mutex
O grupo de usuários Mutex, reúne os profissionais ligados à área de tecnologia na plataforma Microsoft na Bahia,
Sergipe e Piauí. Foi fundado em 2003 com o objetivo de fortalecer a base tecnológica em todo o ecossistema
relacionado aos profissionais de tecnologia. Nossa principal meta é trazer conhecimento atualizado sobre plata-
forma Microsoft de forma a gerar capacitação, motivar oportunidades de trabalho e prover soluções para valori-
zar o mercado profissional perante toda a comunidade realizando grandes eventos e reunindo ao longo de sua
história mais de 5000 pessoas entre profissionais, estudantes e formadores de opinião na área de tecnologia, con-
quistando assim, uma base sólida junto a Empresas e Universidades formando e apoiando células acadêmicas para estudo da tecnologia
Microsoft dentro das próprias instituições de ensino. Dentre os grandes parceiros, temos a Microsoft, o INETA e o Culmunis, além de
universidades locais que nos apóiam cedendo espaço para a realização de eventos. Participamos também da criação do Centro de Inova-
ção de Tecnologia Microsoft, sediado na UNEB em Salvador, que em muito está contribuindo para as empresas locais quanto para os
profissionais, oferecendo capacitação para os mesmos e atividades na área de pesquisa e desenvolvimento.
Estamos no momento de grande reestruturação para adequar as ferramentas de apoio aos padrões atuais, remodelando modelo das
atividades que realizamos e com novo logo que representa nos representa a terceira geração do grupo. Manter uma atividade de grupo
ativa requer muito comprometimento e criatividade para manter o grupo motivado e envolvido na busca constante de conhecimento.

Em outubro o grupo completa 4 anos de sucesso e representatividade na comunidade. Nessa oportunidade estaremos realizando mais
um grande encontro de confraternização e troca de conhecimento onde lançaremos oficialmente o novo portal e as novas estratégias.

―FAZENDO ACONTECER‖

―FAZENDO SOCIAL‖

Projeto Aluno Monitor


Projeto de inclusão digital para a formação de monitores de laboratório para
escolas públicas em todo o Brasil. Mais informações em
http://www.alunomonitor.com.br

Nosso lema: ―Não tem que ser difícil‖

Para conhecer o mutex visite a url: http://www.mutex.com.br ou suporte@mutex.com.br


48
.Close()
Migração ou Interoperabilidade?

Quando é solicitado um novo projeto, é muito simples definir qual tecnologia será utilizada! É muito fácil responder: utilize .Net :)

Porém em muitos casos temos cenários onde já temos uma aplicação desenvolvida e teremos somente novos recursos associados ou
implementados nesta solução. É praticamente impossível o convencimento para uma empresa de jogar tudo que tem implementado
no lixo e criar do zero! Para as empresas de consultoria este é o melhor negócio, mas para quem está pagando é um grande proble-
ma!
Existem muitas aplicações em produção desenvolvidas em Visual Basic 6... é a tecnologia mais popular para criação de sistemas e fica
impossível migrar este grande legado, e vamos combinar, tem muita coisa que não precisa ser migrada.
O time de Visual Basic na Microsoft criou um produto chamado Visual Basic 2005 power Pack, onde o grande destaque é a criação
de recursos para interoperabilidade entre uma aplicação Visual Basic 6 com uma outra aplicação .Net Windows Forms. Essa solução
é fantástica para quem tem uma solução legado que receberá novas features.
É possível fazer muitas coisas interessantes como: ter um formulário em Visual Basic 6 que grava pedidos, e um botão buscar clientes
chamar um formulário feito em Windows Forms com .Net e retornar um cliente de uma lista de clientes. Isso ajuda e muito e trás
novas possibilidades de adoção do .Net.

Vale a pena também conhecer a biblioteca de Impressão, PrintForm, onde em um formulário podemos criar rotinas de impressão da
mesma forma que fazíamos no Visual Basic 6... Form.Print() :) com isso temos um poder de impressão muito grande.

Conheça mais sobre o produto no site: http://msdn2.microsoft.com/pt-br/vbasic/aa701257.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.