Codificando E Magazine2

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Codificando E Magazine2 as PDF for free.

More details

  • Words: 18,019
  • Pages: 48
Powered by Microsoft Publisher  360 S PARTA E NGINES… UMA

N UM E R O 2

#2 AN O I

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 CODIFICANDO.NET

NESTA EDIÇÃO

e-magazine E D I Ç Ã O

Entrevista

3

Artigo Win 2008

7

Artigo Gerência

13

Artigo SQL

16

Artigo WCF e AJAX

18

Coluna XNA

20

Coluna Biz.talking

21

Coluna SQL

24

Coluna Qualidade

28

Coluna Silverlight

33

Coluna Acadêmico

36

Coluna Web

37

Coluna Compact Plane

39

2

A N O

I

J U L H O

2 0 0 7

Editorial Chegamos na terceira edição, a número 2. Estamos consolidando um número muito bom de acessos e 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. Nesta edição temos dois novos colunistas, Alexandre Lopes fala sobre SQL e Bruno Sonino sobre Silverlight, os dois chagam com muita sede e publicam excelentes colunas logo de cara. Gostaria de anunciar também a nova equipe de editores, agora somos dois editores: Alexandre Tarifa e Emerson Facunte, onde vamos revezar no editorial das edições. A partir desta edição teremos novos conteúdos, voltados a vida social dos desenvolvedores... Isso mesmo, desenvolvedor tem vida social :) teremos assuntos como cinema, culinária, turismo, etc... Temos também o Grito do Leitor onde através do email [email protected] todo mundo pode gritar, reclamar, sugerir, contribuir, etc :), tudo comandado pelo nosso amigo Ganso (Sérgio).

Boa leitura!

Equipe Alexandre Tarifa [email protected]

Editor: Alexandre Tarifa Emerson Facunte

Entretenimento 44

Co-Editores: Andrey Sanches

Comunidade Mutex

47

Reporter Alfred Myers

Coluna: .Close()

48

Colaboradores: Hélio Sá Moreira 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 funcionalidades brasileiras para o produto. Recentemente completei um Mestrado em Gestão de empresas, no qual me aprofundei 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 entrevista 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 imagem 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, classes 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ódigo. Como se pode ver a sintaxe do X++ é muito parecida com o C#. Nas caixas destaquei a integração com a camada de dados, 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 novas 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 versão, pois temos que sincronizar a agenda de releases do produto globalmente. Fazemos parte de um time globalmente disperso, 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 cultura da empresa, como revisão de código, nigthly builds seguidos de baterias de testes, períodos de estabilização antes do lançamento 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 Manager), 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 importância neste sucesso. Além das implantações e customizações, acredito que existe uma ótima oportunidade para a implementaçã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 mercado 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 conhecimento 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ósgraduado em Análise de sistemas e mestre em Gestão Empresarial, atuou no desenvolvimento de soluções na plataforma .Net framework desde sua versão 1.0. Atualmente é Software Development Engineer na Microsoft e faz parte do primeiro time de desenvolvimento da empresa no Brasil. Alfred Myers ([email protected]) - 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 distribuí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 versõ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 traduzido 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 efetuadas 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, Gerenciador 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 Configuraçã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 servidor 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 controlada, o que lhe fornecerá um servidor mais seguro e ajustado às necessidades 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. Diferente 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 gerenciamento 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 oportunidade 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 profissionais de TI. Podemos dizer que a plataforma Windows Server 2008 é uma plataforma preparada que integra IIS, ASP.NET, Windows Communication Foundation 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 Framework). 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 produto 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 scripts 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ãoadministradores do servidor. Com o IIS 6, certas configurações só poderiam ser feitas pelo administrador do servidor; com o IIS 7, é possível que determinadas 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 Windows 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 proporciona 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 melhorada, 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 comportamento 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 beneficiar 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:

Artigo: Novidades do Windows Server 2008

10

