terça-feira, 7 de outubro de 2008

Mini-tutorial SharePoint Smart Part

Aqueles que já desenvolveram Web Parts para o Microsoft Office SharePoint Services puderam notar que a Microsoft não facilitou em nada esta tarefa para o Desenvolvedor. A criação de uma Web Part é muito parecida com a criação de um Server Control: isso significa que todo o HTML que a Web Part irá exibir no browser deve ser gerado no código (VB.Net ou C#). Para Web Parts complexas, com formulários, validações, AJAX e etc. ,isso pode acabar com a produtividade no desenvolvimento.

Para contornar essa dificuldade, existe um projeto Open-Source chamado Smart Part. Nesse projeto, foi criada uma Web Part que nada mais faz do que injetar um User Control dentro de si mesma, ou seja: nos dá a opção de criar Web Parts como User Controls (ascx). Isso ajuda muito a produtividade e torna bem mais simples o desenvolvimento de novas funcionalidades para o Sharepoint.

A seguir, mostrarei como criar uma Smart Part simples:

  1. Baixe e descompacte o Smart Part neste link: http://www.codeplex.com/smartpart/Release/ProjectReleases.aspx?ReleaseId=10697
  2. Crie um novo projeto Web Application no Visual Studio e adicione uma referência para o assembly ReturnOfSmartPart.dll.
  3. Crie um User Control (ascx) da mesma forma como você faria num projeto de Web Site comum.
  4. Instale o Smart Part no servidor onde está o SharePoint. Se houver mais de uma Aplicação do Sharepoint instalada, você poderá escolher em quais deseja instalar.
  5. Abra o diretório do Sharepoint para o qual o IIS aponta, por exemplo: “C:\Inetpub\wwwroot\wss\VirtualDirectories\[NumeroDaPorta]”. Onde [NumeroDaPorta] é o número da porta que a Aplicação Sharepoint está configurada (80, por exemplo).
    1. Jogue as DLLs que seu projeto gerou na pasta Bin.
    2. Crie uma pasta chamada User Controls na raiz e copie o ascx para ela.
  6. Abra uma página no Sharepoint e adicione a Web Part Smart Part nela.
  7. Clique no menu da Web Part (seta no canto superior-direito da Web Part), e clique em “Modify Shared Web Part”.
  8. No Tool Part que apareceu à direita, deve existir um campo chamado “User Control to Display”, ele exibe todos os User Controls encontrados na pasta UserControls da raiz da pasta do Sharepoint, selecione o seu ascx.

Pronto! Muito mais simples do que desenvolver uma Web Part, com a vantagem de poder utilizar o designer do Visual Studio para criar o XHTML do ascx.

Referência:
Site do projeto: http://www.codeplex.com/smartpart

4 comentários:

Brunno Cardoso disse...

Olá Henrique muito bom o seu post, realmente agilizou muito o desenvolvimento para qualquer coisa no SharePoint.

Só tive dificuldades para trabalhar com User Control que acesso o banco de dados, quando eu publico a WebPart do tipo SmartPart que na verdade é o meu User Control no site do sharepoint, ele exibe normal mas quando acontece a ação de ir fazer a busca no banco dá erro! Vc já passou por isso ??

Grato!

Abraços,
Brunno

Henrique Avila disse...

Brunno, nunca tive problemas em conectar as Smart Parts com o banco de dados não.

Para vc descobrir qual o problema, tem duas opções:
1- Desabilita os custom errors do SharePoint. Dessa forma ele vai exibir a página de erro do ASP.NET, com os detalhes do erro. Para fazer isso, basta modificar no web.config a tag customErrors para: <customErrors Mode="Off" />. Mas só faça isso no seu ambiente de desenvolvimento!!

2- Debugar com o Visual Studio. Vc pode instalar o Remote Debugger do Visual Studio na máquina que está o SharePoint, então vc pode debugar no VS da sua máquina dando um Attach to Proccess e selecionando a máquina que está o SharePoint. O processo sob o qual o SharePoint roda é o do IIS: w3wp.exe
Vc encontra o instalador do Remote Debugger no cd do Visual Studio.

Espero que isso ajude.
Abrasssss!
Henrique

Brunno Cardoso disse...

Olá Henrique, muito obrigado pela dica!

Conseguimos habilitar o debug e estamos visualizando o erro, bem melhor doque aquela página de erro do SharePoint ..rs..rs

Aproveitando estamos tendo o mesmo problema desde ontem a hora que nos ajudou a habilitar o debug! Coloco um ascx no sharepoint que fiz no VS2008 e esse ascx se conecta em um SQLServer.
É um SmartPart simples, vc digita um nome e depois que aperta o botão "Pesquisar" o ascx vai até uma tabela e verifica todos os registros com aquele nome e lista em um grid que fica abaixo do botão pesquisa!
Aqui na máquina que fiz ( no VS2008 ) funciona normal, mas depois que coloco ele no SharePoint, ele aparece certinho o campo nome, o botão, coloco um nome qualquer, mas depois que clico no botão pesquisar aparece um erro "The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
".

Já pesquisamos na net, tentei dar permissão dentro do SQLServer, mas nada resolve!

Se vc tiver um dia agradeço!

Obrigado, abraços!
Brunno Cardoso

Henrique Avila disse...

Brunno, esse erro acontece por causa da política de segurança que está configurada na sua aplicação. Por default, o SharePoint usa a política "wss_Minimal".

Se vc desenvolveu seu ascx em uma Web Application (que é o estilo igual do .NET 1.1 onde vc compila o site e gera um assembly para ele), vc pode criar um Strong Name pro assembly da sua Web Application (veja como aqui: http://weblogs.asp.net/hosamkamel/archive/2007/09/07/quickly-sign-your-assembly-with-strong-name-using-vs-2005.aspx) e adicionar uma tag <safeControl> com as informações da sua dll no web.config do SharePoint que irá funcionar. Isso não é possível se vc está usando Web Site (quando vc coloca os .vb no servidor e ele mesmo compila).

Outra solução seria mudar a política de segurança, para mudar ela, vc deve alerar a tag <trust> para <trust level="Full" originUrl="" /> no web.config do SharePoint.

A primeira opção é mais recomendada, pois manterá sua aplicação mais segura, pois apenas assemblies devidamente configurados no web.config poderão ser executados...

Abrasssss!