codificando 18

Upload: ricardo-palma

Post on 06-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 codificando 18

    1/67

  • 8/3/2019 codificando 18

    2/67

    Fale com Editor

    muito importante para a equipesaber a sua opinio sobre a revis-ta, caso tenha alguma critica, su-gesto, ou elogio entre em conta-to.

    Caso tenha interesse em publicarum artigo na revista envie o ttuloe um resumo do tema em formatoWord.

    [email protected]

    EDITORES

    Alexandre TarifaDiego NogareEmerson FacunteSergio GonalvesFernanda Sallai

    REVISOSara BarbosaFabrcio SanchezErick Lopes

    EDITORAO E DIAGRAMAOAdriano AlmeidaFabiano Rodrigues

    COLABORADORESAlliston CarlosAntonio Lucas Finotti PereiraAnderson CastroEverton Jos BenedictoFabrcio SanchezFabrcio Frana LimaFernando Gonalvestalo ChesleyLeandro Alves Santos

    Produzido por:

    www.codificando.net

    Edio 18 Nmero 18 Ano 04 2010

    Sumrio

    03:. Editorial 66:. Close ( )

    Por: Fabrcio Frana Lima

    04 :. Quanto tempo levaria paradescobrir uma database corrompi-da?

    Por: Anderson Castro

    9 :. Introduo ao Windows Phone7 Series

    Por: Fernando Gonalves

    17 :. Autenticando usurios emASP.NET Web Forms

    Por: Fabrcio Sanchez

    23 :. Visual Studio LightSwitch bom, mas preciso entend-lo!

    Por: talo Chesley

    29 :. Entity Framework: Trabalhan-do com Model First

    Por: Everton Jos Benedicto

    35 :. SQL Server IntegrationServices (SSIS)

    Por: Alliston Carlos

    43 :. O novo Visual StudioLightSwitch

    Por: Antonio Lucas Finotti Pereira

    47 :. Gerando Grficos comSilverlight, WCF e LINQ

    Por: Leandro Alves Santos

    59 :. Reutilizando Cdigo Nativo no.NET

  • 8/3/2019 codificando 18

    3/67

    Editorial

    Edio 18 Nmero 18 Ano 04 2010

    EDITORIAL

    Ol leitores da revista Codificando.Net e-Magazine, nesse editorial no poderei detalhar sobre os artigosque compem a revista, pois tenho muitos comunicados importantes a fazer.

    Encerro nessa edio de nmero 18 minha passagem pela revista. com imenso prazer e satisfao quefao parte dessa equipe desde a sua edio de nmero 9 e sou editora desde a edio de nmero 15. Foi 1ano e 8 meses de pura dedicao e alegria para transmitir a vocs, leitores, contedo de qualidade.

    Agradeo a toda a equipe da revista Codificando.Net e-Magazine que seguiu ao meu lado fazendo dessauma referncia para muitos profissionais da rea.

    Alm do meu desligamento da revista com pesar que falo do desligamento de mais 3 profissionais, soeles os diagramadores Adriano Almeida e Fabiano Rodrigues e o revisor Fabrcio Sanchez. Agradeo a elespor todo o empenho e dedicao que tiveram revista e desejo todo sucesso do mundo para todos.

    Mas muita calma pessoal, pois, tenho 2 comunicados muito bons para fazer. Um deles a entrada do ErickLopes como revisor da revista e a do novo editor Cleber Dantas. Profissionais esses, que tenho certeza,faro o melhor de si para dar continuidade ao trabalho que j vem sendo elaborado na revista e para ocrescimento da mesma.

    Podemos dizer que se fecha um ciclo e comea se outro.

    Fernanda Sallai"Encerrando ciclos. No por causa do orgulho, por incapacidade, ou por soberba, mas porquesimplesmente aquilo j no se encaixa mais na sua vida."(Fernando Pessoa)

    Erick LopesCleber Dantas

  • 8/3/2019 codificando 18

    4/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 4444

    Quanto tempo levaria para des-

    cobrir uma databasecorrompi-da?

    Alguns de vocs devem estar neste mo-mento com um peso na conscincia porno terem uma resposta para esta simplespergunta. Lembraram que j leram em al-gum artigo na internet uma pessoa falandosobre um comando chamado DBCCCHECKDB que verifica se uma databaseest corrompida, mas mesmo assim nofizeram nada no seu banco de dados. Ou-tros sabem mais ou menos o tempo quelevariam para descobrir uma corrupo,

    pois realizam esse procedimento manual-mente quando possuem um tempo livre ese lembram de executar. Entretanto, tam-

    bm tenho certeza que existem vrias pes-soas que j possuem uma rotina que checaa consistncia de seu banco de dados e sa-

    bem exatamente o tempo que levaria paradescobrir se existe uma database corrompi-da no seu ambiente. Parabns para estas

    pessoas.

    Acredito que todos vocs j ouviram falarno comando DBCC CHECKDB presente noSQL Server. Este comando checa a consis-tnciade todos os objetos de uma base dedados examinando sua estrutura fsica elgica a fim de identificar se existe algumacorrupo nesta base. Geralmente, as pes-

    soas s procuram conhecer esse comandoquando encontram algum problema decorrupo no seu ambiente atravs de uma

    mensagem de erro. Por exemplo, quan-

    do um usurio faz uma leitura de umdado corrompido em alguma tabela. En-tretanto, uma corrupo deve ser encon-trada antes do usurio, para que sejapossvel resolv-la o mais rpido poss-vel e esse problema no chegar ao usu-rio final.

    Voc que responsvel por alguma basede dados, sendo um Administrador deBanco de Dados ou um Desenvolvedorque cuida da base de dados de seus pr-prios sistemas, deve criar um procedi-mento para realizar a procura por dadoscorrompidos ou inconsistentes em todasas suas bases de dados com a menor fre-qncia que seu ambiente permitir.

    Mas Fabrcio, eu tenho uma tima rotina

    de backup , onde armazeno o backup detodas as minhas databases nos ltimos 10dias, ento caso algum me relate umerro de algum dado corrompido, bastaeu restaurar um backup para resolver omeu problema, certo?

    Nem sempre. Imagine que voc descu-bra uma corrupo de uma database duas

    semanas depois dela ter ocorrido. Nasua tima rotina de backup , voc guar-dou 10 dias de backup com dados

    Por: Fabrcio Frana Lima

  • 8/3/2019 codificando 18

    5/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 5555

    CREATEPROCEDURE

    dbo.stpCHECKDB_Databases

    AS

    BEGIN

    DECLARE @Databases TABLE(

    Id_Database INTIDENTITY

    (1,1),

    Nm_Database VARCHAR(50))

    DECLARE @Total INT, @Loop INT,

    @Nm_Database VARCHAR(50)

    /* Caso no deseje fazer o check

    de alguma database basta retir-la na

    clusula WHERE*/

    INSERTINTO @Databases

    (Nm_Database)

    SELECT Name

    fromMaster.dbo.Sysdatabases

    WHERE Name notin('Tempdb')

    SELECT @Total =max(Id_Database)

    FROM @Databases

    SET @Loop = 1

    WHILE (@Loop

  • 8/3/2019 codificando 18

    6/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 6666

    -- Seleciona o nmero de arquivos.

    INSERTINTO #logF

    EXECsp_enumerrorlogs

    DECLARE @TSQL NVARCHAR(2000)

    DECLARE @lC INT

    SELECT @lC =MIN(ArchiveNumber)FROM

    #logF

    --Loop para realizar a leitura de todo o

    log.

    WHILE @lC ISNOTNULL

    BEGIN

    INSERTINTO #TempLog

    EXECsp_readerrorlog@lC

    SELECT @lC =MIN(ArchiveNumber)

    FROM #logF

    WHERE ArchiveNumber > @lC

    END

    Recuperado todo o contedo do log doSQL Server , com a Listagem 3 filtramosesse resultado para visualizarmos ape-nas as informaes referentes execuodo comando DBCC CHECKDB. Deve-se

    filtrar a query atravs da coluna Logdatede acordo com o horrio agendado paraa execuo dessa rotina. No exemplo dalistagem 3, retornado todas as execu-es realizadas no dia anterior.

    SELECT LogDate,substring(Text,charindex

    ('found',Text),

    charindex('Elapsed Time',Text)-

    charindex('found',Text)) Possi-

    veis_Erros,

    Text Texto_CompletoFROM #TempLog

    WHERE Logdate >=cast(floor(cast(getdate

    ()-1 asfloat))asdatetime)

    and logdate

  • 8/3/2019 codificando 18

    7/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 7777

    Logo, antes de criar um procedimentopara fazer um DBCC CHECKDB em to-das as suas databases , voc deve realizar

    um teste com apenas uma base em uma janela de pouca utilizao do banco dedados para identificar o tempo dessa e-xecuo. Com isso, voc ter a ideia dequantas databases voc pode verificar pordia para criar a sua rotina.

    Cabe salientar, que tambm possvelacompanhar o progresso da execuo

    desse comando na dmvsys.dm_exec_requests. Na Listagem 4, acoluna Percent_Complete retorna o per-centual de execuo de um comandoDBCC que est sendo executado no ban-co de dados:

    SELECT Percent_Complete,*

    FROMsys.dm_exec_requests

    WHERE Command LIKE'%DBCC%'

    Caso voc possua uma base de dadosmuito grande, para reduzir o tempo deexecuo desse procedimento, voc podeutilizar a opo WITH PHYSI-CAL_ONLY, que realiza apenas uma ve-rificao da integridade fsica da sua da-tabase. Todavia, ainda necessria uma

    verificao completa dessa base com u-ma menor frequncia.No meu ambiente de trabalho, como jdisse anteriormente, recebo essa infor-mao em uma planilha juntamente comoutras informaes do meu banco de da-dos, o famoso CheckList dirio que todoDBA deve realizar. Como foi preciso lertodo o arquivo de log do SQL Server pa-

    ra identificar a execuo do comandoDBCC CHECKDB , tambm temos todasas outras informaes geradas no Log do

    erros para facilitar a visualizao e o tex-to completo gerado no log do Sql Server(figura 1).

    Para que vocs possam visualizar comoseria o resultado desta query no caso daexistncia de uma database corrompida,

    baixei no blog do Paul Randal um exem-plo de uma database corrompida e cha-mei de DBCorrompida1. Em seguida ro-dei o comando DBCC CHECKDB e o re-sultado gerado no log do Sql Server podeser visto na figura 2:

    O tempo de execuo do comandoDBCC CHECKDB depende de uma srie

    de fatores, tais como:

    Tamanho da Database. Recursos fsicos disponveis no ser-

    vidor: Memria, I/O, disco e CPU. Concorrncia de Memria, I/O,

    CPU e de updates que estejam sen-do realizados na base de dados queest sendo checada.

    Velocidade do disco onde o Temdbfica armazenado.

    Quanto tempo levaria para descobrir uma databasecorrompida?

    Figura 1: Resultado do log com as execues docomando DBCC

    Figura 2 - Resultado do log de uma databasecorrompida.

    Listagem 4 - Retornando o percentual de execu-

    o.

  • 8/3/2019 codificando 18

    8/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 8888

    SQL Server disponveis. Com isso, inclumais uma aba na planilha com todas es-sas informaes do Log, obtendo um

    controle muito maior de tudo o que a-contece diariamente no meu banco dedados.

    Respondendo a pergunta inicial desseartigo, no meu ambiente eu demoro ape-nas um dia para descobrir se uma databa-se est corrompida. E voc, demorariaquanto tempo? Espero que possa ter te

    ajudado h diminuir esse tempo.

    Quanto tempo levaria para descobrir uma databasecorrompida?

    Fabrcio Frana Lima

    Bacharel em Cincia da Compu-tao pela Universidade Federaldo Espirito Santo, trabalha com

    SQL Server desde 2006, possui os ttulosMCP, MCTS e MCITP Database Adminis-trator em SQL Server e tambm mantmum blog sobre SQL Server:

    http://fabriciodba.spaces.live.com

  • 8/3/2019 codificando 18

    9/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    9999Out / Nov - 2010 |

    Introduo ao Windows Phone 7Series

    Hardware

    Relevado na Espanha em 15/02 MobileWorld Congress o Windows Phone 7 Seri-es o novo sistema operacional da Microsoftpara dispositivos mveis que promete ba-lanar o mercado.

    Todos os aparelhos Windows Phone 7 te-ro trs botes:

    Start, com o cone do Windows, paraacesso inicial.

    Search com servios de buscas Bing. Back, para voltar tela anterior.

    Caractersticas

    Touch (4 ou mais pontos de contatocom a tela).

    Sensores: A-GPS, Acelermetro,Bssola.

    Cmera: 5 megas pixels ou superi-or.

    GPU: DirectX 9

    Resoluo Padro: 800x480(figura 2)

    Por: Anderson Castro

    Figura 1 - Hardware.

    480

    800

    Figura 2 - Resoluo Padro.

  • 8/3/2019 codificando 18

    10/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    10101010Out / Nov - 2010 |

    Interface

    Os servios e aplicativos foram organiza-

    dos em cinco centrais (Hubs):

    People Pictures Docs Music & Vdeo Games

    Hub-People

    Responsvel por informaes dos seuscontatos inclusive nas redes sociais, up-date de fotos e mensagens das redes(figura 3).

    Hub-Office

    Nesse hub voc ter acesso ao pacote Of-fice e integrao com SharePoint,conforme figura 4.

    Introduo ao Windows Phone 7 Series

    Hub-Pictures

    Nesse hub voc tem acesso a sua galeriade imagens, fotos podendo interagir comas redes sociais (figura 5).

    HubGames

    Acesso ao Xbox Live com todas suas in-formaes (figura 6).

    Figura 3 - Hub-people.

    Figura 4 - Hub-office.

    Figura 5 - Hub-pictures.

    Figura 6 - Hub-games.

  • 8/3/2019 codificando 18

    11/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    11111111Out / Nov - 2010 |

    Hub-Music + Video

    Para quem j usurio do Zune perce-

    bera que ele esta presente em seu telefo-ne incluindo todas as funes sociais darede do Zune conforme figura 7.

    Sua interface inovadora e inspiradoracom o codnome de Metro a interfacedo WP7 promete uma experincia total-

    mente nova ao usurio (figuras 8 e 9).

    Introduo ao Windows Phone 7 Series

    Ciclo de vida

    A base de desenvolvimento dos aplicati-vos para WP7 ser o Silverlight, e paradesenvolver no ser preciso uma versoespecifica ser simplesmente Silverlight.

    Inicialmente vamos entender como fun-ciona o ciclo de vida de uma aplicaopara WP7 (figura 10).

    Figura 7 - Hub-music & vdeo.

    Figura 8 - Metro-Nova interface do WP7.

    System

    Notification

    Volume

    Figura 9 - Interface.

    Figura 10 - Ciclo de vida.

    AppPageStart Ex-Direct3D

  • 8/3/2019 codificando 18

    12/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    12121212Out / Nov - 2010 |

    Em relao instalao e distribuio daaplicao no Windows Phone 7 ela spoder ser feita via MarketPlace da Mi-

    crosoft que atualmente funciona da se-guinte forma, voc faz um cadastro e pa-ga-se em torno de R$ 215,00 por ano pa-ra ter seus aplicativos disponveis aosusurios , bem similar a AppleStore. AMicrosoft disse que ser publicado oscritrios para desenvolvedores WP7.

    Arquitetura

    Introduo ao Windows Phone 7 Series

    Desenvolvimento

    Quando falamos em desenvolvimento pa-

    ra Windows Phone podemos fazer diver-sas aplicaes usando Silverlight, e pode-mos criar jogos usando XNA.Vamos dar os primeiros passos no desen-volvimento de uma aplicao para WP7.

    Voc vai precisar:

    Kit de desenvolvimento para o Win-dows Phone 7:

    - Visual Studio 2010 Express for Windowsphone- Windows Phone Emulator- Silverlight 4 Tools For Visual Studio- XNA Game Studio 4.0- Microsoft Expression Blend for Win-dows Phone

    Link para Download:http://migre.me/1o49p(Windows Phone Developer Tools RTW)

    Usando o Visual Studio 2010 vamosiniciar um novo projeto.

    Vamos criar um projeto do tipoSilverlight for Windows Phone-

    Windows Phone Application e vamoscham-lo de nosso conhecidoHelloWorld, perceba que tambm pode-mos criar um projeto do tipo XNA para

    jogos no Windows Phone, Panorama ePivot Application veja na figura 13.

    Figura 11 - Arquitetura do Windows Phone.

    Figura 12 - Framework.

  • 8/3/2019 codificando 18

    13/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    13131313Out / Nov - 2010 |

    Na listagem 1 podemos ver a estrutura

    default de nossa aplicao (XAML).

    Ele contem dois TextBlock o primeirocontendo o nome da aplicao e o segun-do o titulo da pagina. Em seguida umgrid onde iremos colocar os elementosde nossa aplicao (listagem 1).

    Fique a vontade para alterar no nome desua aplicao e o ttulo da pgina.

    Agora vamos ver no modo Design(figura 14).

    Introduo ao Windows Phone 7 Series

    Vamos adicionar ao nosso grid um Buttone um TextBlock, veja a figura 15.

    Vamos trabalhar no evento click de nossoButton.

    Adicione o texto Hello World ao nossoTextBlock dentro do evento click.

    Figura 13 - Novo Projeto.

    Listagem 1 - XAML.

    Figura 14 - Modo Design.

    Figura 15 - Interface da aplicao.

  • 8/3/2019 codificando 18

    14/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    14141414Out / Nov - 2010 |

    Veja que no construtor de nossa pginatemos o SupportedOrientations e nesseponto que vamos definir que nossa apli-

    cao poder ser visualizada em modoretrato ou paisagem usando o aceler-metro do hardware (listagem 2).

    Vamos compilar nossa aplicao e ver oemulador do WP7, conforme figuras 16 e17.

    Introduo ao Windows Phone 7 Series

    Nessa verso RTW lanada dia 15-09 te-mos a opo de criar um aplicativo do ti-po Windows Phone Panorama Applicati-

    on (figura 18).

    Vamos iniciar um projeto Panomara Ap-plication (figura 19).

    Veja a estrutura criada nesse tipo de pro-

    jeto (figura 20).

    Listagem 2 - MainPage.cs.

    Figura 16 - Menu Windows Phone.

    Figura 17 - Aplicao funcionando.

    Figura 18 - Tipos de Projeto.

    Figura 19 - Aplicao em modo design.

    Figura 20 - Estrutura do Panorama Application.

  • 8/3/2019 codificando 18

    15/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    15151515Out / Nov - 2010 |

    Windows Phone e XNA GameStudio

    Outro ponto forte do WP7 ser a sua ca-pacidade de rodar jogos de forma fants-tica alm de sua integrao com a LIVE.

    possvel criar jogos para WP7 usandoXNA Game Studio 4.

    Em agosto foi liberada uma lista dos jo-gos para WP7.

    3D Brick Breaker Revolu-tion" (Digital Chocolate)

    "Age of Zombies" (Halfbrick) "Armor Valley" (Protg Games) "Asphalt 5" (Gameloft) "Assassins Creed" (Gameloft) "Bejeweled LIVE" (PopCap) "Bloons TD" (Digital Goldfish) "Brain Challenge" (Gameloft) "Bubble Town 2" (i-Play) "Butterfly" (Press Start Studio) "CarneyVale Showtime" (MGS) "Castlevania" (Konami Digital En-

    tertainment) "Crackdown 2: Project Sun-

    Introduo ao Windows Phone 7 Series

    burst" (MGS) "De Blob Revolution" (THQ) "Deal or No Deal 2010" (i-Play)

    "Earthworm Jim" (Gameloft) "Fast & Furious 7" (i-Play) "Fight Game Rivals" (Rough Cookie) "Finger Physics" (Mobliss Inc.) "Flight Control" (Namco Bandai) "Flowerz" (Carbonated Games) "Frogger" (Konami Digital Entertain-

    ment) "Fruit Ninja" (Halfbrick)

    "Game Chest-Board" (MGS) "Game Chest-Card" (MGS) "Game Chest-Logic" (MGS) "Game Chest-Solitaire" (MGS) "GeoDefense" (Critical Thought) "Ghostscape" (Psionic) "Glow Artisan" (Powerhead Games) "Glyder 2" (Glu Mobile) "Guitar Hero 5" (Glu Mobile) "Halo Waypoint" (MGS) "Hexic Rush" (Carbonated Games) "I Dig It" (InMotion) "iBlast Moki" (Godzilab) "ilomilo" (MGS) "Implode XL" (IUGO) "Iquarium" (Infinite Dreams) "Jet Car Stunts" (True Axis) "Lets Golf 2" (Gameloft) "Little Wheel" (One click dog) "Loondon" (Flip N Tale) "Max and the Magic

    Marker" (PressPlay) "Mini Squadron" (Supermono Limi-

    ted) "More Brain Exercise" (Namco Ban-

    dai) "O.M.G." (Arkedo) "Puzzle Quest 2" (Namco Bandai) "Real Soccer 2" (Gameloft) "The Revenants" (Chaotic Moon) "Rise of Glory" (Revo Solutions)

    Figura 21 - Aplicao funcionando com trspainis.

  • 8/3/2019 codificando 18

    16/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    16161616Out / Nov - 2010 |

    Consideraes

    Esta uma pequena amostra do que estapor vir at o fim desse ano. importanteestarmos preparados para esse grandesalto que a Microsoft esta dando na tec-nologia mvel.

    O mercado de dispositivos mveis estacrescendo cada dia mais, abrindo opor-tunidades para desenvolvedores, seja ele

    de aplicativos ou de games.

    Empresas como LG,Samsumg,HTC jesto dando as caras com seus aparelhos.Windows Phone 7 Series j nasce gran-de, preparado para as redes sociais, ga-mes, multimdia portanto a hora essa.

    Espero que tenham gostado do artigo e

    at a prxima.

    Links:

    http://developer.windowsphone.com/http://windowsteamblog.com/windows_phone/b/windowsphone/http://winphoneblog.com.brwww.codificando.netwww.silverlight.netwww.portalsilverlight.com.brwww.desenvolvendoparaweb.net

    Introduo ao Windows Phone 7 Series

    Dica

    J que o assunto Mobile conhea o Mi-

    crosoft Tag.

    Use o Microsoft Tag em seu celular e des-cubra.( http://tag.microsoft.com )

    Basta baixar o Tag-Reader e tirar um fotoda figura 23.

    Figura 22 - Exemplo de jogo no Windows Phone7.

    Figura 23 - Tag-Reader.

    Anderson Castro

    Graduado em Anlise eDesenvolvimento de Softwareatua no mercado de tecnologi-a a mais de trs anos com foco

    na plataforma .Net, desenvolvedor emC# Windows Forms, Asp.net e Silver-light.

    Atualmente aprofundando seusconhecimentos em WPF, WCF e Silverli-ght.Escrevo e participo atualmente nasseguintes comunidades e blogs:www.codificando.netwww.portalsilverlight.com.brwww.desenvolvendoparaweb.net

  • 8/3/2019 codificando 18

    17/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    17171717Out / Nov - 2010 |

    Autenticando usurios em ASP.NETWeb Forms

    Por: Fernando Gonalves

    Tenho visto muitas perguntas sobre comopodemos implementar a autenticao emASP.NET sem a utilizao dos controlesda Toolbox Login.

    Por esse motivo resolvi escrever este arti-go onde demonstrarei como simples cri-ar o processo de autenticao de usuriosem uma aplicao ASP.NET com pou-qussimas linhas de cdigo.

    Como de costume o primeiro passo a-brir o Visual Studio. Vou utilizar o VisualStudio 2010, mas fique a vontade para uti-lizar qualquer outra verso, pois o cdigoser exatamente o mesmo.

    Com o Visual Studio aberto clique em File| New | Project e selecione Visual C# |Web conforme figura 1:

    Na caixa Name coloque o nome do pro- jeto. No meu caso estou chamando oprojeto de AutenticandoUsuarios.

    Com o projeto criado vamos expandir a

    guia Solution Explorer. Clique com oboto direito no nome do projeto e sele-cione Add | New Item (figura 2).

    Na janela que se abre, adicione um WebForm com o nome de Login.aspx (figura3).

    Figura 1 New Project.

    Figura 2 New Item.

  • 8/3/2019 codificando 18

    18/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    18181818Out / Nov - 2010 |

    Repita o mesmo processo e adicione maisum Web Form com o nome deDefault.aspx (figura 4).

    Nesse momento seu projeto deve ter uma

    estrutura muito parecida com a figura 5:

    Nota: Se voc estiver utilizando outra ver-so do Visual Studio pode existir uma pe-quena diferena entre os arquivos.

    Vamos definir que o arquivo Default.aspx o arquivo padro da nossa aplicao, ou se-ja, sempre que o usurio acessar o nosso siteele ser redirecionado para a telaDefault.aspx.

    Para isso, clique com o boto direito no ar-quivo Default.aspx e selecione a opoSet As Start Page (figura 6).

    Autenticando usurios em ASP.NET Web Forms

    Figura 3 Incluindo arquivo Login.aspx.

    Figura 4 Incluindo arquivo Default.aspx.

    Figura 5 Estrutura do projeto.

    Figura 6 Definindo pgina inicial.

  • 8/3/2019 codificando 18

    19/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    19191919Out / Nov - 2010 |

    D um duplo clique sobre o arquivo De-fault.aspx e digite o cdigo da listagem 1:

    D um duplo clique sobre o arquivoLogin.aspx e adicione o cdigo dalistagem 2:

    Agora vamos executar a aplicao e vere-

    mos que a janela Default.aspx serexibida conforme figura 7.

    At este ponto no h nenhuma novidadepara quem j esta familiarizado com oASP.Net.

    Vamos agora informar a nossa aplicaoque qualquer tela do sistema s poder seracessada se anteriormente o usurio tiversido autenticado. Para isso, pare a execuoda aplicao e clique duas vezes sobre o ar-quivo Web.config.

    Com o arquivo Web.config aberto adicione

    a tag conforme alistagem 3:

    Reparem que dentro da tag Authenticationtemos o campo modeque aceita somenteos valores exibidos na imagem acima.

    Vamos as definies de cada um dos poss-veis modos de autenticao aceitos pelo

    ASP.Net.

    Forms: Permite que voc customize umajanela onde voc dever implementar a sualgica de validao para autenticar um de-terminado usurio. Utilizaremos este mo-delo em nosso exemplo.

    None: Identifica que todos os usurios po-

    dero acessar a sua aplicao. Por exemplo,

    Autenticando usurios em ASP.NET Web Forms

    Listagem 1 - Definindo o contedo da pgina

    Listagem 2 Definindo o contedo da pginaLogin.aspx.

    Figura 7 Visualizao do contedo da pginaDefault.aspx.

    Listagem 3 Formas de autenticao permitidaspara aplicao.

  • 8/3/2019 codificando 18

    20/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    20202020Out / Nov - 2010 |

    um site de notcias onde todos podem na-vegar sem a necessidade de efetuar umaautenticao.

    Passport: Com este modo possvel inte-grarmos nossa aplicao com a tela pa-dro da Microsoft de forma que a valida-o ser feita atravs do Live ID da Micro-soft e receberemos apenas um token deautenticao, porm no temos acesso ao e-mail e senha utilizados para logar no LiveID.

    Windows: Permite que sua aplicao i-dentifique as credenciais do usurio loga-do no Windows (mquina local do cliente)e as utilize para logar na aplicao. Destaforma possvel que o usurio acesse suaaplicao, porm sem a necessidade de terde informar seu usurio e senhanovamente.

    Para o nosso exemplo vou utilizar o modoForms. Agora dentro da tag Authenticati-on vamos adicionar a tag forms conformea listagem 4:

    Vamos s definies de cada um dos valo-

    res que definimos na listagem 4.

    name: Nome do cookie que ser utilizado

    pelo ASP.NET para armazenar as informa-es do usurio logado.

    loginUrl: Nome da pgina que contm algica que controlar a autenticao dos u-surios do site.

    defaultUrl: Nome da pgina inicial da suaaplicao

    timeout: Tempo em minutos que o cookie persistido. Se voc ficar mais tempo do queo aqui definido sem interao com a aplica-o, voc ser redirecionado novamente pa-ra a tela definida no parmetro loginUrl.

    path: Identificador de qual diretrio da a-plicao deve receber a proteo quanto aoacesso sem a devida autenticao.

    Aps o fechamento da tag authentication,vamos adicionar o cdigo da listagem 5.

    Autenticando usurios em ASP.NET Web Forms

    Listagem 4 Configurando a forma de autentica-o da aplicao. Listagem 5 Configurando a autorizao de acesso

    a aplicao.

  • 8/3/2019 codificando 18

    21/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    21212121Out / Nov - 2010 |

    Com o cdigo (listagem 5) estamos negan-do o acesso a qualquer pgina da nossaaplicao aos usurios no autenticados.

    Sempre que o ASP.NET identificar que ousurio no esta autenticado, o ASP.NETutilizar os parmetros definidos dentrotag authentication para redirecionar o u-surio a pgina definida como pgina res-ponsvel pela autenticao dos usurios.

    No nosso exemplo, a pgina responsvel

    pela autenticao a pagina Login.aspx.

    Vamos executar a nossa aplicao paraverificarmos o que acontece. Vejam que aoinvs de abrir a janela Default.aspx , a ja-nela aberta foi a janela Login.aspx. Pormreparem no contedo da url que foi mon-tado no browser (figura 8).

    Conforme podemos ver, o ASP.NET nosredirecionou para a janela Login.aspx,mas identificando que aps a validaocom sucesso, devemos ser redirecionadospara a janela Default.aspx.

    Agora nos resta apenas implementar o

    cdigo responsvel por autenticar o nossousurio na aplicao. Para isso devemosvoltar ao designer da janela Login.aspx e

    vamos adicionar um controle Button(listagem 6).

    No evento Click do controle Button vamosimplementar o cdigo da listagem 7:

    Se neste momento executarmos novamentenossa aplicao, seremos redirecionados pa-ra tela de login. Porm se clicarmos no bo-to Efetuar o login seremos redireciona-dos para a janela Default.aspx de forma au-tomtica.

    Autenticando usurios em ASP.NET Web Forms

    Figura 8 Redirecionamento para a janela de Lo-gin de forma automtica.

    Listagem 6 Incluso do controle Button na janelade Login.

    Listagem 7 Implementao do evento click docontrole Button.

  • 8/3/2019 codificando 18

    22/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    22222222Out / Nov - 2010 |

    Conforme visto o processo de controle deautenticao do ASP.NET muito simplese fcil de utilizarmos em nossas aplica-

    es. Agora utilize sua criatividade e di-virta-se com o exemplo mostrado.

    O projeto completo pode ser baixado atra-vs do link:

    http://cid-391089d9c0e72ec7.office.live.com/self.aspx/Artigos/AutenticandoUsuarios.zip

    Autenticando usurios em ASP.NET Web Forms

    Fernando Gonalves

    Graduado em Sistemas de in-formao pela UniversidadeIbirapuera (UNIB) em SoPaulo. Trabalha com desenvol-

    vimento de aplicaes a 8 anos, nos lti-mos 4 com a tecnologia .Net (ASP.Net,Windows Mobile e C#). Moderador/Colaborador da comunidade Desenvol-

    vendo para Web e o mantm o blog:http://www.fernandodev.com/blog

  • 8/3/2019 codificando 18

    23/67

  • 8/3/2019 codificando 18

    24/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    24242424Out / Nov - 2010 |

    seu comportamento alterado ou serem re-movidas nas verses posteriores. Como uma verso Beta, importante que voc

    envie seufeedback para a equipe de produ-to da Microsoft para que o produto possacontinuar em constante melhoria.

    Uma caracterstica do LightSwitch que meagradou bastante e que j faz meno aosucesso do produto o fato de o mesmogerar a App tanto para rodar na webcomo no desktop. Em ambos os casos, a

    App gerada em Silverlight, o que mostramais uma vez a consolidao desta ltima.

    Implementando uma aplicaocom base em uma fonte de dadosj existente.

    Usaremos neste artigo, a base Northwindda Microsoft para criar um aplicativo sim-ples utilizando os recursos do

    LightSwitch.

    Aps instalar o Visual Studio LightSwitchsiga os seguintes passos:

    Abra o Visual Studio 2010.

    Vamos criar um novo projeto (File >New > Project)

    Note que na janela que se abre, dolado esquerdo, um novo tem apare-ce LightSwitch. Selecione este tem,a linguagem, o local onde ser salvoo projeto, o nome da Solution e cliqueem OK .

    A Figura 1 exibe onde o procedimento descritodeve ser aplicado.

    Muito bem. Voc acabou de criar um proje-to do tipo LightSwitch. Se tudo correu bemno processo descrito anteriormente, vocdeve estar visualizando uma tela semelhan-te conforme Figura 2.

    Uma das caractersticas do LightSwitch queme agradam o fato de ser intuitivo, hajavista o pblico que o mesmo pretendealcanar.

    Existem duas formas bsicas para se criarum aplicativo com o LightSwitch:

    Criar suas tabelas e, a partir dela irmontando as telas de busca, insero,etc.,

    Utilizar uma fonte de dados pr-

    existente.

    Visual Studio LightSwitch bom, mas preciso entend-lo!

    Figura 1 - Tela de escolha do tipo do projeto.

    Figura 2 - Tela de abertura do projeto LightSwitch.

  • 8/3/2019 codificando 18

    25/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    25252525Out / Nov - 2010 |

    Como o Mrcio j cobriu em seu artigo otrabalho com a primeira opo, neste arti-go cobriremos a segunda opo. Para isso,

    clique na opo Attach to external databa-se, a figura 3 apresenta esta janela e suasopes.

    Na verso Beta 1, o LightSwitch disponibi-liza trs opes para anexar fonte de da-dos. Database, SharePoint e WCF RIA Ser-vice. No entraremos em maiores detalhessobre cada uma das opes, mas, em li-nhas gerais, a opo Database faz menoa bancos de dados fsicos (neste artigo uti-lizaremos esta opo), a opo SharePointfaz meno aos fluxos de dados disponibi-

    lizados nos portais de colaborao da em-presa e, finalmente, WCF RIA Service fazmeno conectividade com algum servi-o disponibilizado como fonte de dados.Selecione a opo Database e clique emNext. A Figura 4 apresenta a tela que seabrir ao prosseguir.

    Como mencionado anteriormente, iremosutilizar a base de dados Northwind imple-mentada em SQL Server, portanto, no cam-po Datasource no alteraremos o tipo, muitoembora seja possvel. No campo Server Na-me definimos o nome do servidor do bancode dados, portanto, fornea o nome do ser-vidor que pretende se conectar. Na opoLogon on the server marque a opo que seadequa melhor ao seu cenrio. Em meu ca-so, marco a opo Use SQL Server Authenti-cation para utilizar o usurio do BD para

    autenticar. Na caixa Connect to a database,selecione o banco com o qual ir trabalhar eclique em OK. Ao clicar em OK a conexocom a base ser realizada e a tela apresenta-da na Figura 5 ser exibida.

    Visual Studio LightSwitch bom, mas preciso entend-lo!

    Figura 3 - Opes disponveis para selecionar umafonte de dados.

    Figura 4 - Configurao da conexo com aDatabase.

  • 8/3/2019 codificando 18

    26/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    26262626Out / Nov - 2010 |

    Note na Figura 5 que estamos selecionan-do apenas a opo Tables. No estamosinteressados neste artigo em trabalharcom as Views. Aps selecionar Tables e no-mear o Data Source, basta clicar em Finish.Se tudo correu bem, voc dever estar vi-sualizando uma tela semelhante Figura6.

    interessante observar tambm a SolutionExplorer do projeto, a Solution Explorer de-ve estar parecida com a Figura 7.

    Muito bem. J possumos todos os requisi-tos necessrios para construirmos nossosaplicativos no Visual Studio LightSwitch.Para exemplificarmos, vamos construir du-as telas e execut-las. A primeira tela ser ade Insero de Produtos e a segunda sera de Pesquisa de Produtos.

    Na Solution Explorer , d um duplo cliquesobre a entidade Products. Na janela que seabre, no menu de atividades da janela, cli-que no boto com a opo Screen. Na

    janela que se abre, selecione a opo NewData Screen. Nomeie sua tela no campoScreen Name e em seguida, no campo a-

    baixo Screen Data, selecione a entidade dobanco de dados com a qual a tela se relacio-nar e enviar os dados.

    A Figura 8 apresenta este processo.

    Visual Studio LightSwitch bom, mas preciso entend-lo!

    Figura 5 - Selecionando as informaes do BDNorthwind que iremos trabalhar.

    Figura 6 - Tela apresentada aps anexar o BD.

    Figura 7 - Solution Exploreraps a adio da basede dados.

  • 8/3/2019 codificando 18

    27/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    27272727Out / Nov - 2010 |

    Os aspectos importantes da Figura 8 so:

    O que define se a tela ser de Inser-o, Busca, Grid Editvel, Lista deValores, etc, a escolha do template.Ao selecionar o template , uma ima-gem ilustrativa do que ser constru-do pelo LightSwitch apresentada adireita.

    A nomeao da tela para o sistema,para isso use o campo Screen Name.

    informar para o LightSwitch a enti-dade com a qual a tela se relacionar.No caso, como criaremos uma tela de

    insero de produtos, selecionamos aentidade Produtcts1.

    Ao clicar em OK uma nova janela se abre,com algumas opes estranhas pri-meira vista. O artigo do Mrcio explicacomo o LightSwitch gerencia a interfacedas telas. Para ns aqui, basta saber que atela foi criada com sucesso com base na

    tabela de produtos. Para confirmar estainformao, compile sua aplicao

    pressionando F5. Se tudo correu bem, vocdever estar visualizando uma tela seme-lhante Figura 9.

    Eis que a mgia acontece. Uma tela de inser-o de produtos com aspecto profissionalem Silverlight, uma aplicao com o concei-to Out-Of-Browser gerada. E a perguntaaqui ? Quantas linhas de cdigo foram es-critas para isso? Nenhuma, muito emborahaja a possibilidade de personalizar os cdi-gos gerados pelo LightSwitch.

    Um aspecto a ser notado na Figura 9 o deque os nomes dos campos esto em Ingls,ou seja, da forma como esto na base de da-

    dos. Voc pode estar se perguntando: No possvel customizar? Sim, possvel e ex-tremamente fcil realizar esta tarefa. Assimcomo possvel adicionar novos campos,aes e comportamentos. Mas isso assuntopara um artigo futuro.

    Vamos ento criao de uma tela de pes-quisa de produtos. O procedimento rigo-

    rosamente o mesmo do apresentado na

    Visual Studio LightSwitch bom, mas preciso entend-lo!

    Figura 8 - Criando a tela de insero dos dados.

    Figura 9 - Tela de Insero de Produtos.

  • 8/3/2019 codificando 18

    28/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    28282828Out / Nov - 2010 |

    figura 8, mas a diferena est na escolhado template. O template correto a ser esco-lhido aqui Search Data , conforme apre-

    senta a figura 10.

    Perfeito. Se tudo correu bem, ao compilarsua aplicao voc dever estar visuali-zando uma tela semelhante a Figura 11.

    O aspecto mais importante a se notar naFigura 11 o fato de, uma nova opo seradicionada no menu esquerda. A opo BuscaProdutos. Ao clicar nesta opo,a tela de busca de produtos apresentada.

    Basta digitar um valor no campo de busca

    para que o valor retornado seja apresentadono GridView.

    Concluso

    O que podemos concluir aps uma rpidautilizao do LightSwitch que, para aquiloque ele se prope a fazer (construir aplicati-vos de pequeno porte por profissionais queno tenham tanta experincia com o desen-volvimento de softwares de forma rpida)ele timo.

    Outro aspecto importante a ser notado eque, em minha opinio tende para o sucessoda ferramenta, o fato de o LightSwitch ge-rar deploy da aplicao tanto para Webquanto para ambientes Desktop.

    Evidentemente, o Visual Studio LightSwitchno veio para substituir ou sobrepor o mer-cado do Visual Studio tradicional. No h

    nem como falar nestes termos. Aplicaesescalveis e com nvel de complexidade m-dio para cima no sero contempladas peloLightSwitch.

    Visual Studio LightSwitch bom, mas preciso entend-lo!

    Figura 10 - Criando a tela de Busca de Produtos.

    Figura 11 - Execuo da tela de Busca de Produ-tos.

    Fabrcio Sanchez

    Possui graduao em Cincia da Compu-tao pela UNORP - Centro Universitriodo Norte Paulista (2005). Obteve ttulo demestre junto a USP (Universidade de So

    Paulo) no Programa Interunidades Bioen-genharia campus So Carlos. Atualmente aluno de dou-torado e pesquisador na mesma instituio e departamen-to. membro regular do SpeechLab (Laboratrio de Pro-cessamento de udio e Voz) localizado no Instituto deFsica de So Carlos. Atua na rea de processamento di-gital de udio e voz, especialmente baseado em waveletsaplicadas insero e extrao de watermarks em sinaisde udio e fala, anlise cepstral de sinais de fala e desen-volvimento de ferramentas computacionais aplicadas aoprocessamento digital de sinais. Atua como desenvolve-dor web na Unio Central Brasileira da IASD com C# eASP.NET desde 2007. fundador e administrador da

    comunidade .NET Interior.

  • 8/3/2019 codificando 18

    29/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 29292929

    Entity Framework: Trabalhando

    com Model First

    Neste artigo vamos falar sobre o EntityFramework 4 , que foi lanado junto como .NET FRAMEWORK 4 e, apesar de sersua segunda verso, leva esse nome paraacompanhar o framework.

    Essa verso do Entity contm recursos quea diferenciam de sua primeira verso, en-tre eles esto a possibilidade de se traba-lhar com POCO(Plain Old CLR Objetc Bom e Velho Objeto da CLR), trabalhar a-

    penas com cdigo (Code Only) no depen-dendo mais de um arquivo EDMX parafazer o mapeamento das entidades e, den-tre outros, conta agora com Lazy Loading,(que abordaremos neste artigo).

    Teremos como Interface de Usurio o ASP.NET WebForms , mas no vou entrarem detalhes da interface porque no o

    foco do artigo.

    Iniciando ento nossa implementao, abrao Visual Studio 2010, v at o Menu File >New > Project e selecione a opoASP.NETWeb Application , como apresentado nafigura 1. Feito isso, o Visual Studio criarum novo projeto com um template Web-Forms, e a sua Solution j dever ter em sua

    estrutura, Master Page , e etc., como vocpode visualizar na figura 2.

    Vamos criar agora o nosso arquivoEDMX para comearmos a trabalhar, e-

    fetivamente, com o Entity Framework.Para tanto, clique com o boto direito noProjeto, Add > New Item, e se abrir a tela

    Por: talo Chesley

    Figura 1 - Selecionando o tipo de projeto que

    ser utilizado.

    Figura 2 - Template do Web Forms gerado peloVisual Studio 2010.

  • 8/3/2019 codificando 18

    30/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 30303030

    Vamos trabalhar com um cadastro deBandas e msicas dessas bandas, comoexemplo. J temos a nossa entidade ban-da, com seu ID. Agora, clicando com o

    boto direito sobre a entidade, emADD -> Scalar Property , voc pode adicionaruma Propriedade e definir tamanho, tipoe vrias outras caractersticas atravs doMenu propriedades do lado direito, noVisual Studio. Com as entidades criadastemos o nosso modelo conceitualsemelhante figura 5.

    semelhante da Figura 3, bastando sele-cionar Data e o ADO.NET Entity Frame-work Data Model.

    Temos agora em nossa Solution , um ar-quivo na extenso edmx, com o qual cri-aremos o nosso Modelo Conceitual deforma bastante prtica e simples. Depoisde selecion-lo e clicar em ADD, vocpoder optar por Empty Model ou Gene-rate from DataBase, respectivamente, criarum Modelo vazio, ou cri-lo a partir deum banco de dados. Como no temosnosso banco de dados, vamos optar peloEmpty Model e clicar em Finish. Clique

    duas vezes sobre o EDMX e ele se abrir.Clique com o boto direito no Modelo,v em ADD > Entity e se abrir uma ja-nela semelhante da figura 4 para quevoc opte por algumas caractersticasiniciais da sua entidade: Qual ser o no-me da Classe criada (Entity Name), o no-me da tabela no banco (Entity Set) e sedeseja criar uma propriedade chave

    (Create key property) e o seu nome(Property Name) e tipo (Property Type).

    Entity Framework: Trabalhando com Model First

    Figura 3 - Optando pelo Entity Framework, paraacesso aos dados.

    Figura 4 - Configurando uma entidade.

    Figura 5 - Modelo conceitual sem associao.

  • 8/3/2019 codificando 18

    31/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 31313131

    Agora, clicando com o boto direito noModelo Conceitual e selecionando a op-o Generate DataBase from Model podere-

    mos criar o Script do Banco de Dados erod-lo criando o Banco de Dados comas mesmas associaes que fizemos noModelo Conceitual, como podemos vernas figura 8, 9 e 10, inclusive a string deconexo criada no nosso Web.config,sem que tenhamos que coloc-la manu-almente.

    timo, mas como voc deve ter imagina-do, falta algo: A ligao entre as duasentidades, para isso, utilizaremosAssoci-

    ation onde poderemos optar por associa-es 1 pra 1, 1 para N e N para N, de for-ma bastante simples, como vou demons-trar a seguir.Clicando sobre a Entidademsica, ADD -> Association , se abrir u-ma janela semelhante da figura 6 ondepoderemos fazer configuraes, confor-me nossa regra. Uma mesma Banda po-de ter vrias msicas, logo, faremos a

    configurao desta forma, que bastanteintuitiva.

    Agora sim, temos o nosso modelo con-ceitual prontinho, com a associao, co-mo podemos ver na figura 7.

    Entity Framework: Trabalhando com Model First

    Figura 6 - Configurando uma associao.

    Figura 7 - Modelo conceitual com a Associao.

    Figura 8 - Gerando o banco de dados atravs doEntity Framework.

    Figura 9 - Executando script de criao doBanco de Dados a partir do Visual Studio 2010.

  • 8/3/2019 codificando 18

    32/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 32323232

    Bandas objBandas = context.Banda.Where(p=> p.ID == CodBanda).Single();context.DeleteObject(objBandas);context.SaveChanges();}

    publicIQueryable RetornaTodas-Bandas(){returnfrom l in context.Banda select l;}

    publicBandas RetornaUmaBanda(int Cod-Banda){return context.Banda.Where(p => p.ID ==CodBanda).SingleOrDefault();}

    Primeiramente, instanciamos o contextodo Entity Framework , no nosso caso, de-

    nominado ModeloConceitualContainer. ele quem conhece todos os mapeamen-tos e implementa as classes referentes sentidades do banco, logo, ele quem vaiser relacionar com o banco diretamente.

    Incluir: Neste mtodo, passamos comoparmetro o nome da banda e na imple-mentao, preenchemos a propriedadeNomeBanda com o contedo passado noparmetro. Logo depois, atravs do m-todo AddToBanda passando o objeto an-teriormente preenchido como parme-tro, adicionamos este objeto ao contexto,e chamamos o mtodo Savechanges, queser responsvel por fazer o commit des-tes dados no banco de dados.

    Alterar: Este mtodo recebe como par-metro o cdigo da banda que ser altera-da e o nome que esta banda receber.

    Bom, agora j temos o nosso Projeto webcriado, o modelo conceitual e o banco dedados, vamos a codificao. Criaremosduas pginas, a saber: Musicas.aspx eBandas.aspx.

    O CRUD com o Entity Framework bas-tante simples, e se resume em algunspoucos mtodos, como podemos ver naListagem 1.

    privateModeloConceitualContainer context= newModeloConceitualContainer();

    publicvoid Incluir(string NomeBanda){Bandas objBanda = newBandas(){NomeBanda = NomeBanda};

    context.AddToBanda(objBanda);context.SaveChanges();}

    publicvoid Alterar(int CodBanda, stringNomeBanda){Bandas objBandas = context.Banda.Where(p=> p.ID == CodBanda).Single();objBandas.NomeBanda = NomeBanda;context.SaveChanges();}

    publicvoid Excluir(int CodBanda){

    Entity Framework: Trabalhando com Model First

    Figura 10 - Diagrama de Entidade deRelacionamento do Banco gerado pelo Entity.

    Listagem 1 - Mtodos.

  • 8/3/2019 codificando 18

    33/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 33333333

    publicvoid Incluir(string NomeMusica, intCodBanda)

    {Musicas objMusica = newMusicas()

    { NomeMusica = NomeMusica, BandasID =CodBanda };

    context.AddToMusica(objMusica);context.SaveChanges();

    }

    publicvoid Alterar(int CodMusica,string NomeMusica, int CodBanda)

    {Musicas objMusica = con-

    text.Musica.Where(p => p.ID == CodMusi-ca).SingleOrDefault();

    objMusica.NomeMusica = NomeMu-sica;

    objMusica.BandasID = CodBanda;

    context.SaveChanges();}publicvoid Excluir(int CodMusica){

    Musicas objMusica = con-text.Musica.Where(p => p.ID == CodMusi-ca).SingleOrDefault();

    context.DeleteObject(objMusica);context.SaveChanges();

    }

    publicIQueryable RetornarTodasAs-Musicas()

    {returnfrom l in context.Musica select

    l;}

    publicMusicas RetornarUmaMusica(intCodmusica)

    {return context.Musica.Where(p =>

    p.ID == Codmusica).SingleOrDefault();}

    Baseado nessas informaes, buscamosesse dado no contexto atravs de umaexpresso lambda , passamos a alterao

    desejada e chamamos o mtodo Save-Changes. O contexto se encarregar deaplicar as alteraes no banco.Note que

    buscamos este dado no contexto, logo,ele j estava attachado no contexto, ouseja, era conhecido por ele. Se voc esti-ver tralhando com um objeto no atta-chado no contexto e quiser persisti-lo no

    banco de dados, ser necessrio fazer o

    attach no contexto.

    Excluir: Este mtodo responsvel porexcluir um dado, logo, ele apenas recebea chave primria da entidade que ir ex-cluir. Na primeira linha do mtodo, bus-camos este dado, depois invocamos omtodo DeleteObject do contexto, passan-do-o como parmetro e em seguida omtodo SaveChanges para dar o commitdas alteraes no banco de dados.

    RetornaTodasBandas: Este mtodo temcomo retorno uma coleo de todas as

    banda no banco de dados. O retorno pa-dro de expresses LINQ IQueryable,neste mtodo estamos retornando o re-sultado da consulta, diretamente.

    RetornaUmaBanda: Este mtodo retornaum objeto do tipo banda, atravs do seucdigo que passado como parmetro.

    Para a interao com a entidade Musi-cas, temos mtodos bastante semelhan-tes ao das Bandas, como voc pode con-ferir na Listagem 2.

    Entity Framework: Trabalhando com Model First

    Listagem 2 - Mtodos.

  • 8/3/2019 codificando 18

    34/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 34343434

    Concluso

    Tivemos a oportunidade de entender co-mo simples o trabalho com persistnciae recuperao de informaes de um

    banco de dados relacional utilizando oEntity Framework.

    No prximo artigo falaremos sobre PO-CO (Plain Old CLR Objects) utilizandoEntity Framework , que foi um dos recur-sos mais esperados nesta verso do En-tity Framework.

    Um forte abrao e at a prxima.

    Pode-se ver nas figuras 11, 12, 13 e 14algumas pginas utilizando o acesso adados como Entity Framework.

    Entity Framework: Trabalhando com Model First

    Figura 11 - Cadastrando uma Banda.

    Figura 12 - Banda cadastrada e buscada dobanco de dados, com o Entity Framework.

    Figura 13 - Cadastrando uma msica.

    Figura 14 - Msica depois de cadastrada ebuscada pelo Entity Framework.

    talo Chesley

    Graduando em Anlise e Desenvolvi-mento de Sistemas, pela UniversidadeVale do Rio Doce. J integrou equipesde suporte de sistemas em Delphi.

    Atualmente trabalha com Desenvolvimento deSistemas em ASP.NET, Windows Forms e WPF ecompe a equipe de desenvolvimento daUNIVALE. Mantm o blog:

    http://italochesleytech.wordpress.com.Participa ativamente de Comunidades de Desenvol-vimento.

  • 8/3/2019 codificando 18

    35/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    35353535Out / Nov - 2010 |

    SQL Server Integration Services(SSIS)

    SQL Server Integration Services (SSIS) uma ferramenta que usamos para executaroperaes de ETL, ou seja, extrao,transformao e carga de dados. Embora oprocessamento ETL seja comum em DataWarehouse (DW), o SSIS no de forma li-mitada a apenas DW, por exemplo,quando voc cria um plano de manutenousando SQL Server Management Studio

    (SSMS) um pacote SSIS criado. Em umnvel alto, o SSIS fornece a capacidadepara:

    Recuperar dados a partir depraticamente qualquer fonte.

    Realizar vrias transformaes nosdados, por exemplo, converter umtipo para outro, converter para

    maisculas ou minsculas, executarclculos, etc.

    Carregar dados praticamente emqualquer fonte.

    Definir um workflow.

    A primeira verso do SSIS foi lanada como SQL Server 2005. SSIS uma substituiopara o Data Transformation Services

    (DTS), que estava disponvel com o SQLServer 7.0 e SQL Server 2000. SSIS

    baseia-se nas capacidades introduzidascom DTS.

    Neste artigo, vamos passar por umasrie de temas que voc precisa entenderpara ter sucesso em construir um pacoteSSIS. Nosso esquema de alto nvel a

    seguinte:

    Criar pacotes SSIS no SQL ServerManagement Studio (SSMS)

    Implantando pacotes SSIS

    Execuo de pacotes SSIS

    Criao de pacotes do SSIS no

    SQL Server Management Studio(SSMS - Pacotes bsicos)

    SQL Server Management Studio (SSMS),contm um Assistente de Importar eExportar (Import e Export Wizard) astarefas que voc pode usar para copiardados de uma fonte de dados para ou-tro. Voc pode escolher entre uma varie-

    dade de fontes e tipos de fonte de dadosde destino, selecione as tabelas paracopiar ou especificar sua prpria

    Por: Everton Jos Benedicto

  • 8/3/2019 codificando 18

    36/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    36363636Out / Nov - 2010 |

    consulta para extrair dados e salvar seutrabalho como um pacote SSIS. Usando oAssistente de Importao e Exportao

    um bom ponto de partida para a apren-dizagem sobre os pacotes do SSIS. Vocpode executar o pacote SSIS como gerado, agend-lo para ser executado emum momento posterior, ou fazer asalteraes necessrias para atender ssuas necessidades.

    Maneira simples de exportardados do SQL Server -(Assistente de Exportao)

    SQL Server Management Studio (SSMS)fornece a tarefa Export Wizard, quepode ser usado para copiar dados deuma fonte de dados para outro. Vocpode escolher entre uma variedade defontes e tipos de fonte de dados de desti-no, selecionando as tabelas para copiar ou

    especificar sua prpria consulta para ex-trair dados e salvar seu trabalho comoum pacote SSIS. Nesta seo, vamospercorrer o Assistente de Exportao eexportar dados de um banco de dadosSQL Server para uma planilha do Excel.

    Para comear SSMS execute-o clicandono SQL Server Management Studio em

    Iniciar\Todos os Programas\MicrosoftSQL Server. Ao abrir o SSMS voc terque se conectar no banco, conecte com oDatabase Engine. No exemplo, eu uso o

    banco de Dados AdventureWorks quevoc pode baixar no sitehttp://sqlserversamples.codeplex.com/

    releases/view/4000.

    Localize o banco de dados Adventure-

    Works no SSMS Object Explorer, se oObject Explorer no visvel, clique no

    SQL Server Integration Services (SSIS)

    menu Exibir, em seguida, clique em Ob-

    ject Explorer conforme figura 1.

    Aps feita a conexo com o banco dedados AdventureWorks, clicar com o

    boto direito do mouse no banco dedados AdventureWorks no ObjectExplorer, selecione Tarefas (Tasks), emseguida, exportar dados (Export Data...)a partir do menu de contexto para iniciaro Assistente de Exportao. Cliqueem Avanar na janela de Bem-Vindoque se abrir. Vamos percorrer oassistente passo-a-passo.

    Na caixa de dilogo Data Source, vocespecifica a fonte de seus dados. Uma vez

    que estamos executando o assistente deexportao, os campos da caixa dedilogo so exibidos com os valores jpreenchidos, conforme mostrado abaixo(com base no banco de dados queestamos utilizando para iniciar oassistente de Exportao) conforme figura2.

    Figura 1 - Conectando-se ao banco de dadosAdventureWorks.

  • 8/3/2019 codificando 18

    37/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    37373737Out / Nov - 2010 |

    Clique em Avanar (Next) para escolhero destino dos dados. Na tela de dilogode Destino, voc especifica o destino dafonte de dados. H muito poucas opesdisponveis para os destinos, aintroduo adicional varia de acordocom a fonte de dados de destinoescolhido. Para o nosso exemplo vamosexportar os dados para o Excel, emseguida, usar essa planilha Excel como afonte da manifestao do assistente deimportao mais para frente. Preencha acaixa de dilogo conforme figura 3.

    SQL Server Integration Services (SSIS)

    Clique em Avanar (Next) para ir para a caixade dilogo que especifica a tabela ou umaquery para os dados. Nesta caixa de dilogo,permite que voc escolha se deseja exportar

    dados selecionando tabelas e/ou exibies dafonte de dados ou especificar uma consultapara extrair dados. Selecione Copiar dados deuma ou mais tabelas ou exibies (Copy data

    from one or more tables or views) como mos-trado na figura 4.

    Clique em Avanar (Next) para ir para acaixa de dialogo que voc selecionar astabelas ou Exibies (Views). Na caixa dedilogo permite que voc selecione as ta-

    belas e exibies (Views) que voc desejaexportar. Para a nossa demonstrao va-mos selecionar a tabela Per-son.ContactType conforme demonstrado

    na figura 5.

    Figura 2 - Caixa de dilogo Data Source.

    Figura 3 - Tela de dilogo de destino dos dados.

    Figura 4 - Assistente (Wizard) de Importao e

    Figura 5 - Tela do assistente (Wizard) para sele-cionar tabelas e vises que sero Exportadas.

  • 8/3/2019 codificando 18

    38/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    38383838Out / Nov - 2010 |

    Voc pode clicar no boto Preview paravisualizar as primeiras 100 linhas dedados na fonte de dados como mostrado

    na figura 6.

    Clique em OK e depois em Avanar(Next) para continuar o processo. Na cai-xa de dilogo, oferece opes para exe-cutar a operao de exportao e criarum pacote SSIS e guard-lo para o SQLServer ou o sistema de arquivos comomostrado na figura 7.

    Para os nossos propsitos, vamos salvaro pacote SSIS para que possamos v-loposteriormente neste artigo. Clique em

    Avanar para prosseguir para a caixa dedilogo Salvar Pacote SSIS, antes disso

    SQL Server Integration Services (SSIS)

    aparecer outra caixa de dilogo cliqueem OK (figura 8).

    Se voc optar por salvar a sua operaode exportao como um pacote SSIS nodilogo anterior. Preencha a caixa de di-logo como mostrado na figura 9.

    Clique em avanar para ir para a caixa de

    dilogo de finalizao do assistente(figura 10).

    Figura 6 - Tela de Preview dos dados.

    Figura 7 - Caixa de dilogo para salvar o pacoteSSIS.

    Figura 8 - Caixa de dilogo para nvel de proteodo pacote.

    Figura 9 - Caixa de dilogo aberta aps selecio-nar a opo para salvar o pacote SSIS.

    Figura 10 - Tela de concluso do Assistente.

  • 8/3/2019 codificando 18

    39/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    39393939Out / Nov - 2010 |

    Clique em Concluir (Finish) para execu-tar o pacote SSIS. Voc pode abrir a pla-nilha do Excel e visualizar a tabela que

    foi exportado. Uma parte da planilha doExcel mostrada na figura 11.

    Maneira simples para importardados no SQL Server -(Assistente de Importao)

    SQL Server Management Studio (SSMS),prev a importao tarefa Wizard, quepode ser usado para copiar dados de u-ma fonte de dados para outro. Voc po-de escolher entre uma variedade de fon-tes e tipos de fonte de dados de destino,selecione as tabelas para copiar ou espe-cificar sua prpria consulta para extrairdados e salvar seu trabalho como umpacote SSIS. Iremos percorrer o Assisten-te de Importao e importar dados deuma planilha do Excel em uma tabelaem um banco de dados SQL Server.

    Localize o banco de dados Teste noSSMS Object Explorer (criar o banco dedados se necessrio) veja na figura 12.

    SQL Server Integration Services (SSIS)

    Boto direito do mouse no banco de da-

    dos Teste no Object Explorer, selecioneTarefas (Tasks) e, em seguida importardados (Import Data...) a partir do menude contexto para iniciar o Assistente deImportao. Clique em Avanar paraavanar alm do dilogo Bem-vindo (seindicado).

    Na caixa de dilogo voc especifica a fon-te de seus dados. Preencha a caixa de di-logo como mostrado abaixo para especifi-car uma planilha Excel como a fonte dedados na figura 13.

    Clique em avanar (Next) para ir para acaixa de dilogo de Destino. Na caixa de

    Figura 11 - Planilha com os dados exportados.

    Figura 12 - Conectando-se ao banco de dadosAdventureWorks.

    Figura 13 - Assistente (Wizard) para Importardados.

  • 8/3/2019 codificando 18

    40/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    40404040Out / Nov - 2010 |

    dilogo de Destino voc especifica o des-tino da fonte de dados para os dadosque voc est importando. Uma vez que

    estamos executando o assistente de im-portao, a janela ser exibida com osvalores j preenchidos, conforme mos-trado abaixo (com base no banco de da-dos que voc clicou com o boto direitodo mouse para iniciar o assistente de im-portao) veja na figura 14.

    Clique em avanar (Next) para ir para atela de especificao de tabela ou consul-tas. Na caixa de dilogo voc escolha sedeseja importar dados, selecionando ta-

    belas e / ou exibies (Views) da fonte dedados ou especificar uma consulta paraextrair dados. Selecione Copiar dados deuma ou mais tabelas ou exibies (Copydata from one or more tables or views)como mostrado na figura 15.

    SQL Server Integration Services (SSIS)

    Clique em Avanar (Next) para ir para acaixa de dilogo de seleo de tabelas ouexibies (Views). Selecionar origem e E-xibies (Views) que voc deseja impor-tar. Para a nossa demonstrao vamos se-lecionar a tabela ContactType conformedemonstrado na figura 16.

    Voc pode clicar no boto Preview paravisualizar as primeiras 100 linhas de da-

    dos na fonte de dados como mostrado nafigura 17.

    Figura 14 - Tela do Assistente (Wizard) paraselecionar o destino dos dados.

    Figura 15 - Tela do Assistente (Wizard) para

    selecionar tabelas ou query's que sero copiadas.

    Figura 16 - Tela do assistente (Wizard) para se-lecionar tabelas e vises que sero Importadas.

  • 8/3/2019 codificando 18

    41/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    41414141Out / Nov - 2010 |

    Clique em OK e depois em Avanar

    (Next) para ir para a tela de Salvar e Exe-cutar Pacote. Na Caixa de dilogooferece opes para executar a operaode importao e criar um pacote SSIS eguard-lo para o SQL Server ou osistema de arquivos como mostrado nafigura 18.

    Clique em avanar (Next) e em seguidaem OK na tela da figura 19.

    SQL Server Integration Services (SSIS)

    Na Caixa de Dialogo Preencha a caixa dedilogo como mostrado na figura 20.

    Clique em Avanar (Next) para concluir-mos o assistente. Clique em Concluir paraexecutar o pacote SSIS. Voc pode abrir atabela importada no SSMS e visualiz-lo.Todos os registros da tabela somostrados na figura 21.

    Figura 17: Tela de Preview dos dados.

    Figura 18 - Caixa de dilogo para salvar opacote SSIS.

    Figura 19 - Caixa de dilogo para nvel de prote-o do pacote.

    Figura 20 - Tela de Finalizao do Assistente(Wizard) de Importao.

    Figura 21 - Tela de conexo com o banco dedados, mostrando que a importao foi realizadacom sucesso.

  • 8/3/2019 codificando 18

    42/67

  • 8/3/2019 codificando 18

    43/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    43434343Out / Nov - 2010 |

    O novo Visual Studio LightSwitch

    Por: Alliston Carlos

    Todo bom desenvolvedor .Net sabe usarcom maestria a ferramenta de todo dia, oVisual Studio. Todos concordam que esta uma IDE poderosa, que nos economizavrias horas em um projeto crtico, e que

    a ferramenta no nos deixa na mo.

    Sabe-se tambm, que existem vrias ver-ses do Visual Studio, tais comoProfessional, Ultimate e Express, cadauma se adequando s necessidades de umprofissional, empresa ou equipe dedesenvolvimento.

    Criada recentemente, uma nova edio doVisual Studio est chamando a atenopela sua simplicidade na criao deaplicaes. Esta edio o LightSwitch,lanada dia 19 de agosto de 2010 paraassinantes MSDN, e para o pblico emgeral no dia 23 de agosto.

    Esta verso difere das outras por focarmais na produtividade do que no cdigo

    propriamente dito. As aplicaes criadasso baseadas em Silverlight, o quepermite escrevermos aplicaes para web,desktop e nuvem. Permite aosdesenvolvedores criarem aplicaes leves,que no tm muito para onde crescerem.Lgico que o criador deve avaliar secompensa utilizar o LightSwitch ou no.Vejamos ento como criar uma aplica-

    o bsica com ele.

    Primeiramente, quem possui o VisualStudio j instalado, contar com novostemplates de projetos, ao instalar asferramentas para o LightSwitch,permitindo o desenvolvimento tanto em

    C# quanto em VB.Net, ambos rodandosob o .Net Framework 4.0. Vamos entocriar uma aplicao chamadaLightSwitchTest, conforme Figura1.

    Criando a aplicao LightSwitchTest, oVisual Studio j abre um servidor de a-plicao (LightSwitch Web Server Portxxxx), ao invs de abrir somente no in-cio do debug.

    Temos tambm a abertura de uma pgi-na chamada LightSwitchTest Desig-ner, onde por default, temos duas op-

    es: Create new table e Attach to ex-

    Figura 1 - Nova aplicao LightSwitch (VB.Netou C#).

  • 8/3/2019 codificando 18

    44/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    44444444Out / Nov - 2010 |

    ternal database, como podemosvisualizar na Figura 2.

    Outra coisa diferente, a Solution Explo-rer, que no possui nenhum arquivo .cs,.aspx, ou .xaml. Est somente com a estru-tura padro.

    Clicando em Create new table, teremosum designer de entidade, aonde j virinserida a coluna Id do tipo Int32. Pode-mos adicionar quantos campos quisermos,assim como no SQL Management Studio.Criaremos um cadastro de usurio, so-mente com trs campos, o Id j existente,Nome e Email. Fiquem atentos aos tiposque podemos escolher (figura 3).

    Basicamente, a tabela Usuario est criada.

    Podemos aplicar propriedades sobre cada

    coluna recm-criada, como tamanho docampo e validaes customizadas.

    Na barra acima da tabela, temos algumasopes de adio, dentre elas a opo Scre-en, onde adicionaremos uma tela de cadas-tro do nosso Usurio. E claro, no s cadas-tro, mas tambm de listagem com pesquisa,detalhes, grid editvel e lista com detalhes.

    Selecionando uma New Data Screen, con-forme mostra a Figura 4, poderemos refe-renciar a tabela Usuario com a tela a ser cri-ada, chamaremos esta tela de NovoUsuario.

    Agora vem a parte boa! Sem editar mais nada, vamos exe-cutar o projeto, com um simples F5 (somente lembrando, necessrio que o servio do SQL Server esteja rodando).

    Isto nos mostrar finalmente a tela de cadastro de um no-vo usurio, sem customizao alguma. Alguns de vocs jdevem conhecer o cone que apareceu no debug da aplica-o. Ele indica que uma aplicao Silverlight rodandofora do browser (Out-Of-Browser) veja na figura 5.

    O novo Visual Studio LightSwitch

    Figura 2 - Projeto LightSwitch iniciado.

    Figura 3 - Tabela usurio.

    Figura 4 - NovoUsuario para adio de itens natabela Usuario.

  • 8/3/2019 codificando 18

    45/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    45454545Out / Nov - 2010 |

    Para criarmos a tela de listagem, desta vezfaremos por meio da Solution Explorer:clicando com o boto direito sobre Scre-ens Add Screen, mas neste caso, selecio-naremos o template Search Data Screen,onde Screen Data apontar para a tabelaUsuarios, e o nome da tela (Screen Name)passando para SearchUsuario, conformeindicado na Figura 6.

    Inserindo um registro em NovoUsuario,

    podemos encontrar este mesmo registro quefoi armazenado apenas clicando em Sear-chUsuario. Esta tela de listagem vale alguns

    comentrios:

    Dando uma olhada rpida, ela j traz umcampo de pesquisa, que far suas operaesem todos os campos da tabela. Por exemplo,se pesquisarmos com base no exemplo aci-ma, a palavra hotmail, s teremos listadosos registros de nome Fulano e Z. Mas seprocurarmos por Z, somente ser retor-nado o registro de nome Z.

    Vale notar tambm a barra embaixo do

    Grid, que permite que a paginao ocorrade forma automtica, alm de contarmoscom um boto no topo onde h o texto Ex-port to Excel, e faz exatamente o que pro-pe: exporta dados para o Excel sem preci-sar de nenhuma interveno do usurioalm do clique no boto conforme figura 8.

    O novo Visual Studio LightSwitch

    Figura 5 - Novo usurio aplicao rodando.

    Figura 6 - SearchUsuario.

    Figura 7 - Listagem de Usurios.

  • 8/3/2019 codificando 18

    46/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    46464646Out / Nov - 2010 |

    Infelizmente no posso cobrir todo oLightswitch neste artigo, pois so vriospequenos detalhes que tornam odesenvolvimento com esta ferramenta ain-da mais fcil. Mas espero que tenhaconseguido mostrar um pouco do poderde construo de aplicaes bsicas que oVisual Studio agora contm, e fazer comque os leitores se interessem por aprendermais sobre esta nova funcionalidade.

    O novo Visual Studio LightSwitch

    Figura 8 - Dados exportados para o Excel.

    Alliston Carlos

    Desenvolvedor .Net Web eWindows, focado em tecnologi-

    as de User Experience aprimo-rado, como Silverlight e WPF.

    bacharel em Sistemas de Informao. Jministrou treinamento na turma de 2008/2do Students 2 Business, e atualmente ins-trutor pela Pensou.Net. Estudando .NetFramework a mais de 3 anos, possui quatrocertificaes, MCP, MCTS Windows-Forms e MCTS WPF 3.5, e MCTS Web 3.5.

    Faz parte ativamente do grupo de usuriosDevGois.Net, atualmente trabalhando emuma das maiores empresas de TI do estadode Gois.

  • 8/3/2019 codificando 18

    47/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    47474747Out / Nov - 2010 |

    Gerando Grficos com Silverlight,WCF e LINQ

    o C# , framework 4.0 e a aplicaoSilverlight Application (figura 2).

    A figura 3 d a opo para utilizar umapagina para testar a aplicao Silverlight,onde o Visual Studio cria duas paginas(.html e .aspx) que contem os cdigosnecessrios para executar a aplicao Sil-verlight, caso seja necessrio utilizar essaaplicao em algum site, pode-se utilizaressas paginas como exemplo. Neste caso,apenas clique em OK.

    Por: Antonio Lucas Finotti Pereira

    Descritivo do Cdigo:

    Desenvolvendo uma aplicao utilizandoSILVERLIGHT, WCF, LINQ e Silverlight 3

    ToolKit

    (http://silverlight.codeplex.com/releases/view/36060).

    O propsito deste artigo desenvolverum grfico simples para exemplificar autilizao das tecnologias: SIlverlight,WCF e LINQ.

    Tecnologias envolvidas:

    Microsoft Visual Studio 2010 C# .Net,Silverlight, WCF, SQL Server e LINQ.

    Iniciaremos um novo projeto, com onome de SilverlightWcf (figura 1).

    Aps selecionar um novo projeto, necessrio selecionar qual o tipo deaplicao que ser desenvolvida, tambm

    podemos selecionar qual linguagem eframework ser utilizado, neste caso ser

    Figura 1 Criando um novo projeto.

    Figura 2 Definindo um nome para o novo pro-jeto.

    Figura 3 Definindo a verso e novo da aplica-o Silverlight.

  • 8/3/2019 codificando 18

    48/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    48484848Out / Nov - 2010 |

    A figura 4 mostra um exemplo de comoficar janela de desenvolvimento doVisual Studio. Note no Solution Explorer

    que o Visual Studio criou duas aplicaes,sendo uma para Silverlight e a outra umaaplicao Web com a classe javascriptnecessria para rodar o silverlight.

    Agora necessrio criar o banco de dados.Para isso selecione a janela Server

    Explorer, clique no cone ou o botodireito do mouse em Data Connections eselecione Add Connection... (figura 5)

    Ser exibida uma janela solicitando as

    informaes (figura 6).

    Server Name: Nome do Servidor. Apenas cli-que na seta do combobox que ele mostrar asinstancias do SQL Server que esto instala-das na maquina.

    Log on to the server: Selecione a opo User aWindows Authentication.

    Connect to a database: Nome do banco de da-

    dos que ser utilizado. Selecione a opoSelect or enter a database name. Voc poderutilizar um banco de dados que j est cria-do ou informar o nome de um novo bancode dados, ele faz a criao do mesmo auto-maticamente, mas antes ele exibir uma ja-nela fazendo est pergunta.

    Aps seguir estes passos o banco de dados

    ser inserido na janela do Server Explorer, a

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 4 - Ambiente de Desenvolvimento doVisual Studio.

    Figura 5 Adicionando uma nova conexo com oSQL Server.

    Figura 6 Definindo o nome do banco de dados.

  • 8/3/2019 codificando 18

    49/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    49494949Out / Nov - 2010 |

    figura 7 mostra um exemplo de como fica-ria esta janela.

    Agora necessrio criar a tabela (Dados) eIncluir trs campos (MS, DEBITO eCRDITO). A tabela 1 mostra a estruturacompleta da tabela.

    Para criar a tabela, primeiro necessrioexpandir as opes do banco de dadosque utilizado (ExemploWcf), depoisclicar o boto direito do mouse na pastaTABLES e clicar em Add New Table(figura 8).

    O Visual Studio exibir uma tela para infor-mar o nome do campo e o tipo, aps infor-mar os dados voc dever salva-los, em se-

    guida clicar em salvar o Visual Studio exibiruma janela solicitando o nome da tabela(figura 9).

    Depois de criar a tabela, necessrio inseriralgumas informaes para isso, expanda asopes do banco de dados, expanda a pastaTables, clique o boto direito do mouse natabela criada (Dados) e selecione a opoShow Table Data conforme figura 10.

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 7 Conexo j efetuada com o banco dedados.

    CAMPO TIPO

    MS VARCHAR(15)

    CREDITO DECIMAL(18,0)

    DEBITO DECIMAL(18,0)

    Tabela 1 Estrutura da tabela.

    Figura 8 Criando uma nova tabela no banco dedados.

    Figura 9 Definindo o nome da nova tabela.

    Figura 10 Exibindo os dados da tabela.

  • 8/3/2019 codificando 18

    50/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    50505050Out / Nov - 2010 |

    A Figura 11 mostra a janela exibida peloVisual Studio, os dados devem ser preen-chidos manualmente, pois, todas as clu-

    las so editveis.

    Agora necessrio implementar o servioque vai retornar os dados para o grfico.Selecione a janela Solution Explorer, cli-que com o boto direito do mouse no pro-

    jeto SilverlightWcf.Web, selecione a opoAdd e clique em New Item... conformefigura 12.

    Na janela Add New Item , selecione os

    Templates do Silverlight e escolha a opo

    Silverlight-enabled Wcf Service. Coloque onome de WcfExemplo.svc e clique em Add(figura 13).

    O Cdigo da listagem 1 mostra o contedodo arquivo WcfExemplo.svc que foiincludo no projeto.

    using System;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Activation;

    namespace SilverlightWcf.Web{

    [ServiceContract(Namespace ="")][AspNetCompatibilityRequirements

    (RequirementsMode =AspNetCompatibilityRe-quirementsMode.Allowed)]

    publicclassWcfExemplo{

    [OperationContract]publicvoid DoWork(){

    // Add your operation implementation

    herereturn;

    }

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 11 Visualizando/Incluindo dados na

    tabela.

    Figura 12 Incluindo um novo item no projeto.

    Figura 13 Selecionando um Template WCFnaaplicao.

  • 8/3/2019 codificando 18

    51/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    51515151Out / Nov - 2010 |

    // Add more operations here and mark

    them with [OperationContract]}

    }

    Note que o Mtodo DoWork() est com oatributo [OperationContract], isso signifi-ca que esse mtodo poder ser invocadopelo WCF , voc pode ter vrios mtodos

    mas somente os que esto com o[OperationContract] sero invocados.

    Agora ser utilizado o LINQ to SQL paratrabalhar com as informaes do banco dedados, para isso adicione um novo itemno projeto: Add New Item, selecione osTemplates do Data e escolha opo LINQto SQL Classes. Coloque o nome de

    BancoDados.dbml e clicar em Add (figura14).

    Depois de incluir este novo item, o

    arquivo BancoDados.dbml j aberto

    automaticamente, caso no seja s clicarduas vezes no mesmo que se encontra na

    janela Solution Explorer. Agora mapeie a

    tabela do banco de dados, para isso acessejanela Server Explorer clique na tabela Dadose arraste para o contedo do arquivoBancoDados.dbml, com isso o Visual Studio jfaz o mapeamento mostrando os campos databela com seus tipos de dados conformefigura 15.

    Agora volte para o arquivoWcfExemplo.svc e codifique o mtodo queretornara os dados para o grfico. Crie umaclasse com o nome Dados e crie as proprie-dades do mesmo jeito que esto na tabelado banco de dados, a classe poder sercriada no prprio arquivo.

    No Inicio da classe, onde se informa asnamespaces que so utilizadas, vamos in-cluir System.Collections.Generic, para utili-zar o List e a System.Data.Linq para utili-zar o Linq para acessar os dados.

    O cdigo da listagem 2 mostra como o ar-quivo WcfExemplo.svc dever ficar.

    Gerando Grficos com Silverlight, WCF e LINQ

    Listagem 1 Contedo do arquivoWcfExemplo.svc.

    Figura 14 - Selecionando um Template LINQ toSQL Classes no projeto.

    Figura 15 Definindo com qual tabela ser utilizado

    o LINQ.

  • 8/3/2019 codificando 18

    52/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    52525252Out / Nov - 2010 |

    using System;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Activation;using System.Collections.Generic;using System.Data.Linq;

    namespace SilverlightWcf.Web{

    [ServiceContract(Namespace ="")][AspNetCompatibilityRequirements

    (RequirementsMode =AspNetCompatibili-tyRequirementsMode.Allowed)]

    publicclassWcfExemplo{

    [OperationContract]publicvoid DoWork(){

    // Add your operation implementation

    herereturn;

    }}

    publicclassDados{

    publicstring Mes { get; set; }publicdecimal Credito { get; set; }publicdecimal Debito { get; set; }

    }}

    Depois disso crie o mtodo RetornaDados()que vai retornar um List com a dadosda classe Dados. O mtodo vai acessar atabela Dados, depois fazer um foreach pa-ra varrer todas as linhas retornadas, ali-mentar os dados da classe Dados e depoisincluir esses dados em uma lista da classe

    Dados (listagem 3).

    [OperationContract]publicList RetornaDados(){

    List dados =newList();using (BancoDadosDataContext ctx =

    newBancoDadosDataContext()){

    var obj_dados =from d in ctx.Dadosselect d;

    foreach (var item in obj_dados){Dados dado =newDados();

    dado.Mes = item.Mes;dado.Credito = i-

    tem.Credito.Value;dado.Debito = item.Debito.Value;dados.Add(dado);

    }}return dados;

    }

    Agora que o mtodo est codificado necessrio testar o mesmo. Primeiro verifi-que se o projeto SilverlightWcf.Web estsetado para ser o primeiro a ser executadoquando pressionada a tecla F5, sabemosdisso se o projeto estiver em negrito, casono esteja, clique o boto direito do mouse

    no mesmo e selecione a opo Set as StartUpProject, faz-se a mesma coisa para o arquivoWcfExemplo.svc.

    Para testar o servio pressione F5, se ajanela do Internet Explorer for aberta, copieo link que esta sendo carregado, no meucaso o link :http://localhost:22269/WcfExemplo.svc.

    Veja figura 16.

    Gerando Grficos com Silverlight, WCF e LINQ

    Listagem 2 Arquivo WcfExemplo.svccodificadocom a classe Dados.

    Listagem 3 Implementao do Mtodo RetornaDa-

  • 8/3/2019 codificando 18

    53/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    53535353Out / Nov - 2010 |

    Depois de copiar o link execute oprograma Wcf Test Cliente , voc pode

    encontr-lo na pasta: C:\Program Fi-les\Microsoft Visual Studio 10.0\Common7\IDE\ WcfTestClient.exe. De-pois de carregado clique no menu File eem seguida clique em Add Serviceconforme figura 17.

    Aps clicar em Add Service , cole o link nonico campo da janela e clique em Okconforme figura 18.

    Depois de colocar o link e clicar em ok,deve-se clicar duas vezes no mtodo queser testado e clicar no boto Invoke , noteque o servio retornar os dados que estogravados na tabela (figura 19).

    Agora acesse o arquivo MainPage.xaml queest no projeto SilverlightWcf para montaro grfico. Primeiro procure a ferramentaChart na toolbox , quando encontr-la cliquee arraste para dentro da janela de design,conforme figura 20.

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 16 Testando um servio WCF.

    Figura 17 Testando servio WCFcom o WCFTest Client.

    Figura 18 Adicionando o caminho do Servio WCF.

    Figura 19 Invocando Servio WCFe visualizando oresultado.

  • 8/3/2019 codificando 18

    54/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    54545454Out / Nov - 2010 |

    Agora acesse a pgina de cdigo XAML, a listagem docdigo 4 mostra o contedo do arquivo.

    necessrio fazer algumas modificaesno cdigo, a tag dever ficar igual o cdigoda listagem 5.

    Notem que estamos utilizando o tipo degrfico BarSeries, um para o Credito e o ou-tro para Dbito, em ambos temos que infor-mar as propriedades DependentValueBinding(Campo Valor), IndependentValueBinding (CampoTexto)eItemsSource(Fonte de dados), as outraspropriedades so para colocar alguns efei-

    tos no grfico.

    Agora acesse o servio que foi criado no ou-tro projeto, acesse a janela Solution Explo-rer, clique o boto direito do mouse no pro-

    jeto SilverlightWcf e selecione a opo AddService Reference. Ser exibida uma janelapara informar o caminho do servio que se-r utilizado e colocar o nome (wcfDados) no

    campo namespace. Como o servio criado

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 20 Utilizando a ferramenta para criaode grficos.

    Listagem 4 Contedo do arquivo

    MainPage.xaml.

    Listagem 5 Modificao na tag

  • 8/3/2019 codificando 18

    55/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    55555555Out / Nov - 2010 |

    est na mesma soluo, clique no botoDiscover. Note que os servios que estona mesma soluo sero exibidos na jane-

    la, aps selecionar o servio desejado cli-que em OK (figura 21).

    Agora acesse o CodeBehind do arquivoMainPage.xaml Na Janela Solution Explo-rer , clique o boto direito do mouse enci-ma do arquivo e escolha a opo ViewCode , para acessar os servios que foramadicionados no projeto. A listagem 6mostra o cdigo necessrio para acessar owcf, primeiro necessrio instanciar o ser-

    vio depois criar dois mtodos, um parachamar o servio e o outro para retornaros dados quando a chamada for completa-da.

    private Silverli-ghtWcf.wcfDados.WcfExemploClient wcfDa-dos =new Silverli-ghtWcf.wcfDados.WcfExemploClient();

    void AtualizaGrafico(){wcfDados.RetornaDadosCompleted +=newE-ventHandler(wcfDados_BuscaSaldosCompleted);wcfDados.RetornaDadosAsync();}void wcfDados_BuscaSaldosCompleted(objectsender, Silverli-ghtWcf.wcfDados.RetornaDadosCompletedEventArgs e){GraficoDados.DataContext = e.Result;}

    O Cdigo da listagem 7 mostra toda a im-plementao da chamada do servio.

    using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;

    namespace SilverlightWcf{

    publicpartialclassMainPage : UserControl{

    public MainPage(){

    InitializeComponent();}

    private Silver-lightWcf.wcfDados.WcfExemploClient wcfDa-

    Gerando Grficos com Silverlight, WCF e LINQ

    Figura 21 Adicionando Servio WCFna

    aplicao.

    Listagem 6 Implementao da chamada doservio WCF.

  • 8/3/2019 codificando 18

    56/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    56565656Out / Nov - 2010 |

    dos =new Silver-lightWcf.wcfDados.WcfExemploClient();

    void AtualizaGrafico(){

    wcfDados.RetornaDadosCompleted +=newEventHan-dler(wcfDados_BuscaSaldosCompleted);

    wcfDados.RetornaDadosAsync();}void wcfDados_BuscaSaldosCompleted

    (object sender, Silverli-ghtWcf.wcfDados.RetornaDadosCompletedEventArgs e)

    {GraficoDados.DataContext = e.Result;

    }

    }}

    Acesse o arquivo MainPage.xaml doprojeto SilverlightWcf para codificar oevento Load da ferramenta de grfico,adicione o evento Loaded dentro da tag, conforme figura 22.

    Depois de clicar duas vezes no evento Loa-

    ded exibido pelo Intelisense , ser exibida

    outra opo para que o prprio Visual StudioCrie o mtodo, apenas clique duas vezes naopo (figura 23).

    Agora volte para o CodeBehind(MainPage.xaml.cs) do arquivo

    MainPage.xaml, e note que um novo mtodofoi criado na pagina de cdigos(GraficoDados_Loaded(object sender, RoutedEventArgse)). Agora dentro desse novo mtodo chame o m-todo que Busca os dados e exibe no grfico(AtualizaGrafico()) veja na listagem 8.

    privatevoid GraficoDados_Loaded(object sen-der, RoutedEventArgs e){AtualizaGrafico();}

    Cdigo Completo da Classe MainPa-ge.xaml.cs (listagem 9).

    using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;

    using System.Windows.Documents;

    Gerando Grficos com Silverlight, WCF e LINQ

    Listagem 7 Contedo do Codebehindda ClasseMainPage.

    Figura 22 Definindo mtodo Loaded.

    Figura 23 Criando o mtodo Loadednocodebehindda pgina.

    Listagem 8 MtodoAtualizaGrfico() sendochamado ao carregar a aplicao.

  • 8/3/2019 codificando 18

    57/67

  • 8/3/2019 codificando 18

    58/67

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    58585858Out / Nov - 2010 |

    IndependentValueBind-ing = "{Binding Mes}"

    IsSelectionE-nabled="True" AnimationSe-quence="FirstToLast"

    ItemsSource="{Binding}" />

    Para testar o Projeto, vamos configurarpara que o projeto SilverlightWcf.Web sejao primeiro a ser carregado(Janela SolutionExplorer, clicar o boto direito do mouse eselecionar Set as StartUp Project). Depoisvamos fazer a mesma coisa para o arquivoSilverlightWcfTestPage.html ou Silverli-

    ghtWcfTestPage.aspx, vamos podem ser uti-

    lizados para testar a aplicao. Depois dis-so pressione F5 para executar o projeto, afigura 24 e 25 mostra o grfico em execu-o.

    Abraos!

    Gerando Grficos com Silverlight, WCF e LINQ

    Listagem 10 Contedo do arquivoMainPage.xaml.

    Figura 24 Exemplo do Inicio do Grfico com oefeito.

    Figura 25 Exemplo do Grfico com efeitofinalizado.

    Antonio Lucas Finotti Pereira

    Ps-Graduado em Tecnologia em Desen-volvimento de Softwares no Centro Uni-versitrio SENAC (S.J. do Rio Preto),

    Graduado em Cincia da Computao pelaUNIP (S. J. do Rio Preto) e Programadorde Micro Computador no SENAC (Barretos). Atua comoDesenvolvedor.Net usando C# (LINQ, Entity Frame-work, WCF, WPF, Silverlight e WebServices) para asplataformas (WinForms, Web e Mobile). Possui conheci-mento em Visual Basic, FireBird, MySql, Sql Server eOracle.

  • 8/3/2019 codificando 18

    59/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 59595959

    Reutilizando Cdigo Nativo no

    .NET

    Nesse artigo, veremos como reutilizar c-digo nativo escrito na linguagem C em a-plicaes .NET.

    Platform Invoke

    Platform Invoke o mecanismo que permi-te a chamada de cdigo nativo atravs daplataforma .NET. Podemos usufruir destemecanismo chamando funes da API doWindows, funes de DLLs criadas a par-

    tir de cdigo escrito em linguagens comoC, etc.

    Criando um Exemplo Simples

    Vamos criar uma funo em C que escreveuma mensagem na tela e iremos cham-laatravs do nosso cdigo gerenciado com alinguagem C#.

    Abra o Visual Studio 2008, clique emFile -> New -> Project, selecione a linguagemVisual C++e selecione o templateWin32Project conforme a figura 1. O nome doprojeto ser CodigoNativo.

    Aps isso, veremos uma janela seme-lhante figura 2. Clique em ApplicationSettings ou clique no boto Next >.

    Por: Leandro Alves Santos

    Figura 1 - Criando um projeto Win32 no VisualStudio.

    Figura 2 - Application Wizard.

  • 8/3/2019 codificando 18

    60/67

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Out / Nov - 2010 | 60606060

    Agora vamos escrever nosso cdigo queescreve uma mensagem na tela. Ocdigo pode ser visto na listagem 1.

    #include

    __declspec(dllexport) void EscreverTexto(){

    printf("Bem vindo ao \"DLL Hell\"!\n");}

    Anteriormente foi me