Isto significa que agora os administradores de sistema e desenvolvedores poderão falar a mesma “língua” e preparar um sistema operacional com os componentes 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 imediato. Toda essa plataforma é construída em cima da tecnologia Windows Server Virtualization (WSv), evolução da plataforma Windows 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 proporcionará 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 Virtualization suportará máquinas virtuais 64x, possibilitando uma escalabilidade muito maior do que ambientes atuais além de suportar máquinas virtuais até oito processadores; Migração ―ao vivo‖ de máquinas virtuais: esse procedimento, conhecido como “live migration” permite move uma máquina virtual de uma máquina física para outra sem tempo de parada. Essa característica, juntamente com tecnologias de failover clustering providencia alta disponibilidade 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;

Artigo: Novidades do Windows Server 2008

11

Terminal Services Gateway: essa nova funcionalidade (implementada na forma de “role service”) permite que usuários autorizados se conetem em servidores 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 exemplo, 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 desempenhe 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 desempenhar 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) divididos 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 explorar 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 realmente 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 processos 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 Management 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á é evidente, 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 sensibilizar 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 determinado 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 processos, 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 exigência de uma atualização contínua das competências e das habilidades. Para ser gerente de projetos hoje não se pode permanecer esclerosado 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 problemas. 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 conhecimentos 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 informaçã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 Highsmith, 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 ([email protected]): Microsoft MVP VSTS, MCT, MCSD .NET, MCTS - TFS, ITIL Foundations, Certified SCRUM Master e MSF Practitioner, é professor e consultor. Seu lema é: Antes de investir em metodologia, 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, deixando 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 utilizado. 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 respectivamente 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 tabelas. 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 analise que o SQL Server fez baseado a porcentagem, este texto pode variar de acordo com a porcentagem 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á solicitando 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áginas 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 é necessá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 qualquer 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. Palestrante 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 vinda 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 aproveitou 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 efetivamente 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 behavior 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"/> <serviceBehaviors> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> <endpointBehaviors> <enableWebScript /> 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 ServiceReference, 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

Untitled Page <script type="text/javascript"> function ExibirBoasVindas() { var proxy = new tempuri.org.IUsuario(); proxy.BoasVindas('Israel', Resultado, null, null); } function Resultado(result) { alert(result); }
<Services>
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 decorrer 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 ([email protected]) - 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, tratamento 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

Biztalk.ing

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 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 podemos 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 sugeridos 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 informaçõ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. É comum 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 implementados 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 transformaçõ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 funcionando 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 converter 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 mensagem 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.

Biztalk.ing

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 convencionais 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 mostrado 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.

Biztalk.ing

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 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 encontrarmos 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 ([email protected]) é tecnólogo em Processamento de Dados, formado pela FatecAmericana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor especialista em Desenvolvimento de Processos 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.

SQL SERVER

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 profissionalmente 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 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 como 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 aprendizado 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. Tenho 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 seguintes 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. É extremamente 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' é criando 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 master key'. A outra cópia é armazenada no banco de dados (no exemplo acima, em 'ADVENTUREWORKS').

SQL SERVER

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 chave assimétrica. Uma chave simétrica é um mecanismo de encriptação mais rápido para encriptar e decriptar dados. Voce pode utilizar chave 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 disponiveis 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. Utiliza-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 digitalmente 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 també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étrica. 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'

SQL SERVER

GO 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 simetrica usando o certificado: OPEN SYMMETRIC KEY ChaveComentario

SQL SERVER

DECRYPTION BY CERTIFICATE MeuCertificado 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.

Qualidade

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

BLLCadastroCliente

CadastroCliente.aspx

WebServiceCadastroCliente

DALCadastroCliente

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 complicado 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

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) { 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 Dictionary<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

Qualidade

A tarefa desta classe é manter uma classe armazenada para cada serviço, de modo que ela possa ser recuperada pelo nome, 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 CadastroClienteWS(), "CadastroCliente"); } 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 CadastroClienteFalso,"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 CadastroClienteWS por CadastroClienteFalso!

Qualidade

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 ICadastroCliente. 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 LocalizadorDeServiceos, enfim brinque um pouco com o código:

class Program { static void Main(string[] args) { BLLCadastroCliente cadastro = new BLLCadastroCliente(); LocalizadorDeServicos.getInstancia().registrarServico(new CadastroClienteFalso(),"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; } }

Qualidade

32

Coluna: Coluna de Qualidade public class DALCadastroCliente { public DALCadastroCliente() { LocalizadorDeServicos.getInstancia().registrarServico(new CadastroClienteWS(), "CadastroCliente"); } public bool CadastrarCliente(string Nome) { ICadastroCliente cadastro = (ICadastroCliente) LocalizadorDeServicos.getInstancia().localizar("CadastroCliente"); 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 Dictionary<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 feedback 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 entanto eu acredito que a maioria dos desenvolvedores precisa primeiro de uma ajuda nestes conceitos de design. Nós chegaremos lá. Até a próxima!

Eduardo Mendonça Gomes ([email protected]) é 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...

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 popularize, é 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 conté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 baixado em http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F525634C3BF043&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=fbc0ab044ad9-664d-07f4-d4592dd8e157 e, inclusive, tem os fontes disponíveis. Agora que você já tem um editor, vamos criar nosso primeiro arquivo XAML:

<Ellipse Width="100" Height="100" Stroke="Blue" StrokeThickness="10" Fill="Yellow" /> 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:

silverlight

34

Coluna: Introdução ao Silverlight... <Ellipse Width="100" Height="100" StrokeThickness="10"> <Ellipse.Stroke> <Ellipse.Fill> 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> <Storyboard>

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 precisamos dar o nome a ela, com a propriedade x:Name:

silverlight

<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 é:

<EventTrigger RoutedEvent="Canvas.Loaded"> <EventTrigger.Actions> <Storyboard > <Ellipse Width="100" Height="100" StrokeThickness="10" x:Name="Ellipse"> <Ellipse.Stroke> <Ellipse.Fill> 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

Mundo Acadêmico

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 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 Computação na USP, MCSD em Visual Studio 6, MCP em C#, atua no mercado Informática há 14 anos e é professor da Universidade Paulista (UNIP), Universidade Salesiana de São Paulo (UNISAL) e Faculdade Montessori, desde 2000. Foí Coordenador Acadêmico da INETA Brasil.

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.

Visão Web

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);



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 comunidade, 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 grande 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

Visão Web

http://www.linhadecodigo.com.br - Site muito conhecido no meio de desenvolvimento, onde apresenta uma quantidade 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 criados por muitos colaboradores do portal, inclusive diversos MVP’s Microsoft.

Dentro de cada um desses sites você encontrará diversos outros links para compra de livros, DVD’s de estudo, treinamento 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 reaproveitá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, escrever 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 - [email protected] é MVP (Most Valuable 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 Treinando.Net (http://www.treinando.net) e em diversas empresas, també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 download. 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.

COMPACT PLACE

Porém, nós do “mundo mobile” somos mais cautelosos. Preferimos que o pessoal do “ASP.NET” e afins teste bastante o produto antes de nos exaltarmos em atualizar aplicações e dispositivos não é mesmo? 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 desenvolvimento 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 ocorrer 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 configuraçã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 formatos 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 ajustes 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 realmente 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 projetos 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 downloads, 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 comunidade 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 essenciais para quem acompanha tecnologia”

Link do Blog: http://www.sharepointblogs.com/heliosa

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 temos uma

Muitos projetos Open Source podem ajudar em muito o dia-a-dia de quem trabalha com o Visual Studio 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 nossas 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 GASTO

VÁ ASSISTIR

TÁ ESPERANDO 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 roteirista 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 GASTO

VÁ ASSISTIR

TÁ ESPERANDO 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, esqueç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 até mesmo Australianos. Até lá.

R$ 5,00 à R$ 10,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 FOME

R$ 10,00 à R$ 30,00

RANGO DOS BONS

TÁ ESPERANDO 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 plataforma Microsoft de forma a gerar capacitação, motivar oportunidades de trabalho e prover soluções para valorizar 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, conquistando 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 [email protected]

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 problema! 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.

Related Documents

Codificando E Magazine2
November 2019 1
Codificando E Magazine7
November 2019 0
Codificando E Magazine5
November 2019 0
Codificando E Magazine4
November 2019 0