Sumário. 03:. Editorial 61:..Close ( ) 04 :. Processo de Upgrade e Migração. 11 :. Client Object Model. 21 :. Developer DashBoard



Documentos relacionados
Manual de Atualização Versão

Procedimentos para Reinstalação do Sisloc

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Noções de. Microsoft SQL Server. Microsoft SQL Server

Google Drive: Acesse e organize seus arquivos

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Manual do Visualizador NF e KEY BEST

02 - Usando o SiteMaster - Informações importantes

Atualizaça o do Maker

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

Manual SAGe Versão 1.2 (a partir da versão )

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

Desenvolvendo Websites com PHP

Instalando o Internet Information Services no Windows XP

Guia de Atualização PROJURIS WEB 4.5. Manual do Técnico Atualização - ProJuris Web 4.5. Manual do Técnico Atualização - ProJuris Web 4.

Usar o Office 365 no iphone ou ipad

Manual Portal Ambipar

INSTRUMENTO NORMATIVO 004 IN004

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

2.0.0.X. Storage Client. TecnoSpeed. Tecnologia da Informação. Manual do Storage Client

BACKUP ONLINE PASSOS PARA CONFIGURAÇÃO INICIAL DO PRODUTO

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Atualizaça o do Playlist Digital

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

ISO/IEC 12207: Gerência de Configuração

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral

Moodle - Tutorial para Professores

Curso de atualização Educação Integral e Integrada. Tutorial Moodle. Belo Horizonte, 2013.

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Omega Tecnologia Manual Omega Hosting

Visão geral híbrida de Serviços Corporativos de Conectividade do SharePoint 2013

Google Drive. Passos. Configurando o Google Drive

Kerio Exchange Migration Tool

ÍNDICE. 1. Introdução O que é o Sistema Mo Porã Como acessar o Site Mo Porã Cadastro do Sistema Mo Porã...

Manual do Painel Administrativo

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Construção Páginas de Internet

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE PELOTAS

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

OFICINA BLOG DAS ESCOLAS

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇOS IMPRESSÃO. Professor Carlos Muniz

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Manual Integra S_Line

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY

O sistema que completa sua empresa Roteiro de Instalação (rev ) Página 1

agility made possible

Manual Captura S_Line

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

BlackBerry Mobile Voice System

Procedimentos para Instalação do Sisloc

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

MANUAL C R M ÍNDICE. Sobre o módulo de CRM Definindo a Campanha... 3

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Índice. Tenho uma conta pessoal e uma conta da instituição em que dou aula, porém não consigo acessar a conta da escola. O que fazer?

Orientação a Objetos

Feature-Driven Development

Introdução. Olá! Seja bem-vindo ao manager. O melhor sistema de marketing do mercado.

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

Parte I. Demoiselle Mail

Projeto Você pede, eu registro.

Processos Técnicos - Aulas 4 e 5

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

MANUAL DE CONFIGURAÇÃO DO BACKUP

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Polycom RealPresence Content Sharing Suite Guia rápido do usuário

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Validando dados de páginas WEB

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Engenharia de Software III

AULA 3 FERRAMENTAS E APLICATIVOS DE NAVEGAÇÃO, DE CORREIO ELETRÔNICO, DE GRUPOS DE DISCUSSÃO, DE BUSCA E PESQUISA (PARTE II)

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

NetEye Guia de Instalação

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

Portal do Documento Eletrônico Seguro

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line)

Como incluir artigos:

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Proposta Comercial. Proposta Comercial de prestação de serviços de Desenvolvimento de web site para o Vereador Marcelo Ramos.

OneDrive: saiba como usar a nuvem da Microsoft

edirectory Plataforma ios / Android

LEIA ISTO PRIMEIRO. IBM Tivoli Configuration Manager, Versão 4.2.1

Dicas para usar melhor o Word 2007

Manual da Turma Virtual: MATERIAIS. Para acessar a turma virtual com o perfil Docente, siga o caminho indicado abaixo:

Alterações Easycaptive

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

Outlook Apresentação

Transcrição:

Sumário Edição 17 Número 17 Ano 04 2010 EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Fernanda Sallai Sergio Gonçalves REVISÃO Fabrício Lopes Sanchez Sara Barbosa EDITORAÇÃO E DIAGRAMAÇÃO Adriano Almeida Fabiano Rodrigues COLABORADORES Aline Maia Backer Rosa Bruno Velaz Marcel Medina Rodolfo Roim Rodrigo Romano Thiago Silva Wagner Amorim 04 :. Processo de Upgrade e Migração no SharePoint 2010 Por: Aline Maia 11 :. Client Object Model Por: Rodolfo Roim 21 :. Developer DashBoard Por: Marcel Medina 28 :. Governança no SharePoint 2010 Por: Rodrigo Romano Fale com Editor É muito importante para a equipe saber a sua opinião sobre a revista, caso tenha alguma critica, sugestão, ou elogio entre em contato. Caso tenha interesse em publicar um artigo na revista envie o título e um resumo do tema em formato Word. revista@codificando.net 34 :. List Definition e Content Types no SharePoint 2010 Por: Thiago Silva 42 :. BI no SharePoint 2010, uma evolução para seu Portal Por: Bruno Velaz Produzido por: 48 :. SharePoint e plataforma Azure: soluções de integração Por: Backer Rosa 56 :. Redes Sociais no SharePoint 2010 Por: Wagner Amorim 03:. Editorial 61:..Close ( )

