codificando 16

Upload: ricardo-palma

Post on 06-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 codificando 16

    1/71

  • 8/3/2019 codificando 16

    2/71

    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 FacunteFernanda SallaiSergio Gonalves

    REVISOFabrcio Lopes SanchezLeandro Alves SantosSara Barbosa

    EDITORAO E DIAGRAMAOAdriano AlmeidaFabiano Rodrigues

    COLABORADORESAnderson CastroCaio AzevedoDiego NogareFbio Luiz Pessoa CampinhoFabrcio Lopes Sancheztalo Chesley Gomes da SilvaRamon DuresSara BarbosaWagner Amorim

    Produzido por:

    www.codificando.net

    Edio 16 Nmero 16 Ano 04 2010

    Sumrio

    03:. Editorial 71:. .Close ( )

    Por: Fbio Luiz Pessoa Campinho

    04 :. Trabalhando com usercontrol e

    orientao a objetos

    Por: Fabrcio Lopes Sanchez

    10 :. Trabalhando com stored

    procedures no .net

    Por: talo Chesley Gomes da Silva

    23 :. Trabalhando com treeviewno

    windows forms

    Por: Caio Azevedo

    16 :. Explorando microsot sql

    reporting services 2005 parte VI

    Por: Diego Nogare

    28 :. Comparativo entre o SQL

    Server e o SQL Azure database

    Por: Sara Barbosa

    31 :. Servio de transmisso do

    PowerPoint 2010

    Por: Wagner Amorim

    34 :. SharePoint 2010: VisualWebParts

    Por: Ramon Dures

    46 :. Por que Visual Studio Team

    System mudou de nome?

    Por: Anderson Castro

    48 :. Impresso com Silverlight 4

    Por: Wagner Amorim

    54 :. LINQ to SharePoint no

    SharePoint 2010

    Por: Ramon Dures

    64 :. O futuro do Home Office

    Por: Diego Nogare

    67 :. Cobertura Codificando 2010

  • 8/3/2019 codificando 16

    3/71

    Fernanda [email protected]

    A mente que se abre a uma nova idia jamais voltar ao seu tamanho original. (Albert Einstein)

    Nossa meu primeiro editorial. Que emoo!!!

    Primeiramente quero agradecer esta oportunidade a comunidade Codificando.Net e principalmente aoDiego Nogare, pelo apoio que tem me dado, e claro no posso esquecer o grande Facunte, alis usareiuma frase dele que marca tudo isto: Participar de uma comunidade vencedora onde a unio o princpiobsico, faz-me refletir sobre as grandes vitrias e pequenas, porm no menos importantes derrotas.Vou contar um pouquinho sobre mim. Sou formada em Sistemas de Informao pela instituio de ensinoFaculdades Integradas Campos Salles, trabalho com desenvolvimento de sistemas Web e Windows Formsusando C#, SQL e JavaScript. Mantenho um blog www.fernandasallai.com onde escrevo assuntos referen-tes a desenvolvimento e negcios, sempre participei dos eventos do Codificando e desde o ano passadoestou participando mais ativamente atravs da revista.

    Nesta edio teremos:

    Fbio Luiz Pessoa Campinho ensina como trabalhar com usercontrol e orientao a objetos em Silverlightcriando um sistema de reservas de cadeiras para festas em hotis.Fabrcio Lopes Sanchez explica como usar Store Procedures no .net em um projeto criado em camadas.Caio Azevedo apresenta a parte VI que exibe como consumir relatrios e funcionalidades do microsot sqlreporting services 2005.talo Chesley Gomes da Silva apresenta de forma simples como trabalhar com TreeView no WindowsForms atravs de exemplos.Diego Nogare faz um comparativo entre SQL Server e SQL Azure database de forma direta e simples paraacabar com as dvidas que freqentemente surgem.Sara Barbosa aborda a facilidade de criar uma apresentao no PowerPoint 2010 para pessoas que no es-to no mesmo local fisicamente.Wagner Amorim explora um recurso que considerado o modelo mais comum de extensibilidade do Sha-rePoint, as WebParts na nova verso do SharePoint.Ramon Dures explica por que o Visual Studio Team System mudou de nome aps o lanamento do VisualStudio 2010.Anderson Castro explica como usar uma das vrias novas features do Silverlight que permite a impressodo que est na tela, trechos de textos selecionados e mltiplas impresses.Wagner Amorim mostra uma das novidades do SharePoint 2010 para os desenvolvedores que foi o LINQto SharePoint.Ramon Dures discute os benefcios e diferencial na vidas das pessoas que trabalham Home Office.Diego Nogare faz uma breve descrio de como foi o evento Codificando 2010.

    Diante de todo esse contedo de qualidade elaborado por profissionais renomados e conhecidos da co-

    munidade s me resta agradecer a sua participao leitor e desejar uma excelente leitura!

    Editorial

    Edio 16 Nmero 16 Ano 04 2010

  • 8/3/2019 codificando 16

    4/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 4444

    Trabalhando com usercontrol e

    orientao a objetos

    Quando o ASP.NET foi lanado, duas ino-vaes foram bastante importantes paramim. A primeira foi a interface separadado cdigo, onde o designer responsvelpela interface e o desenvolvedor respon-svel pelo cdigo. A segunda foi desenvol-ver nossas aplicaes WEB com recursosde orientao a objetos. Quando o Silverli-ght foi lanado todos esses recursos forammantidos e novas funcionalidades foramcriadas proporcionando novos recursos de

    RIA (Rich Internet Application) e anima-es para jogos ou computao grfica.

    Nesse artigo, iremos criar um sistema dereservas de cadeiras para festas em hotisem Silverlight. Nosso cliente deseja com-prar as cadeiras selecionando o setor e amesa. Veja a figura 1 para ter uma idiavisual do nosso aplicativo.

    Utilizaremos o Expression Blend 3 para

    criar nosso projeto, pressione as teclasCtrl + Shift + N para criar um novo pro- jeto do tipo Silverlight 3 Application +WebSite e d ao projeto o nome de Ma-pas. Nosso primeiro passo ser criar oUserControl cadeira. Para criar um User-Control v no menu File -> New Item oupressione Ctrl + N e depois informe onome cadeira conforme figura 2. De-pois crie tambm os UserControls mesae SetorG.

    Para trabalhar com formato visual, deve-mos alterar o tipo do nosso LayoutRootem todos os arquivos, para fazermos es-

    Por: Fbio Luiz Pessoa Campinho

    Figura 1. Uma imagem vale mais que mil palavras.

    Figura 2. Criando um UserControl.

  • 8/3/2019 codificando 16

    5/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 5555

    d:DesignHeight para 13 da tag.

    Agora iremos adicionar o cdigo para oclique da cadeira, pressione F11 duas ve-zes para voltarmos para o modo visual eclique no LayoutRoot na janela Objectand Timeline, na janela de propriedades(Properties), clique na imagem doquadrado com um raio (Figura 4) paralistar os eventos disponveis para o obje-to e d duplo clique no evento Mouse-LeftButtonDown. Esse evento detectaquando o mouse pressionado na cadei-ra.

    O arquivo cadeira.xaml.cs com o cdi-go C# exibido e iniciaremos a codifica-o do nosso objeto, o cdigo est descri-

    sa alterao clique com o boto direitoem LayoutRoot na janela Objects andTimeline, caso a janela no esteja visvel,

    pressione F4 , depois selecione ChangeLayout Type -> Canvas (Figura 3). Essaalterao deve ser realizada nos arquivos-> cadeira.xaml, mesa.xaml,SetorG.xaml e MainPage.xaml.

    No Silverlight podemos criar nossos ob- jetos utilizando a interface visual doBlend ou codificar em xaml. Abra o ar-quivo cadeira.xaml e na interface visu-al pressione F11 para exibir o cdigo xa-ml. Digite o cdigo da Listagem 1 den-tro da tag .

    Altere tambm os valores das proprieda-des d:DesignWidth para 26 e

    Trabalhando com usercontrol e orientao a objetos

    Figura 3. Mudando o LayoutType.

    Listagem 1. Cdigo xaml da cadeira.

    Figura 4. Adicionando o evento MouseLeftBut-tonDown

  • 8/3/2019 codificando 16

    6/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 6666

    if (!bCadeiraBloqueada) {

    //Aps a persistencia realizada com

    sucesso, mudamos a cor da cadeiraMudarCor_Cadeira();

    }

    }

    publicvoid MudarCor_Cadeira()

    {

    retCadeira.Fill = newSolidColorBrush {Color = Color.FromArgb

    (255, 0, 0, 0)};

    retCadeira.Cursor = Cur-

    sors.Arrow;

    bCadeiraBloqueada = true;}

    }

    Nosso prximo passo ser criar as fun-cionalidades e o visual da mesa, primei-ro precisamos compilar o projeto com acombinao das teclas CTRL + SHIFT +B ou pelo menu Project -> Build Project.

    Abra agora o arquivo mesa.xaml e adi-cione uma elipse ao User Control. Paraadicionar uma elipse voc pode clicar natoolbox na figura do quadrado com omouse pressionado, arrastando o cursorpara o canto inferior da figura e aparece-ro as opes conforme figura 5, depois s clicar na rea til e iniciar o desenhoda elipse. A elipse deve ter tamanho 53

    de largura (Width) e 53 de altura(Height ).

    Adicionaremos agora o objeto da cadeiraao UserControl mesa, clique em Assets

    to na listagem 2. Na linha 3 criamos umavarivel bool que mantm o status dacadeira indicando se j est bloqueada

    ou no e utilizamos essa varivel na li-nha 27 em um if para no permitir blo-quear a mesma cadeira duas vezes. Dalinha 4 at a linha 16 implementamos aspropriedades que sero utilizadas no U-serControl mesa para atribuir nmerospara a cadeira e informar a qual mesa elapertence, esses valores sero utilizadosna linha 28 para efetuar a persistncia

    em banco de dados (No estaremos es-crevendo o cdigo de persistncia nesseartigo). Na linha 29, chamamos a funoque ir efetuar a mudana de cor, mudaro tipo de cursor para seta e alterar o va-lor da varivel de bloqueio para true.

    publicpartialclass cadeira : UserCon-

    trol

    {

    bool bCadeiraBloqueada = false;

    Int32 _NumeroCadeira;public Int32 NumeroCadeira

    {

    get { return _NumeroCadeira; }

    set { _NumeroCadeira = value; }}

    Int32 _NumeroMesa;

    public Int32 NumeroMesa

    {

    get { return _NumeroMesa; }

    set { _NumeroMesa = value; }

    }

    public cadeira(){

    // Required to initialize variables

    InitializeComponent();

    }

    privatevoid

    LayoutRoot_MouseLeftButtonDown(object

    sender,

    System.Windows.Input.MouseButtonEventAr

    gs e){

    // Aqui estar o metodo que far apersistencia em banco de dados.

    Trabalhando com usercontrol e orientao a objetos

    Listagem 2. Cdigo da cadeira.

    Figura 5. Adicionando uma elipse.

  • 8/3/2019 codificando 16

    7/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 7777

  • 8/3/2019 codificando 16

    8/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 8888

    Agora vamos trabalhar o setorG, abra oarquivo SetorG.xaml e compile nova-mente o projeto. No meu exemplo, adi-

    cionei a imagem conforme a figura 10onde irei colocar as mesas. Clique emassets como fizemos para adicionar ascadeiras, porm adicione as mesas. Ob-serve que as cadeiras j vem junto com amesa. Copie e cole 3 mesas na tela na po-sio onde desejar e altere a PropriedadeNumeroMesa na aba de Propriedades ->na Guia Miscellaneous. Observe que al-

    tera automaticamente o nmero visvelde cada mesa. Na figura 10 voc tem umexemplo da imagem final do Setor G.Observem que no adicionamos nenhumcdigo no arquivo SetorG.xaml.cs, to-das as funcionalidades esto nos arqui-vos cadeira.xaml.cs e mesa.xaml.cs.

    Agora abra o arquivo MainPage.xaml.No meu exemplo adicionei a imagemconforme a figura 11 onde irei criar reasonde o usurio ir clicar, depois adicioneum retngulo sobre a rea especifica doSetor G da imagem. Na janela Objectsand Timeline , clique em cima do retn-gulo que voc criou agora e depois v na

    janela propriedades, na opo Name es-pecifique o nome retSetorG , depois cli-que na guia Brushes e depois clique em

    TransformOrigin="0.5,0.5" NumeroCadei-ra="3">

    Abra o arquivo mesa.xaml.cs e dentroda classe adicione a propriedade de n-mero da mesa, conforme listagem 4. Essapropriedade altera o nmero exibido noTextBlock que adicionamos e altera emcada cadeira o nmero da mesa para finsde persistncia.

    Int32 _NumeroMesa;public Int32 NumeroMesa

    {get { return _NumeroMesa; }set { _NumeroMesa = value; }lblNumMesa.Text = Convert.ToString

    (value);ucCadeira1.NumeroMesa = value;ucCadeira2.NumeroMesa = value;ucCadeira3.NumeroMesa = value;ucCadeira4.NumeroMesa = value;

    }

    }

    Trabalhando com usercontrol e orientao a objetos

    Listagem 3. Elipse em xaml.

    Figura 10. Setor G.

    Listagem 4. Arquivo mesa.xaml.cs.

  • 8/3/2019 codificando 16

    9/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 9999

    this.Content = new SetorG();Finalmente pressione F5 e execute a apli-cao.

    Com a utilizao da orientao a objeto,conseguimos desenvolver uma aplicaofuncional e com cdigo reutilizvel, utili-zando todo o potencial de linguagenscomo C#. Outras animaes, aplicativose jogos podem ser feitos utilizando essesrecursos.

    Bom trabalho e at a prxima.

    Tile Brush conforme figura 12. Nessespassos criamos uma rea onde o usuriopossa clicar. No estaremos criando -

    reas para os outros setores nesse artigo,mas caso voc deseje criar, voc deve se-guir a mesma lgica.

    Para finalizar, precisamos capturar o e-vento de clique do mouse em cima doretngulo e chamar a janela SetorG. Ain-da na janela de propriedades clique no

    boto de eventos e d duplo clique noevento MouseLeftButtonDown. No m-

    todo criado, insira o seguinte trecho decdigo:

    Trabalhando com usercontrol e orientao a objetos

    Figura 11. Imagem com o Setor G marcado paraclicar.

    Figura 12. Criando espaos para clique transpa-rentes.

    Fbio Luiz Pessoa [email protected]

    Sou MCP, MCAD .NET e MCTS em Sha-repoint e Windows 7, atualmente souprofessor de Computao Grfica daFaculdade Dom Pedro II em Salvador e

    desenvolvedor a 15 anos. Desenvolvo para .NET desde2001. Mantenho meu blog fcampinho.spaces.live.com

  • 8/3/2019 codificando 16

    10/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    10101010Jun / Jul - 2010 |

    Trabalhando com

    stored procedures no .net

    Stored Procedures so recursos interessan-tes e amplamente utilizados no desenvol-vimento de aplicativos por vrios motivos.O principal destes motivos que, uma Sto-red Procedure um cdigo independenteque fica pr-compilado no servidor de ban-co de dados, assim, retiramos a onerosida-de de processamento da aplicao e a pas-samos para o servidor sendo que,

    a aplicao, apenas recebe o resultado doprocessamento destas Stored Procedures econtinua seu fluxo de execuo.

    Neste artigo, apresento de forma simples edireta como podemos utilizar Stored Pro-cedures em conjunto com a linguagem C#da plataforma .NET para efetuarmos umainsero de usurio no banco de dados e,

    posteriormente, apresentar na tela se o re-gistro foi inserido com sucesso ou no. Es-te exemplo baseado no modelo em cama-das.

    Vamos ento criar o projeto. Aps criar ascamadas, as classes de cada camada e con-figurar as referncias das mesmas, sua So-lution Explorer deve se parecer com aquelaapresentada na Figura 1:

    No vou entrar em detalhes sobre a cria-o do projeto e configurao das cama-das, pois no o objetivo deste artigo.Basicamente, o que fiz para chegar a So-lution Explorer apresentada na Figura 1foi criar uma Blank Solution, nome-lapara "UsuarioProcedure", adicionar trsnovos projetos (um dos projetos web eos outros dois do tipo Class Library) econfigurar suas referncias.

    Por: Fabrcio Lopes Sanchez

    Figura 1. Solution Explorer da SolutionUsuarioProcedure.

  • 8/3/2019 codificando 16

    11/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    11111111Jun / Jul - 2010 |

    Com nosso projeto criado e configurado,vamos ento a implementao das clas-ses. Vamos comear a trabalhar da cama-

    da mais baixa para a camada mais alta,ou seja, iniciaremos implementando aclasse clsDados. A Listagem 1 apresentao cdigo desta classe.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;

    using System.Data.Sql;using System.Data.SqlClient;

    namespace Core.DAL{

    publicclassclsDados{

    #region --- ATRIBUTOS DA CLASSEDADOS ----

    privatestaticstring stringConexao =@"Data Source=FABRCIO-PC;InitialCatalog=db_Teste;UserID=sa;Password=shell";

    privatestaticSqlConnectionconexaoDecup = newSqlConnection(stringConexao);

    #endregion

    #region ------- MTODOS ------------

    ////// Este mtodo encerra a conexo com o

    Banco de Dados.///publicSqlConnection fechaConexao(){

    if (conexaoDecup.State ==ConnectionState.Open)

    {

    conexaoDecup.Close();}

    Trabalhando com stored procedures no .net

    return conexaoDecup;}////// Este mtodo verifica o status da

    conexo com o Banco de Dados. Caso estaesteja fechada, o mtodo abre a conexo.

    ///publicSqlConnection abreConexao(){

    if (conexaoDecup.State ==ConnectionState.Closed)

    {conexaoDecup.Open();

    }return conexaoDecup;

    }#endregion

    }}

    Novamente no entrarei nos detalhes da

    implementao da classe por no ser oobjetivo deste artigo, entretanto, algumascaractersticas da mesma precisam de umpouco mais de nossa ateno. Veja o se-guinte trecho de cdigo:

    privatestaticstring stringConexao = @"DataSource=FABRCIO-PC;InitialCatalog=db_Teste;UserID=sa;Password=shell";

    privatestatic SqlConnection conexaoDecup =new SqlConnection(stringConexao);

    Com ele, criamos as variveis stringCo-nexao e conexaoDecup e j criamos tam-

    bm suas respectivas instncias.

    Outro aspecto importante a ressaltar nes-te cdigo a criao de dois mtodos -fechaConexao() e abreConexao(). Estesmtodos sero os responsveis por abrir aconexo com a base de dados e fech-la

    Listagem 1. Cdigo Fonte da classe clsDados.

  • 8/3/2019 codificando 16

    12/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    12121212Jun / Jul - 2010 |

    em um momento posterior respectiva-mente.Como j foi dito, o foco deste artigo

    apresentar a utilizao das Stored Proce-dures em conjunto com a linguagem C#.Para apresentar esta funcionalidade, ire-mos realizar uma insero de registro no

    banco utilizando uma Stored Procedure.A estrutura da tabela onde o registro se-

    r inserido pode ser visualizada na Figu-ra 2:

    Bom, agora que conhecemos a estrutura

    da tabela tbUsuarios, j possumos asinformaes necessrias para criarmosnossa Stored Procedure. Para isso, na ba-se de dados expanda a guia Programma-bility. Em seguida, clique com o botodireito sobre a pasta Stored Procedure eselecione a opo New Stored Procedu-

    re, conforme apresenta a Figura 3:

    Ao selecionar esta opo, uma nova

    Trabalhando com stored procedures no .net

    query ser criada com algumas sugestesdo SQL Server para criar a Stored Proce-dure. Limpe as sugestes do SQL Server

    de modo que seu script fique semelhantea Figura 4.

    Vamos ento criar a Stored Procedure. AListagem 3 apresenta o cdigo da SP(Stored Procedure) de insero do usu-rio:

    CREATEPROCEDURE ____Inserir_Usuario

    -- Parmetros de entrada da StoredProcedure@NomeUsuario VARCHAR(100),@EmailUsuario VARCHAR(100),@UsuarioUsuario VARCHAR(20),@SenhaUsuario VARCHAR(50)

    ASBEGIN

    -- Inserindo o registro no bancoINSERTINTO dbo.tbUsuarios(Nome,Email, Usuario, Senha)

    VALUES(@NomeUsuario, @EmailUsuario,@UsuarioUsuario, @SenhaUsuario)

    ENDGOO cdigo da SP dispensa muitos coment-

    rios, pois relativamente simples. O queeste trecho de cdigo faz simplesmentealocar quatro variveis

    Figura 2. Estrutura da tabela sobre a qual aStored Procedure trabalhar.

    Figura 3. Criando uma nova Stored Procedure.

    Figura 4. Script de criao da Stored Procedurelimpa.

    Listagem 3. Cdigo fonte da SP de Insero.

  • 8/3/2019 codificando 16

    13/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    13131313Jun / Jul - 2010 |

    (parmetros): @NomeUsuario,@EmailUsuario, @UsuarioUsuario e@SenhaUsuario. Estes parmetros rece-

    bero os valores provenientes do mto-do C# e os passar ao segundo bloco docdigo para insero na SP. Como jmencionado no incio deste artigo, asStored Procedures ficam pr-compiladasno servidor de banco de dados, portanto,precisamos agora compilar a SP. Paraisso, basta ir at o menu superior do SQLServer Management Studio e clicar no

    boto "Execute". Se tudo ocorreu bem,voc dever visualizar uma tela seme-

    lhante a apresentada na Figura 5:

    Criada a tabela de usurios onde iremosinserir o registro, criada e compilada aStored Procedure que far a insero ecriada e implementada a classe de acessoa dados na camada DAL, vamos agoraat a camada de negcios (BLL) e imple-mentar o mtodo responsvel por cha-mar a SP e passar os parmetros para amesma. A Listagem 4 apresenta o cdigo

    da classe clsUsuario.

    using System;

    Trabalhando com stored procedures no .net

    using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.Sql;using System.Data.SqlClient;using Core.DAL;using System.Net;

    namespace Core.BLL{

    publicclassclsUsuario{

    ////// Mtodo que recebe os valores do

    formulrio e os insere atravs da StoredProcedure na tabela tbUsuarios.

    ///publicint inserirUsuario(string _nome,

    string _mail, string _user, string _senha){

    clsDados objetoDados = new clsDados();

    SqlCommand cmdAjuda = newSqlCommand("____Inserir_Usuario",objetoDados.abreConexao());

    cmdAjuda.CommandType =CommandType.StoredProcedure;

    cmdAjuda.Parameters.AddWithValue("@NomeUsuario", _mail);

    cmdAjuda.Parameters.AddWithValue("@EmailUsuario", _nome);

    cmdAjuda.Parameters.AddWithValue("@UsuarioUsuario", _user);

    cmdAjuda.Parameters.AddWithValue("@SenhaUsuario", _senha);

    try{

    int nLinhas;nLinhas =

    cmdAjuda.ExecuteNonQuery();return nLinhas;

    }catch (SqlException ex){

    Figura 5. Sucesso no processo de compilao daSP.

  • 8/3/2019 codificando 16

    14/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    14141414Jun / Jul - 2010 |

    thrownewException("Erroencontrado: " + ex.Message);

    }finally{

    objetoDados.fechaConexao();}

    }

    }}Os aspectos importantes na Listagem 4

    so os seguintes:SqlCommand cmdAjuda = newSqlCommand("____Inserir_Usuario",objetoDados.abreConexao());cmdAjuda.CommandType =CommandType.StoredProcedure;

    No cdigo acima, um objeto do tipo Sql-Command criado e, passado ao cons-

    trutor deste objeto o nome da SP(____Inserir_Usuario) e o mtodo queabre a conexo com o banco(objetoDados.abreConexao()); Na linhainferior, apenas dizemos ao objeto queele dever executar um procedimento dotipo StoredProcedure.

    cmdAjuda.Parameters.AddWithValue

    ("@NomeUsuario", _mail);cmdAjuda.Parameters.AddWithValue("@EmailUsuario", _nome);cmdAjuda.Parameters.AddWithValue("@UsuarioUsuario", _user);cmdAjuda.Parameters.AddWithValue("@SenhaUsuario", _senha);

    No cdigo acima, associamos cada valorque est vindo como parmetro para o

    mtodo inserirUsuario com o parmetroque a SP est esperando. Vale a pena fri-

    Trabalhando com stored procedures no .net

    sar que os valores passados para os par-metros da SP devem ser do mesmo tipo,caso contrrio a Stored Procedure no

    conseguir inserir os dados.

    Finalmente, no bloco try temos a execu-o atravs do mtodo executeNonQuery() do objeto cmdAjuda e, por extenso, daStored Procedure. A informao impor-tante aqui que o mtodo executeNon-Query() retornar o nmero de linhas afe-tadas pela Stored Procedure, assim, atri-

    bumos o retorno da execuo da proce-dure varivel inteira nLinhas para quepossamos verificar posteriormente o su-cesso ou falha da execuo da Stored Pro-cedure.

    Para finalizar temos que testar nosso apli-cativo de cadastro certo? Muito bem, va-mos ento at a camada de visualizao/apresentao para criarmos nossa interfa-ce. O modelo sugerido aquele apresen-

    tado na Figura 6:

    Vamos ento testar a funcionalidade denosso aplicativo de cadastro inserindo umnovo usurio. A Figura 7 apresenta o ca-

    dastro sendo realizado e a Figura 8 apre-senta o resultado do cadastro. Finalmente,a Figura 9 apresenta o banco de dados po-

    Listagem 4. Cdigo fonte da classe clsUsuario.

    Figura 6. Tela de cadastro de usurios.

  • 8/3/2019 codificando 16

    15/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    15151515Jun / Jul - 2010 |

    pulado pelas informaes do formul-

    rio.

    Concluso

    Como voc pde constatar neste artigo, aconstruo de aplicativos C# com StoredProcedures em uma arquitetura multica-madas um processo relativamente sim-

    ples e que implica em um excelente ga-nho de performance dos aplicativos emgeral e, alm disso, modularidade. Espe-

    Trabalhando com stored procedures no .net

    ro que este artigo possa t-lo incentivadoa comear a utilizar este recurso em seusaplicativos.

    Figura 7. Campos preenchidos com as informa-

    es solicitadas.

    Figura 8. Apresentao do status do cadastro

    realizado.

    Figura 9. Registro presente na tabela tbUsuari-os.

    Fabrcio Lopes Sanches

    Possui graduao em Cincia daComputao pela UNORP - CentroUniversitrio do Norte Paulista (2005).Obteve ttulo de mestre junto a USP(Universidade de So Paulo) no

    Programa Interunidades Bioengenharia campus SoCarlos. Atualmente aluno de doutorado epesquisador na mesma instituio e departamento. membro regular do SpeechLab (Laboratrio deProcessamento de udio e Voz) localizado no Instituto

    de Fsica de So Carlos. Atua na rea de processamentodigital de udio e voz, especialmente baseado emwavelets aplicadas insero e extrao dewatermarks em sinais de udio e fala, anlise cepstralde sinais de fala e desenvolvimento de ferramentascomputacionais aplicadas ao processamento digital desinais. Atua como desenvolvedor web na Unio CentralBrasileira da IASD com C# e ASP.NET desde 2007.

  • 8/3/2019 codificando 16

    16/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    16161616Jun / Jul - 2010 |

    Explorando microsot sql reporting

    services 2005 parte VI

    Por: Caio Azevedo

    Ol pessoal ...

    Como prometido, hoje apresentaremoscomo consumir os relatrios, bem comooutros exemplos com funcionalidades in-

    crveis.

    Lembrando que todos os cdigos aqui im-plementados esto disponveis no site danossa comunidade, http://comunidade.codificando.net/ e no meu

    blog http://caiodotnet.blogspot.com/. BoaDiverso!

    Remote mode funcionalidadesadicionais

    Nessa sesso falaremos de algumas fun-cionalidades adicionais interessantes so-

    bre os relatrios remotos.

    Servio de entrega

    Como j mencionamos o Reporting Servi-

    ces, nos permite configurar um servio deentrega de relatrios. Apresentaremos aseguir um exemplo simples dessa podero-sa ferramenta.

    Criaremos um servio, que gera o relat-rio em formato de arquivo em um com-partilhamento da nossa estao de traba-lho.

    Antes de comearmos as configuraes

    necessrio ter certeza que o servio SQLServer Agent esteja ativo. ele o res-ponsvel pelo monitoramento de Jobs,Schedules, Alertas e Eventos do SQL Ser-ver:

    Em seguida, acessamos o Report Mana-ger, selecionamos um dos nossos relat-rios e criaremos um novo Subscription,como exibido na figura 4.2:

    Figura 4.1. Servios do Windows SQL Server

    Agent.

    Figura 4.2. Selecionando um relatrio e criandouma nova Subscription.

  • 8/3/2019 codificando 16

    17/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    17171717Jun / Jul - 2010 |

    Agora configuraremos nosso servio deentrega, de modo a gerar um relatrio emformato de arquivo PDF, criado em um

    compartilhamento da nossa estao de tra-balho.

    Atentemos para o agendamento criado(boto Select Schedule) ver figura 4.3.

    Percebemos que nosso relatrio possui al-guns parmetros, e que so especificados

    durante o processo de criao da subscrip-tion como exibido na figura 4.4.

    Cache

    Como mencionamos anteriormente (Remote

    Mode - Arquitetura), uma vez gerado o for-mato intermedirio do relatrio, o RS antesde renderiz-lo, o armazena temporaria-mente no banco de dados, ReportServer-TempDB.

    O RS disponibiliza trs tipos de cache: cachede sesso , cache de execuo e cache porsnapshot.

    Cache de sesso ou implcito aquele gera-do pelo RS, quando um mesmo usurio re-quer um relatrio com o mesmo conjuntode parmetros em um curto intervalo detempo, esse cache utilizado, por exemplo,quando um usurio requer, dentro de ummesmo relatrio recursos de paginao ourenderizao em diversos formatos. O RSgera uma cpia do relatrio por cliente, co-

    mo vemos na figura 4.5 abaixo:

    Cache de execuo , similar ao cache desesso, uma vez que ambos so armazena-dos no mesmo repositrio. No entanto elenecessita ser configurado manualmente a-travs do link Execution nas proprieda-des do relatrio do Report Manager, como

    vemos na figura 4.6:

    Explorando microsot sql reporting services 2005 parte VI

    Figura 4.3. Configuraes do subscription.

    Figura 4.4. Configurao dos parmetros do rela-

    trio.

    Figura 4.5. Cache de sesso.

  • 8/3/2019 codificando 16

    18/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    18181818Jun / Jul - 2010 |

    Outra diferena crucial nesse relatrio em

    relao ao cach de sesso que ele podeser compartilhado por n usurios comodemonstrado na figura 4.7:

    gerada uma copia do relatrio por con-junto de parmetros selecionados. E no possvel ter esse tipo de cache se as cre-denciais de segurana para acesso ao re-positrio de dados do relatrio forem soli-citadas ao usurio.

    Cache de snapshot , os dois primeiros sogeridos pelo prprio RS, logo temos poucocontrole sobre eles. Por exemplo, no sa-

    bemos quando o relatrio ser solicitado aprimeira vez, nem quando o RS iniciar acontar seu tempo de validade. Em algunscasos, por exemplo, em relatrios que te-nham um tempo de execuo muito gran-

    de, seria interessante gerar esse relatrio

    fora do horrio de pico, salvar uma copiasua (no banco de dados ReportServer, tabe-la SnapshotData). Para criar esse tipo de

    cache utiliza-se o Report Manager, nas pro-priedades do relatrio, opo Execution. Noentanto esse tipo de cache no permite queo usurio modifique os parmetros do rela-trio e necessrio especificar valores padropara os parmetros.

    Segurana reporting services

    Considerando que os relatrios so disponi-bilizados como uma aplicao web, muitasdas boas prticas de segurana utilizadasem aplicaes ASP .NET so aplicveis a-qui, por isso focaremos nossa anlise nasfuncionalidades de autenticao e autoriza-o.

    A segurana dos relatrios hospedados noreporting services baseada em roles, ou seja,dado um conjunto de funcionalidades(rotulado role), tais como gerenciar relat-rios, visualizar pastas, visualizar datasour-ces, dentre outras e sabendo-se que por pa-dro o Reporting Services utiliza o modelo deautenticao Windows (baseado no ActiveDirectory do sistema operacional). Para cadarelatrio ou conjunto de relatrios(armazenados em pastas), associamos uma

    ou mais roles e assim teremos todas as fun-

    Explorando microsot sql reporting services 2005 parte VI

    Figura 4.6. Cache de relatrio por execuo.

    Figura 4.7. Cache de execuo.

    Figura 4.8. Cache de snapshot.

  • 8/3/2019 codificando 16

    19/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    19191919Jun / Jul - 2010 |

    cionalidades possveis para aqueles relat-rios. Nas roles so vinculados os usuriosou grupos de usurios do Active Direc-

    tory do Windows.

    Todas essas configuraes podem ser fei-tas atravs do Report Manager ou via SQLServer Management Studio, como de-monstrados nas figuras 4.9 e 4.10:

    Aqui apresentamos a edio/criao dasroles padro do RS e suas respectivas fun-

    cionalidades, via SSMS.

    Para atribuio das permisses (roles), a

    uma pasta ou relatrio, basta selecionar omenu de opes com o boto direito, sele-cionar a opo Properties e finalmentePermissions. Vejamos que podemos asso-ciar um usurio ou grupo de domnio asroles (botoAdd Grou por User...)

    Basicamente assim que gerimos a segu-rana dos relatrios no reporting services,onde necessrio utilizar uma conta de u-surio de domnio com os devidos privil-gios. Mas percebam que os relatrios sodisponibilizados atravs de uma aplicaoweb http:///reportserver ouhttp:///reports que tem seus mo-delos de autenticao como uma aplicaoweb qualquer integrada, forms, annima,etc. Sendo que por padro utilizada a au-tenticao Windows e assim a identificaodo usurio da aplicao utilizado para au-tenticao junto ao RS e pode ser utilizadopara o repositrio de dados como ilustra a

    figura 4.11.

    Explorando microsot sql reporting services 2005 parte VI

    Figura 4.9. Edio de roles SQL Server Manage-ment Studio.

    Figura 4.10. Adicionando usurios e grupos s roles SQL Server Management Studio.

    Figura 4.11. Modelo de segurana.

  • 8/3/2019 codificando 16

    20/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    20202020Jun / Jul - 2010 |

    Esse modelo com usurios integrados aoAD fica muito restrito ao ambiente intra-net, uma proposta mais genrica, seria u-

    ma na qual a aplicao web tem autentica-o form , com um repositrio customiza-do de usurios e para o acesso aos relat-rios do RS passamos as credenciais de umusurio do AD previamente configuradono RS a partir da aplicao web, e final-mente para acesso ao banco de dados usa-mos um usurio do SQL Server com aces-so restrito s tabelas/views/procedures ne-

    cessrias para concepo dos relatrios.

    Nesse modelo o segredo esta na passagemdas credencias para o RS a partir da apli-cao e isso veremos na sesso de integra-o de aplicao ASP .Net com RS.Outro aspecto de segurana relevante acriptografia dos dados, afinal os dadosdos relatrios so trafegados sobre o pro-tocolo HTTP para isso possvel utilizarrecursos tais como:

    Protocolo SSL/HTTPS e certificadosdigitais.

    VPNs Wireless com chaves de criptografias Terminal Services IPSec, que um protocolo de segu-

    rana padro para TCP/IP

    Converso de arquivos rdlc pararDl

    Uma funcionalidade muito interessanteque temos, a capacidade de converterrelatrios RLDC para RLC, e isso maissimples que se pode imaginar, basta reno-mear a extenso do arquivo e incluir no

    projeto (adicionar um item existente) e a-

    tualizar o Dataset (opes de conexo e ins-truo), simples assim. O segredo dessa fa-cilidade que os relatrios no fundo utili-

    zam a mesma estrutura que a linguagemde definio de relatrios.

    Integrando com uma aplicaoasp .net

    At agora acessamos nosso relatrios a par-tir do ambiente do RS (via report manager),no entanto fica fcil perceber algumas desuas limitaes tais como:

    Identidade visual limitada Validao dos parmetros limitada Impossibilidade de integrao dos re-

    latrios ao aplicativo

    Para resolvermos esses problemas, pode-mos incluir nossos relatrios nas aplicaesusando o controle ReportViewer. Para inte-

    grao dos relatrios com o ReportViewer, necessrio:

    Configurar adequadamente o controle,que classificamos da seguinte forma:

    Configuraes de Processamento, ondeespecificamos parmetros de renderiza-o e modo de processamento. Parme-

    tros: ProcessingMode, Asyn-cRendering e SizeToRe-portContent.

    Configuraes Funcionais, onde espe-cificamos quais funcionalidades do con-trole disponibilizaremos para os usu-rios, tais como exportao, zoom, im-presso, navegao, prompt de parme-

    tros, dentre outros. Parmetros:

    Explorando microsot sql reporting services 2005 parte VI

  • 8/3/2019 codificando 16

    21/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    21212121Jun / Jul - 2010 |

    ShowToolBar,ShowPageNavigationControls,

    ShowPrintButton,ShowExportControls,ShowParameterPrompts, ShowFindControls,etc.

    Configuraes de segurana,onde informamos as credenci-as do usurio de acesso aosrelatrios. Nesse caso neces-

    srio codificar uma classe queimplemente a interface, Mi-crosoft.Reporting.WebF

    orms.IReportServerCred

    entials.Parmetros: ServerRe-

    port.ReportServerCredentials

    Configuraes de localizao,onde especificamos a localiza-

    o (servidor/pasta/relatrio)do relatrio. Parametros: ServerRe-

    port.ReportServerUrl,ServerRe-port.ReportPath

    Criar interface com usurio para ob-teno dos parmetros do relatrio Usando controles da

    ASP .NET Codificar a validao dos parmetros Codificar os parmetros do relatrio

    para o controle ReportViewer

    De toda codificao necessria, a mais im-portante a criao da classe responsvelpela passagem das credenciais do usuriopara acesso ao relatrio, como mostrado

    no cdigo da listagem 1:

    publicclassReportCredentials :Microsoft.Reporting.WebForms.IReportServerCredentials{privatestring _userName;privatestring _passWord;privatestring _domainName;public ReportCredentials(string UserName,string PassWord, string DomainName){

    _userName = UserName;_passWord = PassWord;

    _domainName = DomainName;}

    publicWindowsIdentity ImpersonationUser{ get { returnnull; } }

    publicICredentials NetworkCredentials{ get { returnnewNetworkCredential(_userName, _passWord, _domainName); } }

    publicbool GetFormsCredentials(outCookieauthCookie, outstring user, outstringpassword,

    outstringauthority){

    authCookie = null;user = password = authority = null;returnfalse;

    }

    }Concluso

    isso ai pessoal, abordamos diversos as-suntos referentes a essa importante ferra-menta que o Reporting Services, nos per-mitindo enriquecer consideravelmente nos-sas aplicaes. Existem outros aspectos que

    no foram abordados, Report Builder, por

    Explorando microsot sql reporting services 2005 parte VI

    Listagem 1. Criao da classe responsvel.

  • 8/3/2019 codificando 16

    22/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    22222222Jun / Jul - 2010 |

    exemplo, mas acreditamos que, o que a-presentamos aqui seja suficiente para quepossamos implementar solues ricas e

    inteligentes provendo aos nossos clientesrecursos at pouco tempo, se no impen-sveis, mas certamente de difcil imple-mentao.

    Explorando microsot sql reporting services 2005 parte VI

    Caio Azevedo

    Graduado em Cincia da Computao,Engenharia Civil e louco por cinciasexatas em especial fsica e matemtica.Coordenador da Clula Microsoft da

    Magna Sistema e Arquiteto Microsoft,palestrante, tecno-colunista e instrutor da treinan-do .net. MCP, MCAD, MCSD, MCTS e MCPD. E fanticopela srie star wars may the force be with you.

    Blog: http://caiodotnet.blogspot.com/

  • 8/3/2019 codificando 16

    23/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    23232323Jun / Jul - 2010 |

    Trabalhando com treeviewno

    windows forms

    Como disse anteriormente, a TreeViewtrabalha com Nodes (ns), portanto, adi-cionaremos, a cada vez que passar pelolao de repetio um n. Para tanto, bas-ta fazer a simples tarefa de instanciar a

    classe TreeNode , atribuir sua proprie-dade Text a string referente posiodo array naquele momento da repetioe, pass-lo como parmetro ao mtodoNode.Addda TreeView.

    No formulrio, adicionei uma TreeView edois botes onde chamado o mtodo japresentado acima (que carregar umacoleo, na TreeView) e outro que apre-sentarei cuja funo mostrar uma rvo-re de diretrios na TreeView.

    Veja, na figura 1 , o resultado do cliquedo primeiro boto:

    Agora que j conhecemos esse compor-tamento da TreeView , vamos trabalharcom a funo que ir nos permitir carre-

    gar uma rvore de diretrios no siste-

    Por: talo Chesley Gomes da Silva

    Figura 1. Coleo de objetos carregada na Tree-

    View.

    Neste artigo apresento como simplestrabalhar com a TreeView no Windows-Forms .

    Apresentarei dois exemplos: Um percor-rendo uma coleo de dados e colocando-os na TreeView , e outro carregando umarvore de diretrios.

    Inicialmente deixei o cdigo no clique doboto, mas como isso no uma boa pr-tica, fiz uma pequena refatorao, trans-formando aquele bloco de cdigo em ummtodo, na listagem 1:

    A TreeView trabalha com Nodes (ns), por-tanto, inicialmente, utilizamos o mtodoClear para limpar todos os ns que houve-rem nele. Depois declaramos um array destrings e colocamos nomes de alguns car-ros nele e, por fim, atravs de uma estru-tura de repetio for , percorremos todo o

    contedo do array adicionando-o a TreeVi-ew.

    Listagem 1. Refatorando o cdigo.

  • 8/3/2019 codificando 16

    24/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    24242424Jun / Jul - 2010 |

    ma.

    Para isso, criaremos um mtodo que rece-

    be dois parmetros: A TreeView onde car-regar as informaes, e um caminho deonde ser mapeada a rvore de diretriospara o TreeView. Fiz os comentrios noprprio cdigo, voc pode dar um zoomna imagem ou fazer o download do proje-to para ver mais detalhadamente o funcio-namento do cdigo.

    Uma observao: A classe Directory , deonde utilizamos os mtodos GetDirectoriese GetFiles pertence ao Namespace Sys-tem.IO, ou seja, voc deve adicion-lo entre suas usings (listagem 2):

    using System.IO;

    private void preenchetreeview(TreeViewtvw, string caminho)

    {tvw.Nodes.Clear();//Limpa todos os

    nodes que porventura existamtvw.ShowNodeToolTips = true; //

    mostrar o tool tip quando passa o mouse emcima

    string[] pastas = Direc-tory.GetDirectories(caminho);//atribuindo aoarray "pastas" o retorno da funao GetDirecto-

    ries que um array de strings

    //Carregando a estrutura dediretrios da raiz

    for (int i = 0; i < pastas.Length; i++){

    //Agora, vamos usar o try para ocaso de ter algum diretrio que no tenhamospermisso para acessar.

    //O lao de repetio ignorar odiretrio com permisso negada e continuarcarregando os outros diretrios.

    try{

    TreeNode objNodePasta = newTreeNode();//Criando o node que ser adiciona-do

    //Carrega os diretrios da razstring[] NomePasta = pastas

    [i].Split('\\');//pegando apenas o nome da pastae ignorando o restante do caminho

    objNodePasta.Text = NomePasta[NomePasta.Length - 1];//pegando apenas o no-me da pasta e ignorando o restante do caminho

    objNodePasta.Collapse();//fechando o node para que o usurio possa abrirapenas o que ele quiser

    objNodePasta.ToolTipText = pas-tas[i];//atibuindo o caminho inteiro do arquivoao tooltip, para v-lo quando passar o mouse

    tvw.Nodes.Add(objNodePasta);//adicionando o node ao treeview

    //Carregando os subdiretrios dosdiretrios da raz

    string[] subdiretorios = Direc-tory.GetDirectories(pastas[i]);

    for (int k = 0; k

    Salve e feche o arquivo Elements.xml.

    Aps explorar de forma breve as Featuresno Visual Studio 2010, vamos continuarcom o desenvolvimento da Visual Web-Part.

    Abra o UserControl VisualWPUserCon-trol.ascx.

    Certifique-se de que o modo de exibio

    do UserControl est como Design.

    Para simular um exemplo mais prtico, va-mos criar uma WebPart demo deComentrios que vai inserir um registroem uma lista determinada.

    Adicionando controles ao User-Control

    Adicione atravs da janela Toolbox do Visu-al Studio os seguintes controles do tipoStandard:

    LabelID: lblTitulo

    TEXT: Canal SharePoint - Visual WebPart

    LabelID: lblNomeText: Digite seu nome:

    TextBoxID: txtNome

    SharePoint 2010: Visual WebParts

    Figura 07. Visualizando a Visual WebPart no ModoDesign.

  • 8/3/2019 codificando 16

    39/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    39393939Jun / Jul - 2010 |

    LabelID: lblComentarioText: Comentrio:

    TextBoxID: txtComentarioTextMode: MultiLine

    ButtonID: btnComentarText: Comentar!

    Seu cdigo HTML, no modelo Source deveser parecido o da listagem 1:

    E sua exibio no modo Design deve ser

    semelhante a figura 08:

    Salve o UserControl.

    Adicionando propriedades parasua WebPart

    Vamos criar uma propriedade na WebPartpara que o usurio possa definir em quallista sero armazenados os comentrios.

    Abra o arquivo VisualWPUserControl.ascx.cs elogo acima do mtodo Page_Load, insirao cdigo:

    publicstring NomeLista {get; set;}

    Salve e feche o arquivo.

    D um duplo no arquivo VisualWP.cs para abrira classe da WebPart

    .

    Logo acima do mtodoCreateChildControls, adicione o cdigoda listagem 2:

    string nomeLista = string.Empty;

    [System.Web.UI.WebControls.WebParts.WebBrowsable(true), Sy-

    SharePoint 2010: Visual WebParts

    Figura 08. Criando uma Visual WebPart de Comen-trios.

    Listagem 1. HTML

  • 8/3/2019 codificando 16

    40/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    40404040Jun / Jul - 2010 |

    sem.Web.UI.WebControls.WebParts.WebDisplayName("Nome da Lista"),

    System.Web.UI.WebControls.WebParts.WebDescription(""),

    System.Web.UI.WebControls.WebParts.Personalizable(

    System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared),

    System.ComponentModel.Category("Configuraes"),

    System.ComponentModel.DefaultValue("")

    ]publicstring NomeLista{

    get { return nomeLista; }set { nomeLista = value; }

    }

    Altere o mtodo CreateChildControls parao cdigo da listagem 3:

    protectedoverridevoid CreateChildControls(){

    //Carregando o UserControl pela Web-Part

    VisualWPUserControl userControl =(VisualWPUserControl)this.Page.LoadControl

    (_ascxPath);userControl.NomeLista = NomeLista;Controls.Add(userControl);

    base.CreateChildControls();}

    Seu arquivo VisualWP.cs deve ficar pare-cido com o da listagem 4:

    using System;using System.ComponentModel;using System.Runtime.InteropServices;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;

    namespace SharePoint2010.DEV.VisualWP{

    [ToolboxItemAttribute(false)]publicclassVisualWP : WebPart{

    // Visual Studio might automatically upda-te this path when you change the Visual WebPart project item.

    privateconststring _ascxPath = @"~/_CONTROLTEMPLATES/SharePoint2010.DEV/VisualWP/VisualWPUserControl.ascx";

    public VisualWP(){}

    string nomeLista = string.Empty;

    [System.Web.UI.WebControls.WebParts.WebBrowsable(true),

    Sys-tem.Web.UI.WebControls.WebParts.WebDisplayName("Nome da Lista"),

    System.Web.UI.WebControls.WebParts.WebDescription(""),

    System.Web.UI.WebControls.WebParts.Personalizable(

    System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared),

    System.ComponentModel.Category("Configuraes"),

    System.ComponentModel.DefaultValue("")

    SharePoint 2010: Visual WebParts

    Listagem 2. Cdigo inserido

    Listagem 3. Mtodo CreateChildControls.

  • 8/3/2019 codificando 16

    41/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    41414141Jun / Jul - 2010 |

    }publicstring NomeLista{

    get { return nomeLista; }set { nomeLista = value; }

    }

    protectedoverridevoidCreateChildControls()

    {//Carregando o UserControl pela Web-

    PartVisualWPUserControl userControl =

    (VisualWPUserControl)this.Page.LoadControl(_ascxPath);

    userControl.NomeLista = NomeLista;Controls.Add(userControl);

    base.CreateChildControls();}

    protectedoverridevoid RenderContents(HtmlTextWriter writer)

    {base.RenderContents(writer);

    }}

    }

    Salve o arquivo VisualWP.cs.

    Inserindo programaticamente

    itens na lista de comentrios

    Abra o UserControl VisualWPUserCon-trol.ascx.

    D um duplo clique no boto Comentar(btnComentar).

    NOTA: O Visual Studio vai gerar automa-ticamente o mtodo btnComentar_Click que

    ser acionado no evento OnClick do bo-

    to.

    Insira o cdigo da listagem 5 no mtodo cri-ado no passo anterior:

    NOTA: No cdigo abaixo eu utilizo o ObjectModel do SharePoint para inserir progra-maticamente os itens do UserControl na mi-nha lista do SharePoint, portanto deve serimportado o namespace Micro-soft.SharePoint;

    protectedvoid btnComentar_Click(object

    sender, EventArgs e){

    using (SPSite sitec = newSPSite(SPContext.Current.Web.Url))

    {using (SPWeb site = sitec.OpenWeb()){

    //Adicionando o item na listaSPList Lista = site.Lists[NomeLista];SPListItem item = Lista.AddItem();

    item["Nome"] = txtNome.Text;item["Comentario"] = txtComentari-

    o.Text;item.Update();

    //Redirecionando para a lista onde oitem foi criado

    Response.Redirect(String.Format("{0}/Lists/{1}", SPContext.Current.Web.Url, No-

    meLista));}

    }}

    NOTA: Vale a pena informar que nesse e-xemplo no exploramos nenhum dos recur-

    sos de validaes de dados para manter in-

    SharePoint 2010: Visual WebParts

    Listagem 4. Cdigo do VisualWP.cs .

    Listagem 5. Cdigo do btnComentar_Click.

  • 8/3/2019 codificando 16

    42/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    42424242Jun / Jul - 2010 |

    tegridade que so necessrias em nossasaplicaes.

    Realizando o DeployNesse ponto o desenvolvimento da aplica-o est concludo e podemos iniciar o de-ploy, antes disso, compile a aplicao(Ctrl+Shift+B) e resolva qualquer erro ouconflito que possa ocorrer.

    Execute o Deploy via Visual Studio (Build/Deploy Solution).

    NOTA: Repare que o Visual Studio execu-ta os seguintes passos de forma automti-ca:1. Compila a aplicao.2. Recycle no App Pool da aplicao.3. Retract da Solution, caso exista no

    farm.4. Adiciona Solution.

    5. Deploy Solution.6. Ativa Features.

    Verificando se a Solution e as Features fo-ram instaladas corretamente.

    Acesse a Central Administration do Sha-rePoint 2010.

    Clique no item System Settings do me-nu vertical da esquerda.

    Na seo Farm Management, clique emManage farm solutions.

    Na pgina de Solution Management de-ve aparecer sua solution, como mostra afigura 9:

    No caso das features, feche a Central Admi-nistration e abra o site que escolheu fazer o

    deploy no passo criando uma Visual Web-Part no SharePoint 2010 .

    Com o site aberto, clique no item de menuSite Actions, depois em Site Settings.

    SharePoint 2010: Visual WebParts

    Figura 09. Visualizando o WSP na Central Adminis-tration do SharePoint 2010.

    Figura 10. Site Actions no SharePoint 2010.

  • 8/3/2019 codificando 16

    43/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    43434343Jun / Jul - 2010 |

    Na pgina Site Settings, na seo SiteCollection Administration clique no item Sitecollection features.

    Nessa pgina deve aparecer a feature quecriamos na figura 11.

    Adicionando a Visual WebPartpara o site

    Volte para a home do site.

    Utilizando as Ribbons , clique no itemPage, depois em Edit Page da pginaprincipal do site.

    Com a pgina aberta em modo de edio,clique em Add WebPart. Note que aRibbons vai adicionar uma nova caixacom as propriedades da WebPart.

    NOTA: Veja que a WebPart que adiciona-mos j veio com as propriedades que confi-guramos no passo 1.6.

    Clique em Add.

    Aps o SharePoint ter adicionado a Web-Part na pgina, clique selecionando a Web-Part que acabou de ser adicionada e noteque o Ribbons mudou, foi adicionado umnovo item Web Part Tools.

    Clique em Options nesse novo item doRibbons e veja as novas opes disponveisno Ribbons para WebParts.

    SharePoint 2010: Visual WebParts

    Figura 11. Gerenciando Features no SharePoint2010.

    Figura 12. Ribbons no SharePoint 2010.

    Figura 13. Adicionando a Visual WebPart de Co-mentrios.

    Figura 14. Visual WebPart de Comentrios adiciona-

    da.

  • 8/3/2019 codificando 16

    44/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    44444444Jun / Jul - 2010 |

    Clique em Web Part Properties.

    Na nova janela de propriedades que vai

    abrir, defina os seguintes campos:

    Appearance

    Title : Envie-nos seus comentrios

    ConfiguraesNome da Lista : Digite o nome de uma lis-ta que voc ir utilizar como lista dos co-mentrios (ex: Comentrios).

    IMPORTANTE: A lista informada no pas-so acima j deve existir no site atual daWebPart, lembrando que essa lista tam-

    bm deve conter os campos citados nopasso Realizando o Deploy.

    Clique em OK.

    Saia do modo de edio da pgina.

    Finalizando e Testando

    Para finalizar e testar sua WebPart, bastainserir informaes nos campos apresenta-dos e clicar no boto Comentar.

    Voc ser redirecionado para a lista, verifi-que se o item foi inserido corretamente.

    SharePoint 2010: Visual WebParts

    Figura 15. Alterando as propriedades da VisualWebPart.

    Figura 16. Testando a Visual WebPart de Coment-

    rios.

    Figura 17. Verificando a lista de Comentrios.

  • 8/3/2019 codificando 16

    45/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    45454545Jun / Jul - 2010 |

    Lembrando que o foco desse artigo no aprofundar nas regras de negcio. Facil-mente um desenvolvedor consegue custo-

    mizar esse exemplo com regras de negciointeressantes.

    Concluso

    Nesse artigo exploramos de forma amplao funcionamento das Visual WebParts noSharePoint, alm de conseguirmos apre-sentar uma boa experincia de navegaopelo produto, passando um pouco pelasRibbons e pela nova Central Administrati-on.

    SharePoint 2010: Visual WebParts

    Wagner Amorim

    Lder da Maior Comunidade deS h a r e P o i n t d o B r a s i l(CanalSharePoint), participante dediversos projetos para mdias e

    grandes empresas utilizando tecnologias Micro-soft, tm se especializado nas Tecnologias Share-Point e .NET desde 2003. Atualmente trabalhacomo Consultor Especialista SharePoint por todoo Brasil, com participao focada no desenvolvi-mento e customizao dos Produtos e TecnologiasSharePoint, tambm participa como membro ativodas comunidades TechNet e MSDN.

  • 8/3/2019 codificando 16

    46/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    46464646Jun / Jul - 2010 |

    Por que Visual Studio Team System

    mudou de nome?

    Com o lanamento do Visual Studio 2010a Microsoft mudou o nome dos produtosvoltados para ALM(Application LifecycleManagement) de forma a unificar o Visu-al Studio uma nica viso facilitando o

    entendimento dos clientes. No Visual Stu-dio Team System ns tnhamos 4 versesespecificas do Visual Studio (Team Editi-on for Software Architects, Team Editionfor Software Developers, Team Editionfor Database Professionals, Team Editionfor Software Testers) alm o Visual StudioTeam Suite que englobava todos os recur-sos anteriores.

    Agora no Visual Studio 2010 teremos ape-nas uma verso do Visual Studio(Express, Professional, Premium, Ultima-te) iniciando pela primeira express que gratuita e tendo como verso padro oVisual Studio 2010 Professional que umdos mais conhecidos do mercado e j trazpoderosos recursos como testes unitrios.

    Na seqncia a prxima verso VisualStudio 2010 Premium com funcionalida-des como: cobertura de cdigo, analiseesttica de cdigo, mtricas de codifica-o, TDD, Integrao com banco de da-dos, Test Impact e UI Test para automa-o de testes de tela e na sequencia vem oVisual Studio 2010 Ultimate com suportea diagramas UML, ferramentas de arqui-

    tetura, testes de carga e gerencia de casosde testes com o Test Professional.

    Na prtica o que aconteceu foi a simplifi-cao dos nomes e distribuio dos re-cursos existentes nas verses anterioresnessas trs novas vises do Visual Studi-o 2010 (Professional, Premium, Ultima-

    te).

    O nome Visual Studio Team System re-presentava toda a infra estrutura deALM. Em funo disso outros produtosestavam presentes como o Team Foun-dation Server que a base para todos osprojetos de desenvolvimento de softwa-re.

    Um nome como Microsoft ALM seriao mais indicado para cobrir toda a infraestrutura de recursos que temos a dispo-sio para o desenvolvimento do nossoprojeto do inicio ao fim com o apoio denovas ferramentas como: Visual StudioTest Professional 2010, Visual Studio LabManagement 2010 e Visual Studio LoadTest Virtual User Pack.

    Um resumo geral do MicrosoftALM seria algo assim:

    Visual Studio 2010 (Professional, Premi-um, Ultimate) (Codificao, Arquietura,Testes)

    Visual Studio Team Foundation Server

    2010 (Team Build, Source Control, Pro-cesso)

    Por: Ramon Dures

  • 8/3/2019 codificando 16

    47/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    47474747Jun / Jul - 2010 |

    Visual Studio Test Professional 2010(Gesto de testes manuais)

    Visual Studio Lab Management2010 (Laboratrio de testes)

    Visual Studio Load Test Virtual User Pack(Licenas de uso teste de carga)

    O que mais mudou?

    - O Team Foundation Server 2010 agorapode ser instalado no seu Windows Vista,Windows 7 e custa em sua verso bsica.

    -U$ 500 para 05 usurios sem precisar deCAL (Client Access License) com a opode adicionar mais usurios.

    - Agora d para gravar telas de aplicaesWindows Forms e reproduzir depois

    - Se voc comprar o Visual Studo 2010com o contrato de atualizao (SA) Soft-ware Assurance que o MSDN Subscripti-on voc leva um Team Foundation Servercompleto e uma CAL de acesso.

    Por que Visual Studio Team System mudou de nome?

    Ramon Dures

    Possui mais de 10 anos de experinciana rea de desenvolvimento de softwa-

    re onde atua como consultor em pro- jetos por todo o Brasil. Certificado emVisual Studio/ALM como Microsoft

    Most Valuable Professional, PROFESSIONAL SCRUMMASTER e PROFESSIONAL SCRUM DEVELOPER pelaSCRUM.ORG com experincia em Project Manage-ment, Software Architecture, Application LifecycleManagement,Technical Sales, Technical Evangelism

  • 8/3/2019 codificando 16

    48/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 48484848

    Impresso com Silverlight 4

    O que veremos a seguir uma dentre asvrias novas features do Silverlight 4, oacesso a dispositivos de impresso.

    A API de impresso do Silverlight 4 permi-te a impresso do que est na tela, trechosde textos selecionados e mltiplas impres-ses.

    A classe responsvel pela impresso aPrintDocument que faz parte do names-

    pace System.Windows.Printing. O mto-do usado para disparar a impresso omtodo Print() .

    Abaixo temos uma breve descrio de cadaum dos eventos da classe PrintDocument:

    StartPrint Ocorre sempre aps a telade escolha da impressora e antes da

    impresso da primeira pgina.

    PrintPage Ocorre quando a pgina impressa alm de permitir o queser impresso como tamanho da reade impresso e pginas a serem im-pressas.

    EndPrint Ocorre aps a impresso

    mesmo que o usurio tenha cancela-do a impresso.

    Para este tutorial iremos usar:

    Visual Studio 2010

    Sdk Silverlight 4

    Vamos iniciar um novo projeto Silverli-ght. Veja na figura 1 a janela de criaode um novo projeto no Visual Studio.

    Vamos selecionar o Silverlight 4, confor-me a figura 2, como verso de desenvol-vimento.

    Por: Anderson Castro

    Figura 1. Novo Projeto Silverlight.

  • 8/3/2019 codificando 16

    49/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 49494949

    Vamos adicionar cdigo em nosso botoPrint.

    Inicialmente vamos adicionar o names-pace System.Windows.Printing e logoaps, vamos instanciar um objeto do tipoPrintDocument.

    Dentro do construtor da pgina iremossetar o evento PrintPage.

    No primeiro momento vamos configurarpara que seja impresso o contedo detoda a tela atravs da propriedadePageVisual.

    Em nosso boto iremos chamar o mto-do Print e vamos passar como par-metro o nome de nosso trabalho a serimpresso.

    O cdigo do arquivo MainPage.cs estcontido na listagem 2.

    Vamos primeiramente criar uma interfa-ce simulando uma tela de contatos.

    Vamos definir nosso layout com cincolinhas e duas colunas. Podemos conferiro cdigo XAML na listagem 1.

    Vamos adicionar trs Labels, dois Text-

    Box, um Image e um Button. Seu layoutdeve ficar semelhante ao da figura 3.

    Impresso com Silverlight 4

    Figura 2. Escolhendo a verso de desenvolvi-mento.

    Listagem 1. Construindo a Interface.

    Figura 3. Layout Concludo.

  • 8/3/2019 codificando 16

    50/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 50505050

    Para esse tutorial irei usar o MicrosoftXPS Document para mostrar o resultadoda impresso. Na figura 6, podemos vero gerenciador de impresso.

    Perceba que o nome do documento astring que passamos como parmetropara o mtodo Print().

    Na figura 7 podemos ver o resultado daimpresso. O contedo impresso exata-mente o apresentado na tela.

    Vamos executar nossa aplicao e ver oresultado (Figura 4).

    Pressionando o boto Print ser exibida

    a tela de impresso conforme a figura 5.

    Impresso com Silverlight 4

    Listagem 2. MainPage.cs.

    Figura 4. Aplicao em execuo.

    Figura 5. Tela de seleo de impressoras.

    Figura 6. Gerenciador de impresso.

  • 8/3/2019 codificando 16

    51/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 51515151

    Execute novamente nossa aplicao epressione o boto Print.

    Como podemos ver na figura 8, foi im-presso somente o contedo do controleselecionado.

    Vamos dar um toque final a nossa apli-cao, acrescente em nosso layout maisum controle button e um controlerectangle.

    Podemos ver o novo layout do aplicativo

    em execuo na figura 9.

    Agora digamos que voc queira impri-

    mir somente um dos controles exibidosem nossa tela.

    Vamos imprimir o contedo do TextBoxcom a url de nosso contato.

    Lembre-se de dar uma identificao aonosso controle, veja o trecho de cdigoXAML em que declaramos um objeto nalistagem 3.

    Em nosso MainPage.cs ser necessriouma pequena modificao.

    Iremos setar o nome de nosso controle aser impresso. Veja o cdigo do evento

    PrintPage modificado na listagem 4.

    Impresso com Silverlight 4

    Figura 7. Resultado da impresso.

    Listagem 3. Identificando Controle.

    Listagem 4. Imprimindo o controle selecionado.

    Figura 8. Resultado de nossa impresso.

  • 8/3/2019 codificando 16

    52/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 52525252

    O cdigo da listagem 5 implementa ouso da WebCam e agora, vamos impri-mir o contedo exibido por ela.

    Vamos modificar novamente nosso e-vento PrintPage e setar a propriedadePageVisual com nosso controle rectanglecomo podemos ver na listagem 6.

    Vamos novamente executar nossa apli-cao, ao pressionar o boto Start Captu-

    re ser solicitado permisso de acessoao hardware, como podemos ver na fi-gura 10.

    Clique em Sim.

    No evento click do nosso novo buttonvamos adicionar o cdigo da listagem 5.

    Obs. :Para ver mais detalhes sobre comoimplementar o uso da webcam com Sil-verlight 4 veja o artigo Usando WebCame Microfone com Silverlight 4 e VisualStudio 2010 no seguinte link:

    http://comunidade.codificando.net/

    prof i les /blogs/usando-webcam-e-microfone-com

    Impresso com Silverlight 4

    Figura 9. Novos Controles.

    Listagem 5. Implementando a captura da

    WebCam.

    Listagem 6. Modificando o evento PrintPage.

    Figura 10. Permitindo acesso ao hardware.

  • 8/3/2019 codificando 16

    53/71

    www.codificando.net

    Codificando.nete-magazine

    e-magazine

    Jun / Jul - 2010 | 53535353

    Para saber mais:

    Site oficial:http://www.silverlight.net/

    Hospedagem gratuita para suaaplicao Silverlight (4gb):http://silverlight.live.com/

    Blog Ren de Paula (User Experience E-vangelist Microsoft):http://blogs.msdn.com/renedepaula/

    Comunidades Silverlight-Codificando: http://comunidade.codificando.net/group/silverlight

    Comunidades Silverlight-Desenvolvendo Para Web: http://www.desenvolvendoparaweb.net/

    group/silverlight ComunidadesSilverlight-Silverlightbrasi:

    http://silverlightbrasil.ning.com/

    A imagem comear a ser exibida diretode sua WebCam e ao pressionar o botoPrint iremos imprimir o contedo denossa WebCam (Figura 12).

    Essa foi uma pequena demonstrao daAPI de impresso do Silverlight 4, espe-ro que tenham gostado e at breve.

    Impresso com Silverlight 4

    Figura 11. Visualizando a WebCam.

    Figura 12. Visualizando a Impresso.

    Anderson Castro

    Graduado em Analise e Desenvolvi-mento de Software atua no mercadode tecnologia a mais de trs anos comfoco na plataforma .Net, desenvolve-

    dor em C# Windows Forms e Asp.net. Alm disso, scio da Ronnin Software, empresa de desenvolvi-mento integrante do BizSpark da Microsoft e traba-lha em um grande clube na cidade de So Paulo.

    Atualmente aprofundando seus conhecimentos emWPF, WCF e Silverlight.Siga-me: @andersonCastroEscrevo e participo atualmente nas seguintes comu-nidades e blogs: www.codificando.net WWW.blog.ronnin.com.br www.desenvolvendoparaweb.net www.silverlightbrasil.ning.com

  • 8/3/2019 codificando 16

    54/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    54545454Jun / Jul - 2010 |

    LINQ to SharePoint no SharePoint

    2010

    Overview

    Uma das grandes novidades do SharePo-int 2010 para os desenvolvedores foi semdvida o LINQ to SharePoint.

    Nesse artigo vamos explorar essa novida-de que permite aos desenvolvedores cons-truir querys utilizando o LINQ (Language

    Integrated Query) em nossas aplicaesSharePoint 2010. Esse novo recurso semdvida representa um grande ganho deprodutividade aos times de desenvolvi-mento, ao utilizar sintaxe LINQ, que pa-recida com a sintaxe SQL, os desenvolve-dores criaro querys poderosas com supor-te a objetos fortemente tipados (stronglytyped objects), reduzindo os erros e aumen-tando a qualidade de desenvolvimento nosseus projetos SharePoint.

    O LINQ uma das novidades do .NETFramework 3.5 e do Visual Studio 2008, foicriado basicamente para ser o canal entreas camadas de dados e objetos nos projetosdesenvolvidos com o Framework .NET,com suporte total ao IntelliSense e ao com-pilador do Visual Studio. Voc pode escre-

    ver consultas LINQ no Visual Basic ou C#acessando banco de dados SQL, documen-

    tos XML, ADO.NET datasets e qualquercoleo de objetos que oferea suporteIEnumerableou a interface genrica IE-numerable).

    O foco desse artigo no explorar oLINQ e sim o LINQ to SharePoint, no en-tanto considero estritamente recomend-vel aos leitores que no possuem famili-

    aridade com o LINQ que se aprofundemno assunto.

    O namespaceMicrosoft.SharePoint.Linq a base utilizada pelo Provider do LINQto SharePoint, ele o responsvel por tra-duzir consultas LINQ para as conhecidasconsultas CAML (Collaborative Applica-tion Markup Language). No mais ne-

    cessrio para os desenvolvedores sabe-rem escrever consultas CAML, as consul-tas LINQ so processadas no servidor,mas podemos utilizar o REST(Representational State Transfer) no Sha-rePoint 2010 para consultas no lado cli-ente, para isso leia mais sobre o suportedo SharePoint para ADO.NET Data Ser-vices.

    No posso me estender no Overviewdesse artigo, mesmo assim abaixo listo

    Por: Wagner Amorim

  • 8/3/2019 codificando 16

    55/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    55555555Jun / Jul - 2010 |

    alguns links para referncia e estudoposterior:

    Language-Integrated Query (LINQ)

    http://msdn.microsoft.com/pt-br/library/bb397926(VS.90).aspx

    Introduo ao LINQ

    http://msdn.microsoft.com/pt-br/library/bb397897(VS.90).aspx

    Using LINQ to SharePoint (SDK)

    http://msdn.microsoft.com/en-us/library/ee535491(office.14).aspx

    SharePoint 2010 Developer Training Kit

    http://www.microsoft.com/downloads/details.aspx?FamilyID=83a80a0f-0906-4d7d-98e1-3dd6f58ff059&displaylang=en

    SharePoint 2010 Advanced DeveloperTraining

    http://blogs.msdn.com/randalli/archive/2010/05/13/sharepoint-2010-advanced-developer-training-now-live-on-msdn.aspx

    SharePoint 2010 Developer Centerhttp://msdn.microsoft.com/en-us/sharepoint/ee514561.aspx

    Get Started Developing on SharePoint2010http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx

    LINQ to SharePoint no SharePoint 2010

    Instalando o SharePoint 2010 noWindows 7

    http://www.canalsharepoint.com.br/tutoriais/Tutoriais/

    Instalando%20o%20SharePoint%202010%20no%20Windows%207.aspx

    Soluo

    Para essa soluo vou trabalhar com as seguintestecnologias:

    SharePoint Foundation 2010 RTMMicrosoft SQL Server 2008Windows 7 x64Visual Studio 2010 Ultimate

    NOTA: Eu utilizei uma instalao do Sha-rePoint Foundation 2010, mas o artigotambm se aplica ao SharePoint Server2010.

    Como boas prticas de desenvolvimento,vou trabalhar com meus exemplos utili-zando o Windows 7 como sistema opera-

    cional. Para maiores informaes de insta-lao e configurao do SharePoint 2010no Windows 7, veja o artigo citado acima.

    A Microsoft criou uma ferramenta chama-da SPMetal , que tem como objetivo criaras entidades utilizadas pelo LINQ de for-ma amigvel e produtiva. O SPMetal geraautomaticamente classes ou entidades

    com todos os metadados das listas e bibli-otecas existentes no site determinado quesero utilizadas pelas consultas do LINQ.

    DICA: Uma alternativa ao SPMetal oLINQ to SharePoint DSL, uma extensiondo Visual Studio 2010 que permite aosdesenvolvedores e principalmente aosArquitetos de Desenvolvimento utilizar

    um novo item no Visual Studio chamadoSharePoint Data Model para gerar deforma visual as entidades de um site de-

  • 8/3/2019 codificando 16

    56/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    56565656Jun / Jul - 2010 |

    terminado ou mesmo de templates desite padro, veja mais em: http://code.msdn.microsoft.com/linq2spdsl/ .

    Para iniciar nossos exemplos, vamos cri-ar uma lista em nosso site do SharePoint2010 para armazenar um cadastro de cli-entes, nesse caso crie uma lista chamadaClientes com os campos Nome eTelefone, ambos do tipo texto.

    NOTA: Para maiores informaes sobreListas e Campos no SharePoint, confiramos artigos relacionados no CanalShare-Point na seo Artigos, http://www.canalsharepoint.com.br/tutoriais/

    default.aspx.

    Criando uma Soluo com oLINQ to SharePoint

    A ferramenta SPMetal fica armazenada

    na pasta de instalao do SharePoint2010, %ProgramFiles%\Common Fi-les\Microsoft Shared\web server extensi-

    ons\14\BIN.

    Abra o Prompt de Comando (start/cmd) enavegue at a pasta %ProgramFiles%\Common Files\Microsoft Shared\web ser-

    ver extensions\14\BIN.

    LINQ to SharePoint no SharePoint 2010

    DICA: Uma dica de produtividade para aexecuo desse procedimento inserir ocaminho "%ProgramFiles%\Common Fi-

    les\Microsoft Shared\web server extensi-ons\14\BIN" nas variveis de ambiente(set path=%path%;c:\program fi-les\common files\microsoft shared\webserver extensions\14\bin), para que noseja mais necessrio navegar at a pastade instalao do SharePoint, essa varivelde ambiente tambm vai servir para a uti-lizao da ferramenta STSADM.

    Execute o seguinte comando SPMetal noprompt de comando.

    SPMetal.exe/web:http://wagnera/sites/sp2010/namespace:SharePoint2010.DEV.LINQ/code:C:\Entities.cs/language:csharp

    NOTA: Veja uma referncia completa daferramenta SPMetal e das suas respecti-vas opes em http://msdn.microsoft.com/en-us/library/ee538255(office.14).aspx .

    DICA: O nome do arquivo .cs atribuidono passo acima vai refletir diretamente no

    nome do DataContext gerado, por exem-plo, no caso acima o nome ser Entities-

    Figura 01: Pasta de instalao do SharePoint2010 no Prompt de Comando.

    Figura 02: Utilizando o SPMetal no SharePoint.

  • 8/3/2019 codificando 16

    57/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    57575757Jun / Jul - 2010 |

    DataContext.

    Aps a execuo do passo acima, o SP-Metal vai gerar um arquivo chamadoEntities.cs na raiz da pasta C:\, nessearquivo foram extrados todos os meta-dados presentes nas listas e bibliotecasdo site determinado, gerando classes eentidades.

    Nesse passo vamos criar uma VisualWebPartpara exibir dados do SharePo-int utilizando o LINQ to SharePoint pararealizar as consultas.

    Crie um Projeto no Visual Studio 2010 dotipo Visual WebPart , abra o Visual Studio2010 e clique em File/New/Project.

    DICA: Recentemente publiquei um arti-

    go completo sobre Visual WebParts noSharePoint 2010, vejam:http://www.canalsharepoint.com.br/tutoriais/Tutoriais/SharePoint 2010 - Vi-sual WebParts.aspx

    Na janela New Project, clique emVisual C#/SharePoint/2010/Empty Share-Point Project, renomei o projeto para

    SharePoint2010.DEV.LINQ e clique em OK.

    LINQ to SharePoint no SharePoint 2010

    Em seguida o Visual Studio abre a janelaSharePoint Customization Wizard, ondepodemos definir para qual site ser feito oDebug e Deploy, alm de definirmos os n-veis de segurana da soluo.

    Defina o site e o nvel de segurana daaplicao como Deploy as a farm solutione clique em Finish.

    Adicionando o arquivoEntities.cs na nova soluo.

    Na janela Solution Explorer, clique como boto direito no projeto, depois emAdd/Existing Item.

    Figura 03: Microsoft Visual Studio 2010.

    Figura 04: Escolhendo o tipo de projeto EmptySharePoint Project no Visual Studio 2010.

    Figura 05: Configurando o site e o tipo de deployque ser utilizado.

  • 8/3/2019 codificando 16

    58/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    58585858Jun / Jul - 2010 |

    Navegue at a pasta C:\ e selecione oarquivo Entities.cs gerado pelo SPMe-tal.

    Clique emAdd.

    DICA: Deve ser lembrado que esse ar-quivo Entities.cs esttico, portanto todavez que a estrutura do site for alterado oEntities.cs dever ser gerado novamente.Por esse motivo nunca alterem esse ar-quivo, no caso de haver essa necessida-

    de, criem classes parciais (partial class)para implementar as extenses aos obje-tos do Entities.

    Adicione referncia para a assemblyMicrosoft.SharePoint.Linq, clique como boto direito em References/Add Re-ference e selecione o componenteMicrosoft.SharePoint.Linq na guia

    .NET.

    LINQ to SharePoint no SharePoint 2010

    Importe para essa classe os seguintes na-mespaces:

    using Microsoft.SharePoint.Linq;using System.Linq;

    Adicionando uma Visual WebPartna soluo.

    Na janela Solution Explorer, clique como boto direito no projeto, depois emAdd/New Item.

    Na janela Add New Item, selecione o i-tem template Visual Web Part.

    No campo name digite VisualWPe cli-que em Add.

    Figura 06: Adicionando o Entities.cs no projetodo Visual Studio 2010.

    Figura 07: Entities.cs adicionado no projeto.

    Figura 08: Adicionando referncia ao assemblyMicrosoft.SharePoint.Linq.

    Figura 09: Adicionando uma nova Visual Web-Part ao projeto.

  • 8/3/2019 codificando 16

    59/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    59595959Jun / Jul - 2010 |

    NOTA: Note na Janela Solution Explo-rer (Ctrl+W,S) que o SharePoint adicio-nou trs arquivos (VisualWP.cs, Visu-

    alWP.webpart e Elements.xml) relacio-nados com a WebPart e mais trs arqui-vos relacionados com o UserControl(VisualWPUserControl.ascx, VisualW-PUserControl.ascx.cs e VisualWPUser-Control.ascx.designer.cs).

    Alm da WebPart com o User Control, foiadicionado tambm uma feature(Feature1) em uma nova pasta chamadaFeatures, essa pasta faz parte de um no-vo pacote de recursos disponveis no Vi-sual Studio 2010 para melhorar o desen-

    volvimento e deploy do SharePoint 2010no Visual Studio. Bem legal!

    Vamos rapidamente explorar esse novoitem Feature1 adicionado ao projeto en-tender de forma simples seu funciona-mento.

    Alterando informaes da Fea-

    ture

    Clique com boto direito na Feature1 e a

    LINQ to SharePoint no SharePoint 2010

    renomeie para CanalSharePoint 2010.

    D um duplo clique no item

    CanalSharePoint 2010.

    No campo Title, digite CanalSharePoint LINQ to SharePoint.

    No campo Description, digite Featurecriada para ativar a Visual WebPart da De-

    mo.

    Alterando o ttulo, a descrio eo Grupo da WebPart

    Clique 2 vezes no arquivo Visu-

    alWP.webpart e altere as seguintes linhas:

    VisualWP My Visual WebPart

    Para:SharePoint 2010 LINQ to

    SharePoint

    Figura 10: Novo Solution Explorer no Visual Stu-dio 2010.

    Figura 11: Configurando Features do SharePointno Visual Studio 2010.

  • 8/3/2019 codificando 16

    60/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    60606060Jun / Jul - 2010 |

    CanalSharePoint LINQ to SharePoint no

    SharePoint 2010

    Salve e feche o arquivoVisualWP.webpart.

    D um duplo clique no arquivoElements.xml e altere a seguinte linha:

    Para:

    PropertyName="Group"Value="CanalSharePoint" />

    Salve e feche o arquivo Elements.xml.

    Aps explorar de forma breve as Featuresno Visual Studio 2010 , vamos continuarcom o desenvolvimento da Visual Web-

    Part que vai utilizar o LINQ to SharePo-int.

    Abra o UserControl chamado VisualWPUser-Control.ascx.

    Certifique-se de que o modo de exibiodo UserControl est como Design.

    LINQ to SharePoint no SharePoint 2010

    Para simular um exemplo mais prtico,vamos criar uma WebPart que apenas exi-

    be os dados da lista Clientes , criada no

    incio do artigo.

    Altere o mode de exibio para do User-Control para Source.

    Insira o cdigo abaixo logo aps a ltimalinha de cdigo.

    Figura 12: Visualizando a Visual WebPart noModo Design.

    Figura 13: Visualizando a Visual WebPart no Modo

    Source.

  • 8/3/2019 codificando 16

    61/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    61616161Jun / Jul - 2010 |

    Abra o arquivo que contm o CodeBehinddo UserControlVisualWPUserControl.ascx.cs.

    Adicione os seguintes namespaces:

    using System.Linq;using Microsoft.SharePoint;using Microsoft.SharePoint.Linq;

    Insira o cdigo abaixo no mtodo Pa-ge_Load.

    protectedvoid Page_Load(object sender,EventArgs e)

    {using (SPSite sitec = newSPSite

    (SPContext.Current.Web.Url)){

    using (SPWeb site = sitec.OpenWeb())

    {EntitiesDataContext dc = new

    EntitiesDataContext(SPContext.Current.Web.Url);

    //Query Expressionsvar qClientes = (from item in

    dc.Clienteswhere item.Nome !=

    string.Emptyorderby item.Id descendingselectnew{

    item.Nome,

    item.Telefone}).ToList();

    gridClientes.DataSource = qCli-entes;

    gridClientes.DataBind();}

    }}

    Salve o UserControl.

    LINQ to SharePoint no SharePoint 2010

    Realizando o Deploy

    Nesse ponto o desenvolvimento da apli-cao est concludo e podemos iniciar odeploy, antes disso, compile a aplicao(Ctrl+Shift+B) e resolva qualquer erro ouconflito que possa ocorrer.

    Execute o Deploy via Visual Studio(Build/Deploy Solution).

    NOTA: Repare que o Visual Studio exe-cuta os seguintes passos de forma auto-

    mtica:

    Compila a aplicao. Recycle no App Pool da aplicao. Retract da Solution, caso exista no

    farm. Adiciona Solution. Deploy Solution. Ativa Features.

    Verificando se a Solution e as Featuresforam instaladas corretamente.

    Acesse a Central Administration doSharePoint 2010.

    Clique no item System Settings do me-nu vertical da esquerda.

    Na seo Farm Management, clique emManage farm solutions.

    Na pgina de Solution Managementdeve aparecer sua solution, como mostraa figura 14:

  • 8/3/2019 codificando 16

    62/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    62626262Jun / Jul - 2010 |

    No caso das features, feche a Central Ad-ministration e abra o site que escolheufazer o deploy no passo 1.3.

    Com o site aberto, clique no item de me-nu Site Actions, depois em Site Set-tings.

    LINQ to SharePoint no SharePoint 2010

    Na pgina Site Settings, na seo SiteCollection Administration clique no item Sitecollection features.

    Nessa pgina deve aparecer a feature quecriamos acima, conforme figura 16.

    Adicionando a Visual WebPartpara o site

    Volte para a home do site.

    Utilizando as Ribbons , clique no itemPage, depois em Edit da pgina prin-cipal do site.

    Ainda nas Guias do Ribbons, clique emInsert, depois em WebPart Com a p-gina aberta em modo de edio, clique emAdd WebPart.

    Note que a Ribbons vai adicionar umanova caixa com as propriedades da Web-

    Figura 14: Visualizando o WSP na Central Admi-nistration do SharePoint 2010.

    Figura 15: Site Actions no SharePoint 2010.

    Figura 16: Gerenciando Features no SharePoint2010.

    Figura 17: Ribbons no SharePoint 2010.

  • 8/3/2019 codificando 16

    63/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    63636363Jun / Jul - 2010 |

    Part.

    Clique em Add.

    No menu superior do Ribbons, cliqueno boto Save & Close.

    Finalizando e Testando

    Para finalizar e testar sua WebPart com oLINQ to SharePoint, basta inserir regis-

    tros na lista Clientes.

    LINQ to SharePoint no SharePoint 2010

    Concluso

    Nesse artigo conseguimos explorar a no-

    va funcionalidade do SharePoint, LINQ toSharePoint de uma forma mais simples eprtica, para maiores informaes, dicas& truques, acessem o site da ComunidadeCanalSharePoint:http://www.canalsharepoint.com.br.

    Figura 18: Adicionando minha Visual WebPart

    de LINQ to SharePoint.

    Figura 19: Exibio de WebPart sem registrosna lista Clientes.

    Figura 20: Exibio de WebPart com registrosna lista Clientes.

    Wagner Amorim

    Lder da Maior Comunidade deS h a r e P o i n t d o B r a s i l(CanalSharePoint), participante dediversos projetos para mdias e

    grandes empresas utilizando tecnologias Micro-soft, tm se especializado nas Tecnologias Share-Point e .NET desde 2003. Atualmente trabalhacomo Consultor Especialista SharePoint por todoo Brasil, com participao focada no desenvolvi-mento e customizao dos Produtos e TecnologiasSharePoint, tambm participa como membro ativodas comunidades TechNet e MSDN.

  • 8/3/2019 codificando 16

    64/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    64646464Jun / Jul - 2010 |

    O Futuro do Home Office

    Por: Ramon Dures

    A IBM saiu na frente incentivando essemodelo de trabalho entre os funcionrios.Outras grandes empresas seguiram namesma linha e hoje conseguimos ver essemodelo at nas mais formais. Tinha um

    tempo que os administradores de redesfalavam que no era possvel liberar o a-cesso externo do e-mail e logo sugiram osWeb Mails e acesso externo normal comopadro do dia a dia alm de toda a infra-estrutura de acesso remoto.

    J faz alguns anos que conversando comum amigo ele me contou como era o seutrabalho no Home Office e rimos bastantesobre o que a famlia dele comentava.Pois na poca viam ele todos os dias emcasa, saia algumas vezes e voltava e con-seguia manter um bom padro de vida e

    j chegaram at a suspeitar que ele estavaenvolvido com algo ilcito pois era anica forma de justificar que ele ganha-va dinheiro trabalhando em casa.

    Eu sempre achei interessante esse modelode trabalho. A cerca de dois anos eu con-segui implementar na minha empresapermitindo que os profissionais pudes-sem trabalhar de qualquer lugar aumen-tando a flexibilidade, satisfao e resulta-dos. Nas principais cidades grandes doBrasil em horrios de alto fluxo de trafegode carros acabamos por perder muito

    tempo entre o trajeto de caso ao escritrio.Em tempos de tecnologia sustentvel o

    Home Office aparece cada vez mais co-mo um diferencial economizando no con-sumo de combustvel e at no stress.

    Abrir uma empresa hoje j demanda um

    investimento inicial principalmente parao pequeno empreendedor no Brasil queinicia a Startup na maioria das vezes comseus recursos prprios e a melhor opoinicial usar o espao em casa que j con-ta com toda a infraestrutura de telefone,internet para iniciar o seu negcio. Eudiria que a nova verso das famosasgaragens americanas que deram inicio agrandes empresas que conhecemos hoje.Durante o dia a dia do Home Office algu-mas questes so importantes para quevoc possa usufruir do espao da melhorforma possvel. Eu considero uma missopara todos os profissionais, pois ser umgrande exerccio de organizao e autogesto e provocar pra os que consegui-rem ultrapassar esse desafio ganhos ni-cos em sua carreira profissional pela ca-

    pacidade desenvolvida de focar e geren-ciar o seu tempo.

    1) O Home Office oferece a oportunidadede se trabalhar com horrios altamenteflexveis permitindo que se trabalhe maistarde ou mais cedo ficando a seu cargocontrolar o seu horrio de trabalho almde incrementar em seu tempo todo o des-

    perdcio do dia a dia com locomoo.

  • 8/3/2019 codificando 16

    65/71

    www.codificando.net

    Codificando.nete-maga

    zine

    e-magazine

    65656565Jun / Jul - 2010 |

    2) Convivncia com outros membros dacasa no primeiro momento ser um gran-de estagio de adaptao. Por mais que a

    cultura desse tipo de trabalho seja bastan-te difundida ainda encontrar resistnciase pequenas confuses com a interfernciada famlia. uma etapa de adaptao detodos para que tomem conhecimento quenaquele horrio voc est trabalhando.Algumas pessoas brincam falando que u-sam um bon para sinalizar a todos da ca-sa.

    3) Algumas pessoas adoram trabalhar depijama. Eu pessoalmente tenho algumasrotinas tipo me preparar como se fosse aotrabalho, porm com uma roupa mais con-fortvel para ficar no escritrio.

    4) Apesar dos horrios flexveis impor-tante que voc estabelea sua rotina. Euacordo cedo todos os dias, pois s o fatode no precisar sair j ganhamos mais deuma hora de sono no mnimo da d paraperfeitamente acordar cedo. Outro pontoimportante fazer um balanceamento pa-ra no trabalhar demais uma vez que aca-

    ba sendo um vicio.

    5) As reunies so muito importantes masacabam tomando muito o nosso dia a dia

    na empresa e tornando at improdutivo.Quando estou no Home Office conduzo asmesmas via conferncias por fone/vdeocom pautas definidas e sem muita conver-sa.

    6) A principal vantagem usar a mesmaestrutura de casa para reduzir seus custos.Em alguns casos convm ter uma linha

    adicional privada do seu escritrio para

    evitar que outras pessoas da casa atendam.Eu fui alm uso uma linha VOIP que meacompanha em qualquer lugar e mais u-

    ma flexibilidade da tecnologia atual.

    7) O meu negcio depende da internet en-to alm da banda larga eu uso um modem3G de backup para continuar o trabalho emcaso de necessidade.

    8) Por mais que esteja protegido sempre vaiter algum tipo de distrao em casa que ve-

    nha a tentar desviar a sua ateno. Nesseponto voc precisa ser muito focado paracriar uma barreira e evitar que esses impe-dimentos atrapalhem a sua concentrao.No entanto nada comparado com o ambi-ente de trabalho com vrios telefones tocan-do e mais de 30 pessoas querendo falar comvoc.

    9) Em casa a geladeira o seu frigobar p