Converter um suplemento do SharePoint com preenchimento automático em um suplemento hospedado pelo provedor
O Microsoft SharePoint introduziu uma nova abordagem para estender sites do SharePoint, além da abordagem anterior de usar personalizações baseadas em solução. Este novo modelo de extensibilidade do SharePoint, chamado de modelo de suplemento, permite que os desenvolvedores criem implementações personalizadas que podem ser implantadas em ambientes do SharePoint, independentemente de estarem em execução em uma implantação local, do SharePoint Online ou híbrida.
Os desenvolvedores podem criar dois tipos diferentes de Suplementos do SharePoint. O primeiro tipo, um suplemento hospedado pelo SharePoint, é executado principalmente no navegador e todos os ativos compatíveis com ele, como HTML, CSS, imagens e JavaScript, são armazenados e servidos pelo SharePoint. Os outros tipos de suplementos se enquadram no CAM (modelo de suplemento de nuvem) e são executados principalmente externos ao SharePoint em outro servidor e se comunicam com o SharePoint usando o modelo de objeto do lado do cliente (CSOM) e a API REST. Eles estabelecem uma identidade usando o popular protocolo OAuth 2.0 com suporte do SharePoint.
Os desenvolvedores poderiam implementar suplementos usando o modelo de suplemento de uma das duas maneiras, como um suplemento hospedado pelo provedor ou um suplemento autohosted. Os suplementos com preenchimento automático foram lançados como um programa de visualização quando o SharePoint foi lançado, mas em maio de 2014, a Microsoft anunciou que fecharia o programa de visualização e não daria mais suporte à criação de suplementos autohosted. Para o anúncio, confira Atualização no Programa de Visualização de Suplementos Automedidos.
Este artigo explica como converter e migrar um suplemento automedido para um suplemento hospedado pelo provedor. No entanto, é importante que os desenvolvedores entendam algumas diferenças específicas entre as duas abordagens porque esse conhecimento simplifica muito o processo de conversão.
Pré-requisitos para converter um suplemento com preenchimento automático em um suplemento hospedado pelo provedor
Conceitos principais a serem conhecidos antes de converter um suplemento com preenchimento automático
Antes de converter um suplemento automedido em um suplemento hospedado pelo provedor, você deve ter uma compreensão básica dos suplementos do SharePoint e as diferenças entre suplementos do SharePoint hospedados, hospedados pelo provedor e auto-hospedados no SharePoint. Os artigos listados na tabela a seguir devem fornecer esse entendimento.
Título do artigo | Descrição |
---|---|
Suplementos do SharePoint | Saiba mais sobre o novo modelo de suplemento no SharePoint que permite criar suplementos, que são pequenas soluções fáceis de usar para os usuários finais. |
Aspectos importantes do cenário de desenvolvimento e da arquitetura dos suplementos do SharePoint | Saiba mais sobre os aspectos da arquitetura dos suplementos do SharePoint e o modelo para suplementos do SharePoint, incluindo as opções de hospedagem de suplemento, opções de interface do usuário (interface do usuário), sistema de implantação, sistema de segurança e ciclo de vida. |
Escolher padrões para desenvolver e hospedar seu suplemento do SharePoint | Saiba mais sobre as diversas maneiras de hospedar suplementos do SharePoint. |
Hosts da web, sites do suplemento e componentes do SharePoint no SharePoint | Saiba mais sobre a distinção entre webs host e webs de suplemento. Descubra também quais componentes do SharePoint podem ser incluídos em um Suplemento do SharePoint, que são implantados na Web do host, que são implantados na Web de suplemento e como o suplemento da Web é implantado em um domínio isolado. |
Convertendo o suplemento
A conversão de um suplemento do SharePoint auto-gerenciado em um suplemento hospedado pelo provedor envolve a modificação de dois ou três componentes:
- O suplemento do SharePoint em si
- O aplicativo Web remoto ou os serviços
- O Banco de Dados SQL do Microsoft Azure, se houver, no suplemento
Um suplemento automedido do SharePoint implantado no site do Azure e SQL do Azure Banco de Dados automaticamente quando ele foi instalado; no entanto, os suplementos hospedados pelo provedor podem fazer com que seu aplicativo Web remoto e outros serviços existam em qualquer plataforma Web. Este artigo pressupõe que os componentes remotos em um suplemento automedido permanecerão como serviços do Azure após a conversão em um suplemento hospedado pelo provedor.
As seções a seguir percorrem o processo de conversão de um suplemento automedido em um suplemento hospedado pelo provedor. O exemplo de suplemento automedido que é usado, Customer Manager, é simples, a fim de se concentrar nas etapas de conversão e não no suplemento real. Ele consiste em três projetos:
CustomersDb: um projeto de banco de dados SQL que gera o *.dacpac necessário. Observe que não há nenhum esquema definido neste projeto. Ele é simplesmente usado para criar um banco de dados porque o esquema é criado pelo aplicativo Web ASP.NET.
CustomerManagerAH: um suplemento automedido do SharePoint configurado para incluir o projeto de aplicativo Web ASP.NET e SQL do Azure aplicativo de camada de dados no pacote de suplemento do SharePoint resultante.
CustomerManagerAHWeb: um aplicativo Web ASP.NET MVC que usa a abordagem "Entity Framework Code First with Migrations" para criar o esquema de banco de dados, bem como ler e gravar no banco de dados.
O suplemento é um aplicativo Web ASP.NET MVC que pode mostrar os clientes de uma tabela em um Banco de Dados SQL do Azure, bem como adicionar novos clientes. Este é um aplicativo Web anônimo que permite que qualquer pessoa exiba ou adicione clientes. A solução do Visual Studio para o suplemento com preenchimento automático e projetos associados pode ser baixada do seguinte repositório público: Autohosted-Migration-Code-Samples.
A conversão de um suplemento automedido do SharePoint em um suplemento hospedado pelo provedor envolve várias etapas. Cada um é descrito nas seguintes seções:
Implantar o Banco de Dados SQL do Azure
Criar o site do Azure para hospedar o aplicativo Web remoto
Registrar o suplemento com seu site do SharePoint
Atualizar e implantar o site do Azure para o aplicativo Web remoto
Reconfigurar o projeto de suplemento do SharePoint
Implantar o Banco de Dados SQL do Azure
A primeira etapa na conversão do suplemento automedido em um suplemento hospedado pelo provedor é implantar o Banco de Dados SQL do Azure no qual o aplicativo Web ASP.NET depende. Há muitas maneiras diferentes de criar um Banco de Dados SQL do Azure, algumas das quais estão documentadas no site de documentação do Azure: SQL Server migração de banco de dados para Banco de Dados SQL na nuvem.
A abordagem descrita nas etapas a seguir usa o modelo de implantação de aplicativo de camada de dados, pois é assim que o banco de dados é implantado em um suplemento autohosted do SharePoint. Isso envolve gerar um pacote de aplicativo de camada de dados (*.dacpac) e usá-lo para criar o banco de dados.
Para criar o Banco de Dados SQL do Azure
Abra a solução autohosted no Visual Studio.
Clique com o botão direito do mouse no customerDb do projeto de banco de dados e selecione Compilar. Isso gera o arquivo CustomerDb.dacpac na
[..]\bin\[debug | release]
pasta.Crie um novo banco de dados SQL do Azure. Entre no portal do Azure e, após a carga do painel, selecione o link BANCOS DE DADOS SQL na margem.
Selecione o link SERVERS na navegação superior e selecione o botão ADD no rodapé, conforme mostrado na figura a seguir.
Na caixa de diálogo CREATE SERVER exibida, selecione a ASSINATURA do Azure, o NOME DE LOGOn e SENHA para o usuário que terá direitos ao servidor e selecione a mesma REGIÃO usada ao criar o site do Azure anteriormente. Anote o nome de logon e a senha porque você precisará deles em uma etapa posterior.
Depois que o formulário for preenchido, selecione o ícone de seleção no canto inferior direito para criar o banco de dados. Enquanto o servidor é criado agora, os únicos recursos que podem acessá-lo são outros serviços do Azure. Anote o nome do Banco de Dados SQL do Azure porque você precisará disso em uma etapa posterior.
Para implantar o Banco de Dados SQL do Azure
Para se conectar ao Banco de Dados SQL do Azure e implantar o banco de dados, é necessário criar uma regra de firewall que permita o tráfego do computador que implanta o banco de dados. Caso contrário, as conexões com o Banco de Dados SQL do Azure serão recusadas com erros semelhantes ao da figura a seguir.
Para criar uma regra de firewall, no portal do Azure, selecione o Banco de Dados SQL do Azure criado anteriormente e selecione o link CONFIGURE na navegação superior.
Na seção endereços IP permitidos , o endereço IP é mostrado no momento como ele aparece na figura a seguir. Selecione ADICIONAR AOS ENDEREÇOS IP PERMITIDOS para adicionar uma regra de firewall. Isso permite conexões com o Banco de Dados SQL do Azure e a implantação do banco de dados. Selecione Salvar no rodapé.
Implante o banco de dados do Visual Studio usando o SDK do Azure para .NET 2.3.
No Visual Studio, abra a janela SQL Server Pesquisador de Objetos ferramenta, clique com o botão direito do mouse no nó SQL Server e selecione Adicionar SQL Server.
Na caixa de diálogo Conectar ao Servidor, insira o Nome do Servidor, defina a Autenticação como SQL Server Autenticação e insira o mesmo Logon e Senha definidos ao criar o Banco de Dados SQL do Azure. O nome do servidor deve ser o nome totalmente qualificado do servidor, que é
[server-name].database.windows.net
, conforme mostrado na figura a seguir.
Depois de se conectar ao Banco de Dados SQL do Azure, expanda o nó para o servidor recém-adicionado, clique com o botão direito do mouse no nó Bancos de Dados e selecione Publicar Aplicativo de camada de dados para criar o assistente de publicação.
Na seção Aplicativo de camada de dados de origem (.dacpac), use o botão Procurar para localizar o arquivo *.dacpac gerado quando o projeto do banco de dados foi criado em uma etapa anterior e verifique se o nome do banco de dados está definido como CustomerDb.
Selecione Publicar para publicar o CustomerDb no Banco de Dados SQL do Azure.
Atualize a janela de ferramentas do Visual Studio SQL Server Pesquisador de Objetos para ver o CustomerDb listado no nó Bancos de Dados.
Observação
Dependendo de como o banco de dados foi criado para o suplemento autohosted, algum trabalho extra pode ser necessário para implantá-lo no Azure. Para obter mais informações, consulte Criando e gerenciando bancos de dados e aplicativos de camada de dados no Visual StudioCriando e Gerenciando Aplicativos de camada de dados
Ações pós-implantação
Depois que o Banco de Dados SQL do Azure for criado, faça uma cópia da cadeia de conexão usada para estabelecer uma conexão com o banco de dados. Isso pode ser obtido de duas maneiras.
Uma maneira é entrar no portal do Azure e ir para o Banco de Dados SQL do Azure criado na última etapa: CustomerDb. Na página DASHBOARD do banco de dados, selecione o link Mostrar Cadeias de Conexão para ver uma lista de cadeias de conexão. Faça uma cópia da cadeia de conexão ADO.NET para uso posterior.
A outra maneira de obter a cadeia de conexão é de dentro do Visual Studio, desde que o SDK do Azure v2.3 esteja instalado. Na janela SQL Server Pesquisador de Objetos ferramenta no Visual Studio, selecione o CustomerDb do banco de dados. Depois que o banco de dados for selecionado, examine a janela ferramenta Propriedades para ver a cadeia de conexão. Esse é o mesmo valor encontrado no portal do Azure.
Criar um site do Azure
A próxima etapa é criar um novo site do Azure em que o aplicativo Web remoto resida para o suplemento hospedado pelo provedor. Isso precisa ser feito primeiro porque a URL do aplicativo Web remoto é necessária antes de registrar o suplemento. No entanto, o registro do suplemento no SharePoint deve preceder a implantação dos arquivos para o aplicativo Web ASP.NET porque há duas saídas do processo de registro (a ID do cliente e o Segredo do Cliente) necessárias antes da implantação do ASP.NET arquivos do aplicativo Web.
Para criar um novo site do Azure
Entre no portal do Azure. Quando o painel for carregado, clique no link de navegação do websiteS na margem esquerda e selecione o botão NOVO no rodapé, conforme mostrado na figura a seguir.
No Assistente do Novo site, selecione COMPUTE, site e QUICK CREATE e especifique uma URL e UM PLANO DE HOSPEDAGEM WEB. Por fim, especifique a REGIÃO em que o site deve ser criado. Lembre-se da região selecionada porque a mesma região deve ser usada para o banco de dados SQL do Azure criado posteriormente.
Se um plano de hospedagem da Web ainda não existir ou um novo for desejado, selecione a opção Criar um novo plano de hospedagem web. A figura a seguir mostra um exemplo.
Depois de criar o site do Azure, anote a URL usada para o site. Nos números anteriores, o site criado é
http://spahapptoph.azurewebsites.net
.
Registrar um novo suplemento
Todos os suplementos do SharePoint criados usando o modelo de suplemento devem ser registrados com o farm ou o locatário do SharePoint de hospedagem para estabelecer uma confiança entre o SharePoint e o aplicativo Web remoto. Isso envolve o registro de uma nova entidade de suplemento com o SharePoint especificando os seguintes valores:
- ID do cliente: a ID do suplemento
- Segredo do cliente: a senha do suplemento
- Título: o nome do suplemento
- Domínio de suplemento: o domínio de nível superior do aplicativo Web remoto
Quando um suplemento com preenchimento automático é instalado no SharePoint Online, Office 365 cria a entidade de suplemento automaticamente. Ele conhece a URL do aplicativo Web remoto porque cria o site automaticamente. Ele também usa a ID do cliente e o Segredo do Cliente e adiciona-os ao web.config do aplicativo Web remoto. O web.config é onde uma classe fornecida pela Microsoft (no arquivo TokenHelper.cs ou .vb) procura-as ao validar solicitações e autenticar com o SharePoint.
No entanto, em um suplemento hospedado pelo provedor, o desenvolvedor precisa registrar manualmente o suplemento e atualizar manualmente o web.config no ASP.NET projeto Web.
Para registrar um novo suplemento
Navegue até a página de registro de suplemento do site do SharePoint em que o suplemento será instalado. Esta página é encontrada em
http://[SharePoint-site-url]/_layouts/15/appregnew.aspx
.Na página de registro de suplemento, defina o Tipo de Suplemento comoUm suplemento em execução em um servidor Web e selecione os dois botões Gerar para criar uma nova ID do Cliente e Segredo do Cliente.
Insira o nome do suplemento no campo Título e insira a URL do site do Azure de destino criado na etapa anterior no campo Domínio de Suplemento . Por fim, selecione o botão Criar .
Depois que o suplemento for registrado, o SharePoint exibirá um resumo das informações usadas no formulário para criar o registro. É muito importante que essas informações sejam copiadas para segurança, especificamente a ID do cliente e o Segredo do Cliente, pois elas são necessárias em uma etapa posterior.
Atualizar e implantar o site do Azure para o aplicativo Web remoto
A próxima etapa é reconfigurar o aplicativo Web remoto para que ele possa ser implantado como um suplemento hospedado pelo provedor, em vez de um suplemento automedido. Há várias maneiras de implantar um site ASP.NET em um site do Azure, incluindo implantá-lo diretamente do Visual Studio, automaticamente do controle de origem, como Visual Studio Team Services, do GitHub ou até mesmo usando a opção FTP experimentada e verdadeira. Neste artigo, o Visual Studio é usado. No entanto, antes que o aplicativo Web possa ser implantado, ele primeiro precisa de algumas atualizações para trabalhar com o suplemento hospedado pelo provedor.
Para atualizar o projeto de aplicativo Web remoto
A grande alteração que precisa ocorrer no ASP.NET aplicativo Web MVC está dentro do arquivo web.config. Neste arquivo, há três configurações encontradas no <nó appSettings> . Estes são o ClientId, ClientSecret e SqlAzureConnectionString. Os dois primeiros são usados pela classe fornecida pela Microsoft, em TokenHelper.cs ou .vb, para facilitar a autenticação e a comunicação com o SharePoint do aplicativo Web remoto. Este último, SqlAzureConnectionString, é usado pelo suplemento para se conectar ao Banco de Dados SQL do Azure.
Em um suplemento automedido do SharePoint, Office 365 preenche os valores dessas configurações quando o site do Azure e o Banco de Dados SQL do Azure são criados quando o suplemento é instalado. No entanto, em um suplemento hospedado pelo provedor, eles devem ser definidos manualmente antes que o suplemento seja implantado.
Uma opção é colar os valores das três configurações das etapas anteriores neste artigo, mas a desvantagem com essa abordagem é que, se precisarem ser alteradas, o web.config precisará ser atualizado manualmente e reimplantado no site do Azure.
Outra opção é simplesmente limpar essas configurações (deixar as chaves de configurações no lugar, basta definir o atributo value="" como uma cadeia de caracteres vazia) e defini-las nas configurações do site do Azure por meio do portal do Azure. Essa abordagem significa que as configurações podem ser alteradas sem atualizar a base de código. Para fazer isso:
Entre no portal do Azure e acesse o site do Azure criado nas etapas anteriores.
Na página do painel do site do Azure, selecione CONFIGURAR no menu de navegação superior e role para baixo até a seção de configurações de suplemento .
Adicione três novas configurações de suplemento usando os mesmos nomes de configuração do arquivo web.config. Use os valores obtidos nas etapas anteriores para ClientId, ClientSecret e SqlAzureConnectionString.
Verifique se a cadeia de conexão SQL do Azure Banco de Dados está correta e válida porque, quando a cadeia de conexão é exposta por meio do portal do Azure e do Visual Studio, o atributo de senha é substituído por uma máscara. A senha mascarada na cadeia de conexão deve ser alterada para usar a senha correta definida ao criar a entrada para o Banco de Dados SQL do Azure.
Para implantar o aplicativo Web remoto no site do Azure
Agora, os arquivos do aplicativo Web ASP.NET MVC precisam ser implantados no site do Azure como o aplicativo Web remoto.
No Visual Studio, clique com o botão direito do mouse no projeto Web e selecione Publicar. Isso inicia a caixa de diálogo Publicar Assistente Web.
Nesta caixa de diálogo, selecione Sites do Windows Azure e selecione Publicar.
Selecione o nome do site do Azure criado em uma etapa anterior, conforme mostrado na figura a seguir, selecione OK e verifique se a URL do site é HTTPS.
Selecione Validar Conexão para garantir que as configurações e a conexão estejam em boa ordem de trabalho.
Selecione Publicar, que aciona o Visual Studio para implantar o aplicativo Web ASP.NET no site do Azure.
Copie a URL do site.
Depois de implantar o site, o Visual Studio inicia o navegador de depuração padrão e navega até o site do Azure. No entanto, o site renderiza com um erro porque os controladores ASP.NET MVC são decorados com um atributo (especificamente o ) que espera que o SharePointContextFilter
SharePoint envie determinados valores para o controlador no cabeçalho de uma solicitação HTTP POST, mas por padrão o navegador iniciou uma solicitação HTTP GET, portanto esse erro é esperado.
Observação
Para obter opções adicionais para implantar ASP.NET aplicativos Web em um site do Azure, consulte Implantação local do Git para Serviço de Aplicativo do Azure.
Domínios personalizados e certificados SSL para sites do Azure
Todos os sites do Azure usam a seguinte convenção de nomenclatura: http[s]://[site-name].azurewebsites.net
. A Microsoft já adicionou um certificado SSL curinga a todos os sites no domínio, mas os *.azurewebsites.net
clientes são livres para associar um domínio personalizado ao seu site do Azure, bem como usar seus próprios certificados SSL para esses domínios personalizados.
Para obter informações sobre como usar domínios personalizados, consulte Mapear um nome DNS personalizado existente para o Azure Aplicativos Web.
Para obter informações sobre como adicionar um certificado SSL personalizado para seu nome de domínio personalizado, consulte Associar um certificado SSL personalizado existente ao Azure Aplicativos Web.
Reconfigurar o projeto de suplemento do SharePoint
A última etapa é reconfigurar o projeto de suplemento do SharePoint. O projeto do Visual Studio para o Suplemento do SharePoint tem o tipo de suplemento configurado para autohosted, que precisa ser alterado para hospedado pelo provedor.
Para reconfigurar o projeto de suplemento do SharePoint
Abra o arquivo AppManifest.xml no projeto suplemento do SharePoint e altere a opção Tipo de Hospedagem de Automedido para Hospedado pelo Provedor.
Defina a página Iniciar do suplemento para apontar para a URL da página inicial do aplicativo Web remoto, que é a URL do site do Azure. Certifique-se de incluir o valor da cadeia de caracteres de consulta {StandardTokens}, se ele ainda não estiver lá. Isso garante que o SharePoint adicione os principais tokens de cadeia de caracteres de consulta à URL quando ele abre o aplicativo Web remoto.
Remova a referência no projeto suplemento do SharePoint para o aplicativo Web ASP.NET MVC selecionando o projeto de suplemento do SharePoint no Visual Studio Gerenciador de Soluções. Na janela Ferramenta Propriedades , defina a propriedade Projeto Web como (Nenhum), conforme mostrado na figura a seguir.
Essa etapa requer uma atualização manual para o arquivo AppManifest.xml porque algumas configurações não são expostas no designer. Faça isso salvando as alterações existentes no arquivo AppManifest.xml e clique com o botão direito do mouse no mesmo arquivo em Gerenciador de Soluções e selecione Exibir Código.
Na exibição de código do arquivo AppManifest.xml, remova as duas referências ao projeto de aplicativo Web do ASP.NET MVC e ao projeto de aplicativo de camada de dados SQL porque elas não são necessárias em um suplemento hospedado pelo provedor do SharePoint.
Crie um NOVO GUID e substitua o GUID existente no atributo ProductId . Isso informa ao SharePoint que este é um novo suplemento, não uma atualização para um suplemento existente.
Importante
Se o ProductId existente foi usado, o SharePoint retornará o erro "O suplemento fornecido difere de outro suplemento com a mesma versão e ID do produto" quando o suplemento convertido é instalado.
Localize o <elemento RemoteWebApplication> e atualize o atributo ClientId para ser o mesmo GUID obtido ao registrar o suplemento com o SharePoint e que foi usado nas configurações de suplemento web.config do site do Azure.
Depois de salvar todas as alterações no arquivo AppManifest.xml, o suplemento agora está pronto para teste como um suplemento hospedado pelo provedor do SharePoint. Implante o suplemento em um farm do SharePoint ou no site do SharePoint Online para verificar se as etapas de conversão foram executadas corretamente.