Edição 17 Número 17 Ano 04 2010 Editorial Olá novamente a todos os leitores da revista Codificando.NET e-magazine é com prazer e alegria que abro o editorial desta 17ª Edição. Apertem o cinto de segurança, pois, você está prestes a viajar pelo fascinante mundo do SharePoint. Mas antes começarei o editorial fazendo dois comunicados importantes: Infelizmente por motivos pessoais, o Leandro Alves Santos precisará se desligar do time da revista. Quero agradecê-lo pela colaboração e desejar boa sorte no seu caminho. Devido problemas de hospedagem, o endereço do site da revista mudou para: http://www.codificandomagazine.com.br/. Realizamos uma parceria entre as comunidades Codificando.net e Canal SharePoint. Agradeço principalmente ao Wagner Amorim que apoiou esse projeto e proporcionou aos leitores da Codificando.NET e- Magazine, através de seu esforço em reunir autores de alto gabarito no que se diz respeito ao SharePoint, a possibilidade conhecer ainda mais essa tecnologia e esse mundo tão envolvente e fascinante. Nesta edição teremos: Aline Maia apresenta de forma simples sobre o processo de migração do SharePoint 2007 para o 2010. Rodrigo Roim explica sobre uma inovação na área de desenvolvimento de aplicações chamada Client Object Model. Marcel Medina demonstra como exibir os resultados de processamento de sua página graficamente através do Developer Dashboard. Rodrigo Romano aborda sobre o significado da governança e seu uso junto ao SharePoint. Thiago Silva mostra a utilização de dois recursos para quando estamos arquitetando e planejando nossas aplicações: os List Definition e Content Types. Bruno Velaz relata da necessidade do Business Intelligence e sua utilização junto ao SharePoint. Backer Rosa demonstra a integração entre a plataforma Azure e SharePoint. Diante de todo esse conteúdo de qualidade elaborado por profissionais renomados e conhecidos da comunidade só me resta agradecer a sua participação leitor e desejar uma excelente leitura! Fernanda Sallai revista@codificando.net "O conhecimento é o processo de acumular dados. A sabedoria reside na sua simplificação." (Martin H. Fischer) EDITORIAL

Processo de Upgrade e Migração no SharePoint 2010 Por: Aline Maia Não há como negar: o SharePoint 2010 está sensacional! A quarta edição da ferramenta (e plataforma de desenvolvimento) está mais madura e poderosa. Mantendo a mesma arquitetura básica baseada em páginas geradas dinamicamente, a partir de parametrização em bancos de dados de conteúdo porém com a camada de Serviços Aplicacionais redesenhada e agora parte da versão Foundation, muitas novas funcionalidades estão disponíveis para os u- suários. E, se por um lado as mudanças tornam o SharePoint 2010 ainda mais atraente para usuários finais, podemos considerar que a onda de adoção iniciada pelo SharePoint 2007 nas organizações só tende a crescer. Liderando o Quadrante Mágico nos relatórios de análise do Gartner que posicionam a Microsoft como Leader desde o lançamento da versão 2007, a sofisticação atingida pelo Microsoft SharePoint 2010 contribui para que desenvolvedores e profissionais administradores de IT tenham um ambiente ainda mais atrativo para suas soluções customizadas. Se com as mudanças de arquitetura iniciadas na versão 2007 o SharePoint passou a ser a ferramenta número um para a criação de portais de colaboração (com grande adoção pelo mercado brasileiro e mundial), na versão 2010 o produto atinge plena maturidade. Mas uma nova versão nos leva ao seguinte questionamento: como as organizações que já adotaram o SharePoint 2007 estão se preparando para migrar para SharePoint 2010? Um ambiente SharePoint 2007 estável e em produção é um bom candidato a migração para SharePoint 2010? E para nós, profissionais da área, fica ainda a pergunta: qual a complexidade técnica de uma operação como esta? Apesar de ser possível optar pelo upgrade in-place de ambientes (em que a nova versão é instalada diretamente na farm que possui a versão 2007 e mais comum em cenários de ambientes nãoprodução ou virtualizados, por não permitir revertermos a operação) nota-se que a estratégia mais utilizada é a de migração de dados. Ao optarmos por migração de dados, uma nova farm Share- Point 2010 é criada e configurada antes de receber os dados existentes, migrados através da restauração de backups dos bancos de dados de conteúdo. Uma das muitas vantagens deste método é a preservação das condições da farm original e a possibilidade de se realizar diversas simulações e testes dos procedimentos até a homologação e real migração do ambiente. Neste artigo iremos discutir o 4

