Oi pessoal, tudo bem?
Durante o desenvolvimento de soluções, nós desenvolvedores temos a preocupação de entregar soluções funcionais, que estejam de acordo com os requisitos solicitados. Apesar de me preocupar com a performance de minhas aplicações, na maioria das soluções comerciais que tenho trabalhado performance não é um fator crítico.
Dependendo do cenário e se isso for um requisito? Como obter informações de diagnóstico em suas soluções no SharePoint 2010?
Justamente temos agora o Developer Dashboard que traz um painel de informações de tracing.
Nesse artigo vou mostrar como habilitar o Developer Dashboard, como utilizar as APIs para exibir suas informações de Tracing e como exibir os resultados de processamento de sua página graficamente.
Apresentando o Developer Dashboard
Assim como um desconhecido, antes de tudo gostaria de apresentar o Developer Dashboard, conforme podemos ver na Figura abaixo:
Figura 1 – SharePoint 2010 Dashboard Developer
OBS: Repare que a borda do Dashboard é de cor verde, pois não contém asserts e eventos críticos. Compararemos a mudança de cor mais adiante.
O lado esquerdo apresenta os eventos executados durante o processamento da página (http handler events) e seus respectivos tempos de execução, enquanto que no lado direito temos um mix contendo informações abrangentes e também detalhes do mergulho da requisição, como por exemplo as queries enviadas ao banco de dados.
O interessante é que os links revelam o Callstack da execução e mais detalhes, de acordo com a figura abaixo:
Figura 2 – Detalhes de uma query do banco de dados
Uma vez apresentados vamos partir para o que interessa.
Ativando e desativando o Developer Dashboard
Por padrão o Developer Dashboard não vem habilitado e para exibí-lo temos 3 possibilidades:
-
Código .Net
-
STSADM
-
PowerShell
Também temos 3 níveis de exibição do Dashboard: On, Off e OnDemand. Onde:
-
No nível de exibição "On" o painel sempre será exibido;
-
Em "Off" ele é desligado;
-
Em "OnDemand" um ícone é adicionado à página para exibição do painel apenas quando solicitado.
A figura abaixo nos exibe tal ícone:
Figura 3 – Ícone do Developer Dashboard
OBS: É importante ressaltar que se o Dashboard foi habilitado utilizando OnDemand, somente Administradores do Site Collection e Owners terão acesso. Membros e Visitantes não visualizarão o ícone. Em todas as ativações do Developer Dashboard utilizarei o nível de exibição OnDemand, que no meu ponto de vista é o ideal.
Código .Net
Podemos criar uma Feature que ative ou desative o Dashboard, ao invés de utilizar scripts. Dessa forma a ativação ou desativação pode ser feita diretamente pelo Site Collection Features.
Crie um projeto no Visual Studio 2010 do tipo Empty SharePoint Project chamado DeveloperDashboard. Escolha a opção para trabalharmos com uma Farm Solution. Seu projeto inicial deve estar semelhante à Figura 4:
Figura 4 – Projeto Inicial da Feature DeveloperDashboard
Adicione um Event Receiver à Feature conforme exibido na Figura 5:
Figura 5 – Adição de Event Receiver
A classe DeveloperDashboardEventReceiver será criada automaticamente, com os métodos comentados. Adicione o seguinte código para ativação e desativação da feature:
Code Snippet
- public override void FeatureActivated(SPFeatureReceiverProperties properties)
- {
- SPWebService contentService = SPWebService.ContentService;
- contentService.DeveloperDashboardSettings.DisplayLevel = SPDeveloperDashboardLevel.OnDemand;
- contentService.DeveloperDashboardSettings.Provision();
- }
-
- public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
- {
- SPWebService contentService = SPWebService.ContentService;
- contentService.DeveloperDashboardSettings.DisplayLevel = SPDeveloperDashboardLevel.Off;
- contentService.DeveloperDashboardSettings.Unprovision();
- }
No final seu projeto deve ficar parecido com o da figura abaixo:
Figura 6 – Projeto Final da Feature DeveloperDashboard
Compile e faça o deploy diretamente pelo Visual Studio 2010 em ambientes de desenvolvimento. Para ambientes de produção faça o deploy via STSADM conforme figura abaixo:
Figura 7 – Deploy da feature em Produção
No final nossa feature deve estar habilitada conforme a seguinte figura:
Figura 8 – Deploy da Feature Developer Dashboard
Faça o download da solução aqui.
STSADM
Abra o command e digite o seguinte trecho para habilitar o Developer Dashboard:
stsadm –o setproperty –pn developer-dashboard –pv OnDemand
Para desabilitar:
stsadm –o setproperty –pn developer-dashboard –pv Off
OBS: A opção –pv é case-sensitive.
Resultado:
Figura 9 – Execução dos comandos via STSADM
PowerShell
Uma outra possibilidade que temos é a utilização do PowerShell para a execução de scripts.
Para habilitar o Developer Dashboard:
$dash = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$settings = $dash.DeveloperDashboardSettings
$settings.DisplayLevel = [Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::OnDemand
$settings.Update()
Resultado:
Figura 10 – Execução de script de ativação via PowerShell
Para desabilitar:
$dash = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$settings = $dash.DeveloperDashboardSettings
$settings.DisplayLevel = [Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::Off
$settings.Update()
Resultado:
Figura 11 – Execução de script de desativação via PowerShell
Medindo performance e adicionando mensagens via Tracing
Uma vez que o Dashboard está ativo, podemos prosseguir com a adição de mensagens no Tracing do SharePoint 2010.
Conforme já dito essa é uma excelente maneira de você medir a performance de seu código e adicionar mensagens customizadas para monitoramento.
Para medirmos o tempo do trecho de código que temos a intenção de monitorar, devemos utilizar a classe SPMonitoredScope. Essa informação será disponibilizada no lado esquerdo do Dashboard.
Para adicionarmos mensagens de log, warnings ou assert messages utilizaremos a classe SPCriticalTraceCounter. Essa informação será disponibilizada no lado direito do Dashboard, e um link estará a disposição para visualizarmos os detalhes da mensagem.
OBS: O Callstack que se encontra nos detalhes da mensagem pode adicionar alguns Kb na página. Portanto fique atento ao crescimento da quantidade de mensagens customizadas que você tiver, elas vão aumentar o tamanho (Kb) de sua página caso o Dashboard esteja ativado.
Adicione um novo projeto do tipo Visual Web Part chamado Tracing. A solução deve ficar parecida com a figura abaixo:
Figura 12 - Projeto da Web Part de Tracing
No arquivo TracingWebPartUserControl.ascx.cs adicione o código abaixo:
Code Snippet
- using System;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using Microsoft.SharePoint.Utilities;
-
- namespace Tracing.TracingWebPart
- {
- public partial class TracingWebPartUserControl : UserControl
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- // Using class for tracking the execution time
- using (SPMonitoredScope sc = new SPMonitoredScope("LoadMeter"))
- {
- for (uint i = 0; i < 10; i++)
- {
- // Adding custom messages
- SPCriticalTraceCounter.AddDataToScope(i, "Loop For", 15, string.Format("Mensagem monitorada - {0}", i.ToString()));
- }
- }
- }
- }
- }
Classe TracingWebPartUserControl
Esse código contém as duas classes SPMonitoredScope e SPCriticalTraceCounter conforme já comentamos. Vale ressaltar que o traceLevel (3º parâmetro do método AddDataToScope) pode ser:
- 1 – Critical
- 4 - Exception (Watson)
- 6 – Assert
- 8 – Warning
- 10 – Unexpected
- 15 - Monitorable
Realize a adição da Web Part (1), salve (2) e logo após visualize o Dashboard (3) conforme figura abaixo:
Figura 13 – Adição da Web Part de Tracing
Veja o Dashboard, seu enquadramento não está mais da cor verde conforme Figura 1. Temos a cor vermelha que mostra que temos asserts e eventos críticos ocorrendo (no nosso caso as mensagens criadas):
Figura 14 – Dashboard com Time Scope e Mensagens adicionadas
Clique sobre uma das mensagens e observe que podemos ver os detalhes do Callstack e da mensagem:
Figura 15 – Mensagem customizada exibida nos detalhes
Faça o download da solução aqui.
Visualização do Dashboard com gráfico
Podemos incrementar o Dashboard com um gráfico de visualização chamado Developer Dashboard Visualizer criado por Jaap Vossers que consiste em um UserControl que faz utilização do JQuery para exibição dos eixos eventos x tempos de execução (lado esquerdo do Dashboard).
Esse projeto está disponível no Codeplex pelo link: http://devdashvis.codeplex.com/
Baixe o pacote wsp e instale-o utilizando o STSADM, conforme a figura abaixo:
Figura 16 – Ativando o Developer Dashboard Visualizer
Os http handler events são exibidos imediatamente acima do dashboard:
Figura 17 – Visualização Gráfica
Nesse artigo vimos como habilitar o Developer Dashboard do SharePoint 2010. Vimos que informações de diagnóstico e mensagens de tracing são exibidas no output da página ao browser que fez o request. Tais informações podem ajudar na clarificação de erros ou resultados indesejados durante o processamento de sua solução no SharePoint 2010.
Espero que essas dicas sejam úteis.
Referências para a criação desse post:
http://blogs.msdn.com/pandrew/archive/2010/03/26/sharepoint-2010-developer-dashboard-for-debugging-code.aspx
http://weblogs.asp.net/jcortez/archive/2010/03/16/developer-dashboard-in-sharepoint-2010.aspx
http://devdashvis.codeplex.com/
[]’s
Marcel Medina
Clique aqui para ler o mesmo conteúdo em Inglês.