Processo de Upgrade e Migração no SharePoint 2010 Refazer as configurações gerais da farm os administradores do ambiente deverão finalizar a configuração tais como na farm 2007, incluindo rever extensões de arquivos bloqueadas, configurações de envio de e-mail, logging, bem como dos serviços aplicacionais em uso (incluindo aqueles introprocesso de migração de dados, as fases desse processo e pontos de atenção não apenas do ponto de vista do administrador de IT, mas também do desenvolvedor. Por onde começar? Uma boa forma de iniciar a fase de planejamento da migração é executar o comando preupgradecheck ainda na farm 2007 para obter um relatório preliminar com possíveis fontes de problema e pontos de atenção que precisem ser trabalhados antes da efetiva migração para SharePoint 2010. O comando preupgradecheck está disponível na ferramenta ststadm a partir da versão SP2 (mas recomenda-se que seja utilizada a versão disponível a partir do Cumulative Update de outubro de 2009) e a documentação detalhada para sua execução pode ser encontrada em: http://technet.microsoft.com/en-us/ library/cc287628(office.14).aspx. Como a ferramenta não realiza nenhuma modificação na farm, podemos executá-la em ambiente produtivo sem receios e obter a lista de site definitions, site templates, features e language packs em uso, além de identificar quaisquer modificações nãosuportadas (como alterações no schema do banco de dados e arquivos web.config com erros). É importante que seja feito o inventário de todas as customizações existentes, especialmente aquelas relacionadas a soluções.wsp distribuídas, controles, webparts, event handles, masterpages e quaisquer outros binários que necessitarão instalação prévia também no novo ambiente. Para auxiliá-lo nesta tarefa, você pode consultar o checklist disponível em: http://technet.microsoft.com/en-us/ library/cc287730(office.14).aspx. Projetos de migração são ainda uma boa oportunidade de rever a necessidade de manter em produção dados e funcionalidades já obsoletos. É importante prever, junto às áreas usuárias e analistas de negócio envolvidos no projeto (e eles DE- VEM fazer parte da equipe!) quais sites e site collections podem ser arquivados ou removidos, além de identificar sites com problemas de funcionamento e contendo itens órfãos que possam ser apagados. Também é possível que algumas funcionalidades até então não existentes no MOSS 2007 e que demandaram a criação de código customizado (como tag clouding, webparts para exibição de vídeo, controles de calendário e tantos outros exemplos) possam ser depreciadas após a migração. Preparando a Nova Farm Os passos para a preparação da nova farm podem ser encontrados com detalhes seguindo-se a documentação existente no Microsoft TechNet (http:// technet.microsoft.com/en-us/library/ cc287900(office.14).aspx), cabendo ressaltar a necessidade de finalizarmos os seguintes passos antes de proceder com a migração: 5

Processo de Upgrade e Migração no SharePoint 2010 Dica: Para testar webparts, contenttypes e outros tipos de código customizados, adote a estratégia de criar antes da migração uma ou mais site collection de testes (como no exemplo acima) contendo todos estes elementos, preferencialmente utilizando bancos de dados separados. Você terá assim um ambiente basduzidos com o SharePoint 2010). É essencial que um guia de instalação seja gerado com todos os passos detalhados, de forma que possa ser utilizado em cenários de disaster recovery. Como desenvolvedor, você deve fornecer à área de administração e operação do ambiente todos os passos necessários para aplicação das customizações. Recriar as Web Applications recrie as web applicartions pré-existentes, sem deixar de configurar managed paths, alternate access mappings e certifique-se de adicionar como conta gerenciada a conta de acesso ao content database a ser migrado. Certifique-se de optar pelo mesmo método de autenticação preliminarmente utilizado. Habilite ainda a opção self-service site creation, caso esta estivesse em uso também na farm anterior. Durante o processo de criação da web application, um novo banco de dados (vazio) será criado. Não é necessário preocupar-se com a nomenclatura utilizada para ele, pois iremos removê-lo e apagá-lo antes de realizar a migração dos dados existentes. Após termos o novo ambiente instalado, configurado e com as web applications anteriores pré-criadas, podemos iniciar o processo de migração. Não é necessário criar site collections nas web applications recém-configuradas, mas podemos fazêlo apenas para testar as configurações aplicadas. Após os testes de configuração, remova a associação do banco de dados de conteúdo criado com a web apllication. Estaremos prontos para iniciar os testes de migração. Iniciando a Migração Com o backup full dos bancos de dados de conteúdo restaurados no novo servidor SQL, podemos testar mais uma vez a integridade e compatibilidade dos sites anteriores com o novo ambiente Share- Point 2010, dessa vez utilizando Powershell e o cmdlet Test-SPContentDatabase. Utilizando o SharePoint 2010 Management Shell, execute o seguinte comando: Test-SPContentDatabase -Name <DatabaseName> -WebApplication <URL> No cenário de testes de customizações deste artigo, temos uma web application contendo os seguintes sites collections: / (raiz) Contém subsites utilizados para teste de migração de customizações de layout (masterpages modificadas, páginas unghosted, uso de language packs, site templates) /sites/contenttypes Para teste de content types. /sites/features Para teste de features e webparts distribuídas com e sem o uso de WSP /sites/listevents Para teste de event handlers /sites/workflow Para teste de workflows 6

Processo de Upgrade e Migração no SharePoint 2010 tante interessante para testar o funcionamento do seu código após a migração (e o feito de utilizá-lo no SharePoint 2010) banco de dados de conteúdo com a web application, executaremos o seguinte comando: Ao executar o comando Test- SPContentDatabase no banco de dados de conteúdo deste cenário, obtive uma lista de pontos de atenção, descritos, por exemplo, na figura 1: Mount-SPContentDatabase -Name <DatabaseName> -WebApplication <URL> (Obs: CurrentSiteCount indica, na verdade, a quantidade de site collections existentes na figura 2). Figura 1 - Lista de pontos de atenção. Em que: Category Indicará o tipo de elemento não encontrado, tal como MissingWebPart, MissingSetupFile, etc. Error True ou False. UpgradeBlocking Caso o valor seja False, o upgrade do schema do banco de dados será executado, ainda que o conteúdo contenha erros Message e Remedy são os campos que conterão mais informações para nos auxiliar no processo de identificação dos itens com problemas. Apesar dos erros apresentados durante o teste, optarei por prosseguir com a migração do conteúdo, já que nenhuma das mensagens indica UpgradeBlocking = True. Em nosso caso, apenas as páginas que estiverem fazendo uso dos itens não encontrados não serão perfeitamente renderizados no browser. Para realizar, de fato, a associação do Figura 2 - Quantidade de site existente. Diversos bancos de dados podem ser migrados simultaneamente através deste comando, bastando executar o comando Mount-SPContentDatabase em diferentes consoles Powershell. Para testes de identificação do tempo necessário para a completa migração de farms com múltiplas web applications, pode-se paralelizar a operação. Nota: Não é possível adicionar o mesmo banco de dados de conteúdo em mais de uma web application, em uma mesma farm (ainda que o banco de dados esteja renomeado). Cada site collection possui um GUID que é adicionado ao banco de dados de configuração e deve ser único. Apesar da operação ser concluída com sucesso, duplicar site collections causará problemas na exibição e funcionamento dos sites. Se você necessita duplicar site collections e sites, utilize os comandos relacionados a backup/restore através do Central Administration, ststadm ou Powershell, já que estes gerem novos 7

Processo de Upgrade e Migração no SharePoint 2010 GUIDs para os sites/site collections durante o processo. Observem que não apenas um, mas DOIS relatórios com informações sobre o processo são gerados (por padrão, em /14/LOGS): Upgrade-<timestamp>.txt contém toda informação dos passos executados na migração, incluindo erros e sucessos. Pode ser bastante extenso, conforme o tamanho dos bancos de dados migrados Upgrade-<timestamp>-error.txt contém apenas as informações de erros durante o processo. migrados, ou utilize o seguinte comando Powershell: Upgrade-SPContentDatabase - id <GUID> Em que o GUID é o identificador do banco de dados. Uma forma de listar o GUID do content database é: Get-SPContentDatabase Identity <nome_do_banco> Com o processo de vinculação concluído, sites cujo conteúdo customizado foi previamente distribuído para a nova farm terão suas páginas corretamente exibidas, mantendo o visual exibido na versão 2007 (figura 4): Notem que algumas informações importantes, classificadas como warning, serão também listadas não apenas no arquivo com as informações completas, como no resumo, facilitando nosso processo de troubleshooting. Em meu exemplo, há arquivos de site theming que não foram encontrados no servidor, figura 3. Figura 3 - arquivos de site theming não encontrados. Após a migração, o schema do banco de dados está totalmente alterado para a nova versão (caso haja algum erro que impeça a conclusão completa, o banco de dados estará listado como pendente de conclusão. Navegue via Central Administration ao Upgrade and Migration > Check Upgrade Status para retomar migração de bancos de dados parcialmente Figura 4 - Exemplos de sites migrados para farm SP2010, mantendo visual anterior (incluindo masterpages não nativas e posteriormente adicionadas ao site). Notem que páginas unghosted, que foram alteradas via SharePoint Designer e/ou que tiveram suas masterpages modificadas também mantém o visual anterior. Para converter os sites para o template nativo do SharePoint 2010, basta acessar a opção Visual Upgrade a partir do menu de ações do site. Note que é possível testar o upgrade antes de aplicá 8

Processo de Upgrade e Migração no SharePoint 2010 -lo em definitivo e a aplicação pode ser feita granularmente (site a site), ou de uma única vez para toda a site collection. Observe, porém, que páginas unghosted manterão suas modificações e será necessário utilizar a função Reset to Template através do SharePoint Designer para aplicar o visual versão 2010. Para os sites que possuem páginas com controles ou componentes não encontrados, podemos receber mensagens de erro tais como a figura 5: rio garantir que as configurações dos serviços aplicacionais (especialmente a- queles que dependam do conteúdo em questão, como o Search) esteja de acordo com o cenário desenhado para a solução. Recomenda-se que tantos testes de migração sejam executados até que haja plena segurança de sua real execução. Ainda assim, tenha um plano de rollback, que pode incluir a manutenção do uso da farm MOSS 2007 preservada por mais algum tempo até a total homologação da migração. A lista a seguir é um resumo de alguns KBs relacionados ao processo de migração que podem ser consultados para auxílio no troubleshooting (e também para evitar problemas): Figura 5 - Mensagens de erro. Utilize o correlation ID informado para localizar mais informações sobre o componente não encontrado no log de tracing do SharePoint. Uma outra dica para identificar componentes não encontrados é acessar a área de Settings (_layouts/settings) para verificar por webparts/contentypes nas galerias destes sites. Distribua os componentes não encontrados para o novo ambiente e as páginas passarão a ser exibidas corretamente. Passos Pós-Migração Após a migração dos content databases ser concluída com sucesso, será necessá- 981495 - "You cannot upgrade from SharePoint 2007 to SharePoint 2010 on a server farm" 981487 - "Error message when you try to upgrade a server farm to SharePoint Foundation 2010 or to SharePoint Server 2010: 'This upgrade session has been stopped'" 980328 - "Troubleshooting resources for issues that you may encounter when you upgrade to SharePoint Server 2010 or to SharePoint Foundation 2010" 982575 - "The My Links link disappears after you upgrade SharePoint Server 2007 to SharePoint Server 2010" 982579 - "'User modifications to the SharePoint content database' error message when you upgrade a Share- Point Server 2007 content database to SharePoint Server 2010" 981233 - "Document conversions do 9

Processo de Upgrade e Migração no SharePoint 2010 not work after you perform an inplace upgrade to SharePoint Server 2010" 982249 - "You cannot start a Share- Point 2007 out-of-box workflow in SharePoint 2010" Verifique sempre a lista de KBs mais recentes em http://support.microsoft.com e muito sucesso em seus projetos de migração! Abraços e boa sorte! Aline Maia Trabalha na Microsoft como Premier Field Engineer, com foco em atendimentos de casos SharePoint. Com experiência em desenvolvimento e suporte a sistemas, é pós-graduada em Engenharia de Software, foi recentemente aprovada nas provas beta de SharePoint 2010 (Configuração e Administração), além de ser Microsoft Certified Technical Specialist (MCTS) em WSS 3.0 e MOSS 2007 (infra e dev) e Microsoft Certified Solution Developer (MCSD), com provas que incluem desde VB 6.0 às diversas versões do.net Framework. Acredita que um bom desenvolvedor deve estar preocupado com os aspectos relacionados à administração do ambiente SharePoint, e vice-versa. Blog: http://alinefmrk.spaces.live.com (não muito atualizado, mas ainda ativo) e Twitter: @alinefmaia. 10

Client Object Model Por: Rodolfo Roim Introdução As inovações que o SharePoint 2010 trouxe no último dia 12 de Maio, lançamento oficial da versão da plataforma, são inúmeras. Tantas que torna difícil a tarefa de citá-las em um único artigo ou apresentação. Somente uma edição de uma revista para conseguir agrupar as principais inovações veja que eu não disse todas, mas as principais juntas. As mudanças no SharePoint 2010 começam pelo posicionamento do produto, deixando de ser apenas um produto para ser considerado uma plataforma de desenvolvimento de aplicações de negócios. E como tal, o SharePoint 2010 inovou nas possiblidade de acessar as informações armazenadas em suas bibliotecas e listas. Dentre essas inovações, uma delas é a implementação do RESTful onde o produto expõe para leitura apenas interfaces para sua aplicação consumir informações das listas e bibliotecas do SharePoint. Outra inovação na área do desenvolvimento de aplicações é o Client Object Model - assunto desse artigo - uma composição de DLLs que torna possível desenvolver aplicações client side com uma experiência muito próxima do desenvolvimento de aplicações para SharePoint 2010 server side. Com o Client Object Model o desenvolvedor poderá desenvolver aplicações utilizando Silverlight,.NET e ECMAScript. Veremos exemplos de cada um dos tipos ao longo do artigo. Mas antes de começarmos por uma das tecnologias de desenvolvimento, é necessário que saibamos o básico do Client OM. Client Object Model Cenário atual Suponha que você tenha uma demanda de desenvolvimento de uma aplicação, que irá rodar no lado do cliente (client side), e essa aplicação deverá consumir e eventualmente inserir informações do seu portal SharePoint 2007. A única opção de desenvolvimento que existe é a utilização dos WebServices do SharePoint 2007, localizados no diretório _vti_bin de cada site. Imagine agora que, analisando os webservices já disponíveis, você não encontra a funcionalidade que precisa para re- 11

Client Object Model solver o seu problema. Cavando um pouco mais fundo, você descobre que a funcionalidade existe, mas não está exposta em nenhum WebService out of the box. Sua saída é criar novos Webservices utilizando as APIs do SharePoint e expor essas funcionalidades. Ou seja: você precisa reinventar a roda, pois tais funcionalidades já existem na API do SharePoint. Figura 1 - Modelo de acesso aos dados armazenados no SharePoint 2007. Suponha ainda que você precise escrever uma interface web dessa aplicação utilizando alguma linguagem de Script (JScript, JavaScript). Você sabe que consumir um WebServices de uma aplicação JavaScript não é hoje uma tarefa fácil. Muito bem, antes de você pedir demissão ou entrar em vias de fato com seu gerente, leia esse artigo até o final, porque cenários como o descrito acima não são raros de acontecer e a situação pode se repetir a qualquer novo projeto. Façamos uma pausa aqui para recapitular a maneira que costumávamos trabalhar esse desenvolvimento no SharePoint 2007 e como esse mecanismo todo funcionava. O diagrama da figura 1 ilustra o funcionamento de uma chamada feita por uma aplicação Cliente, desenvolvida para interagir com um Portal construído no SharePoint 2007. Veja que a Aplicação Cliente tinha que instanciar um WebServices para retornar ou incluir informações no SharePoint. Esse, por sua vez fazia acesso às APIs do SharePoint e então acessava as informações do SQL Server, repositório de dados do produto. SharePoint 2010 O Client Object Model é uma camada de abstração para retornar resultados reconhecidos como objetos do SharePoint. Vamos melhorar o conceito... Com o Cliente OM você consegue desenvolver uma aplicação client utilizado uma API (não mais um WebServices) com toda a riqueza de funcionalidades que a API do SharePoint oferece. Essa abordagem garante, inclusive, consistência para o desenvolvedor, que pode desenvolver Aplicações Server da mesma forma que as aplicações clientes. Certo, mas como isso tudo funciona? Voltemos ao cenário anterior - antes de você pedir demissão - onde você havia sido designado para desenvolver uma a- plicação cliente que, a princípio, consuma informações de um site construído no SharePoint 2010. O que antes era limitado aos WebServices, agora você tem um novo serviço chamado Client.svc, que nada mais é um serviço WCF que reside no SharePoint 2010 e o Client OM é um proxy para esse serviço WCF. Sendo assim, quando você re- 12

Client Object Model quer alguma informação do servidor em sua aplicação desenvolvida com o Client OM, você está mandando essa requisição em formato XML para o Client.svc, que irá enviar para o servidor processar. U- ma vez processado, o Client.svc empacota o resultado em um XML e devolve para o Client OM no formato JSON (JavaScript Object Notation). A figura 2 ilustra bem esse tráfego de informações entre sua aplicação cliente e o servidor. Como foi dito acima, você pode desenvolver, utilizando o Client OM, de três diferentes maneiras: com.net, Silverlight ou ECMAScript. A tabela da figura 3 mostra que a diferença de sintaxe entre as três maneiras de programação é muito sutil, enaltecendo a consistência no desenvolvimento e facilitando, assim, a vida do profissional. Figura 3- Diferença entre as chamadas do modelo de objeto do SharePoint 2010. Figura 2 - Fluxo de informações entre a Aplicação Cliente e o SharePoint 2010 através do Client OM. Evidentemente que você, como um desenvolvedor, não precisa saber o que está acontecendo por trás de tudo que sua aplicação está realizando, entretanto, sabendo do fluxo da informação e da maneira que suas requisições são processadas, você consegue ter uma idéia mais nítida da eficiência do Client OM. Você pode estar se perguntando, antes de qualquer coisa, o que eu consigo fazer com o Cliente OM? Um exemplo: você consegue ter acesso à Site Collection, Sites, Listas, Itens das Listas, Views, List Schemas, Arquivos, Pastas, WebParts, Segurança, Content Types, Site Templates e operações do Site Collection. Bem completo, não?! Percebam que nos quadros que utilizam o Client OM podemos notar a presença de uma nova classe, chamada ClientContext. Esse é o cerne do desenvolvimento quando o assunto é Client OM e vamos ver com mais detalhes. ClientContext ClientContext é a classe utilizada na programação de aplicações cliente onde passam todas as requisições da sua aplicação. É através do ClientContext que você define qual o site que está sendo acessado por sua aplicação, quando você passa a URL como atributo na construção do objeto. O exemplo de código da listagem 1, escrito em uma aplicação Console, demonstra como utilizar o objeto clientecontext e a partir dessa chamada, como retornar os títulos de todas as listas de um determinado site. 13

Client Object Model using (ClientConext clientcontext = new ClientContext("http://intranet.contoso.com")) //Retorna o Site Collection Site SiteCollection = clientcontext.site; clientconext.load(sitecollection); clientconext.executequery(); //Retorna o top level site Web site = clientconext.web; clientconext.load(site); clientconext.executequery(); //Retorna apenas os títulos das listas clientconext.load(clientconext.web, x => x.lists.include(l => l.title).where(l => l.title!= null)); clientconext.executequery(); foreach(list list in site.lists) Console.WriteLine(lists.Title); Listagem 1 - Classe ClientContext. Uma observação que deve ser feita no código da listagem 1 - outra inovação no SharePoint 2010 - é a utilização da expressão lambda que estamos passando como parâmetro para o objeto Client- Context. Essa expressão garante que o Client OM irá buscar toda a coleção de listas do site do contexto, no entanto retornará apenas os títulos das listas, ou seja, o retorno é um objeto muito mais leve. Além disso, a utilização da expressão lambda permite que você, desenvolvedor, consiga buscar exatamente a informação que você precisa. Nota: A classe ClientContext deriva da classe ClientRuntimeConext, que, por sua vez, herda a interface IDisposable. Sendo assim, a título de melhores práti- cas, é recomendado que você use a classe ClientContext dentro da instrução using. Referências A primeira coisa que você precisa fazer para testar o código acima é adicionar duas referências ao seu projeto: Microsoft.SharePoint.Client.dll e Microsoft.SharePoint.Client.Runtime.dll. A primeira DLL é a que contém as classes que você irá utilizar para desenvolver seu código e a segunda é a que contém toda a lógica de transporte da informação entre a aplicação cliente e o servidor SharePoint. Autenticação Você poderá notar no código incluído no Apêndice 1 - mais completo - que nenhuma credencial foi fornecida em nenhum momento. Isso porque à medida que o objeto ClientContext estabelece uma conexão com o servidor, ele próprio gerencia a autenticação no portal, utilizando as credenciais do usuário local. Entretanto, quando você estiver desenvolvendo uma aplicação com o Client OM utilizando.net (Windows Forms, Console App, WPF) você poderá modificar o esquema de autenticação utilizando a propriedade ClientContext.AuthenticationMode e alternar entre autenticação anônima ou através de forms -based authentication. Dependendo do modo de autenticação especificado, o Client OM chama o webservices de autenticação do SharePoint ([...]/_ vti_bin / Authentication.asmx), em seguida, obtém e define um cookie que ele usa para futuras chamadas. 14

Client Object Model A mudança no esquema de autenticação só pode ser alterada nas aplicações.net. Quando você estiver escrevendo uma aplicação com ECMAScript, o Client OM irá autenticar usando a credencial que estiver executando a página, no momento da chamada. Diferenças entre.net/ Silverlight & ECMAScript Já que entramos no assunto, vamos falar um pouco mais sobre as principais diferenças entre o desenvolvimento de aplicações clientes utilizando.net / Silverlight e ECMAScript. <AbreParênteses> Para que ainda não está familiarizado, o termo ECMAScript foi um termo cunhado pela ECMA International para definir o padrão da linguagem de script utilizada nas aplicações Web, para desenvolvimento no lado Cliente. O padrão foi criado para que as empresas responsáveis pelas duas principais linguagens de script (JavaScript e JScript) utilizassem esse padrão e as aplicações pudesse rodar nos diferentes navegadores. Se você tiver maior interesse pela história da criação do ECMAScript, poderá encontrar a página pesquisada nas referências desse artigo. </FechaParênteses> A assinatura do método poderá ser diferente, assim como o construtor do ClientContext (ECMASCript: ClientContext URLRelativaDoServidor). No ECMAScript esse construtor leva uma URL relativa do servidor, mas na versão com o código gerenciado desse construtor leva ou uma URL completa ou uma Uri. Os dois modelos de objetos usam diferentes tipos de valores de dados. O modelo de objeto do ECMAScript não tem um equivalente para todos os tipo de valores de dados do.net Framework. ECMAScript se refere à StringCollection como string[]. Por outro lado, o ECMAScript tem outros valores que o.net Framework não tem, como por exemplo, o NaN (not a number), ou o infinito positivo/negativo; O modelo de objeto do ECMAScript permite Forms Authentication, mas você não pode especificar o mecanismo de autenticação para se conectar ao servidor. Quando você está criando um item e adicionando-o para uma coleção e- xistente, novas atualizações não podem ser realizadas naquela coleção enquanto a consulta está sendo executada. Esta questão aplica-se quando estiver adicionando um item a uma coleção, caso contrário vários clientes simultaneamente pode ler e gravar os itens existentes dentro de uma coleção; Como parte da segurança em geral, você não pode usar o modelo de objeto ECMAScript em uma página para trabalhar com os dados do Microsoft SharePoint 2010 Fundation a menos que a página contenha um form digest control, por exemplo <SharePoint:FormDigest runat="server"/>; Você, geralmente não pode compartilhar variáveis através de escopos, 15

Client Object Model então, por esse motivo, você não pode usar padrões de códigos comuns, tais como try/catch/finally; Algumas comparações com case-in sensitive não funcionam da mesma maneira no cliente como funcionam no servidor. Algumas comparações no lado do servidor usam o WebSite local e para fazer a comparação, mas o cliente pode usar somente a cultura invariante para e- vitar round-trips frequentes. Share- Point Foundation 2010 não suporta comparações case-in sensitive se o servidor estiver usando um Web Site local. branda, uma vez que a similaridade com a API do servidor é muito grande. Referências 1. ECMA International http://en.wikipedia.org/wiki/ Ecma_International 2. ECMAScript http://en.wikipedia.org/wiki/ ECMAScript 3. Code Snippets: Using the SharePoint Client Object Model with External Lists http://msdn.microsoft.com/en-us/library/ ff464372.aspx Considerações finais O Client Object Model é mais uma inovação, dentro do pilar Composite, que o SharePoint 2010 trouxe. Essa nova abstração tem por objetivo facilitar o desenvolvimento de aplicações cliente que necessitam interagir com os dados armazenados no SharePoint 2010. Aplicações que antes demandavam o consumo dos WebServices do SharePoint 2007 ou ainda, que demandavam a criação de novos WebServices para estender funcionalidades já existentes na API do SharePoint 2007, agora, na versão 2010 do produto, podem ser atendidas escrevendo suas aplicações utilizando o Client Object Model. Do ponto de vista da experiência do desenvolvedor, a meta do time de engenharia do SharePoint 2010 era: consistência, ou seja, que o desenvolvedor pudesse ter uma curva de aprendizado muito 4. Understanding the using statement in C# http://www.codeproject.com/kb/cs/ tinguusingstatement.aspx 5. JSON - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/json 6. Introduction to the Client OM in Share- Point 2010 http://www.slideshare.net/benrobb/ introduction-to-the-client-om-insharepoint-2010 7. Developing with Data Technologies in SharePoint 2010 (Level 100) https://msevents.microsoft.com/cui/ WebCastEventDetails.aspx?culture=en- US&EventID=1032442298&CountryCode= US 8. Managed Client Object Model http://msdn.microsoft.com/en-us/library/ ee537247.aspx 16

Client Object Model 9. Client Object Model SharePoint 2010 Developer Training Course http://channel9.msdn.com/learn/courses/ SharePoint2010Developer/ ClientObjectModel/ 10. Using the SharePoint Foundation 2010 Managed Client Object Model with the Open XML SDK 2.0 http://msdn.microsoft.com/en-us/library/ ee956524(office.14).aspx 11. SharePoint Connections - SharePoint 2010 & Client Object Model http:// www.sharepointproconnections.com/ article/sharepoint/sharepoint-2010-s- Client-Object-Model.aspx //get site collection Site sitecollection = clientcontext.site; try Console.WriteLine("Trying to read the Site Collection URL"); Console.WriteLine (sitecollection.url); catch (PropertyOrFieldNotInitializedException ex) Console.WriteLine("Failed to read the Site Collection URL"); Console.WriteLine(ex.Message); Console.WriteLine(); 12. Explicação do termo vias de fato : http://br.answers.yahoo.com/question/ index?qid=20090719203242aawqnte Você também pode acessar meu virtual bookmark em http:// www.delicious.com/rodolforoim e procurar pela tag: Codificando_eMagazine e encontre todos os artigos consultados como referência para esse artigo. Apêndices Apêndice 1 Código de uma Console Application. static void Main(string[] args) try //get the context using (ClientContext clientcontext = new ClientContext("http:// intranet.contoso.com")) //Fill the Url Property Console.WriteLine("Requesting the Site Collection URL from the server..."); clientcontext.load(sitecollection); clientcontext.executequery(); //Try to read again Console.WriteLine("Slite Collection Url: " + sitecollection.url); Console.WriteLine(); //Get the Site Web site = clientcontext.web; //try to read the title try Console.WriteLine("Trying to read the site title"); Console.WriteLine(site.Title); catch (PropertyOrFieldNotInitializedException x) 17

Client Object Model Console.WriteLine("Failed to read site title"); Console.WriteLine(x.Message); Console.WriteLine(); //Fill the Title Property Console.WriteLine("Requesting the Site Collection Title from the server..."); clientcontext.load(site); clientcontext.executequery(); //Try to read Title now Console.WriteLine("Site Title: " + site.title); //Get the list title Console.WriteLine(); Console.WriteLine("Lists in this site"); clientcontext.load(site.lists); clientcontext.executequery(); //Include titles clientcontext.load (clientcontext.web, x => x.lists.include(l => l.title).where(l => l.title!= null)); clientcontext.executequery(); foreach (List list in site.lists) Console.WriteLine(list.Title); Console.WriteLine(); Console.WriteLine(); Console.ReadKey(); catch (InvalidQueryExpressionException x) Console.WriteLine(x); catch (ClientRequestException x) Console.WriteLine(x); Apêndice 2 Código de uma a- plicação Silverlight namespace Microsoft.SDK.SharePointServices.Samples public partial class MainPage : UserControl Web owebsite; ListCollection colllist; IEnumerable<List> listinfo; public MainPage() InitializeComponent(); private void Button_Click(object sender, RoutedEventArgs e) ClientContext clientcontext = Client- Context.Current; owebsite = clientcontext.web; ListCollection colllist = owebsite.lists; clientcontext.load(owebsite, website=>website.title); listinfo = clientcontext.loadquery( colllist.include(list=>list.title, list=>list.fields.include (field=>field.title).where (field=>field.required == true && field.hidden!= true))); clientcontext.executequeryasync (onquerysucceeded, onqueryfailed); 18

Client Object Model private void onquerysucceeded(object sender, ClientRequestSucceededEventArgs args) UpdateUIMethod updateui = DisplayInfo; this.dispatcher.begininvoke (updateui); private void onqueryfailed(object sender, ClientRequestFailedEventArgs args) MessageBox.Show = "Request failed. " + args.message + "\n" + args.stacktrace; private void DisplayInfo() MyOutput.Text = "Title: " + owebsite.title; colllist = owebsite.lists; foreach (List olist in listinfo) MyOutput.Text += "\n\tlist: " + olist.title; FieldCollection collfield = olist.fields; foreach (Field ofield in collfield) MyOutput.Text += "\n\t\tfield: " + ofield.title; (); private delegate void UpdateUIMethod Apêndice 3 Exemplo de código de uma aplicação ECMAScript <asp:content ID="PageHead" ContentPlace- HolderID="PlaceHolderAdditionalPageHead " runat="server"> <SharePoint:ScriptLink runat= server LoadAfterUI= true Localizable= false Name= sp.js /> <script src= jquery-1.4.1.min.js type="text/javascript"></script> <script type="text/javascript"> var ClientContext; var site; function GetSiteButton_Click() this.clientcontext = new SP.ClientContext.get_current(); this.site = this.clientcontext.get_web(); this.clientcontext.load(this.site, Title ); this.clientcontext.executequeryasync( Function.createDelegate(this, this.loadsitesuccesscallback), Function.createDelegate(this, this.loadsitefailurecallback) ); function LoadSiteSuccessCallback (sender, args) $( #SiteTitle ).html(this.site.get_title()); function LoadSiteFailureCallback (sender, args) alert(args.get_message()); </script> </asp:content> <asp:content ID="Main" ContentPlaceHolderID="PlacehoderMain" runat="server"> 19

Client Object Model <input type button value= Get Site Title onclick= GetSiteButton_Click() /> <br /> <div id= SiteTitle ></div> </asp:content> Rodolfo Roim Sou formado em Ciência da Computação pela Universidade de Marília. Cursei o mestrado em Engenharia de Software na Universidade Estadual de Campinas (UNICAMP) e sou pós-graduado em Administração de Empresas pela Fundação Getúlio Vargas EAESP. Trabalhei com SharePoint por 8 anos, desde a primeira versão do produto chamado Digital Dashboard. Atualmente gerencio o programa MVP no Brasil e mantenho os estudos em SharePoint recorrentes. Blog: http://rodolforoim.wordpress.com. Twitter: @rodolforoim. 20