Study Guide for 70-573 Microsoft SharePoint 2010: Application Development

17/01/2011 1 comentário

Olá pessoal!

Hoje realizei a prova 70-573 e estou aqui para disponibilizar o material de estudo que utilizei. Todo o material usado é free. Grande parte do conteúdo é do próprio MSDN e está organizado segundo os objetivos e assuntos da prova.

Os assuntos que, em minha opinião, se destacam são:

  • Empacotamento de soluções usando .wsp;
  • Features: criação, feature.xml e upgrade de features já existentes;
  • Sandbox solutions. Quais são as restrições, como realizar debug nas soluções;
  • Disposing objects (Muito importante);
  • RunWithElevatedPrivileges e impersonalização com SPUserToken;
  • Client Object Model (muuuuito importante! Não só no ECMAScript…);
  • Novos recursos de UI: Ribbon, Notification, Status, Dialog Framework;
  • Workflow e custom actions;
  • Manipulação de SPSite, SPWeb, SPList, SPFolder e SPFile.

Se tiverem alguma dúvida em seus estudos podem postar comentários.

Espero que gostem!

Guia de Estudos – Versão One Note 2010

Guia de Estudos – Versão PDF

SharePoint Schema Reference

Você já precisou criar um Schema.xml, Feature.Xml ou Elements.Xml no SharePoint? E ficou em dúvida em algum dos Schemas? Se a resposta é sim, trago aqui uma dica! Existe um site de referência com os Schemas que são utilizados no SharePoint 2010.

Se você nunca precisou disso, legal! You’re the man!!! J

Eu já precisei váááárias vezes!!

Link: http://msdn.microsoft.com/en-us/library/ee539685.aspx

 

Grande abraços!

Até a Próxima!

Categorias:SharePoint

Test-driven Development

Olá Pessoal,

Essa semana ministrei uma palestra sobre o tema “Desenvolvimento Orientado a Testes”. Disponibilizei o PPT que utilizei. Em breve trabalharei para disponibilizar as demonstrações.

Espero que gostem! Fiquem a vontade para comentar

Categorias:Desenvolvimento Tags:,

Novidades do C# 4.0 – Parte 1 – Optional Parameters

Começarei por uma funcionalidade das mais simples que foi implementada ao C# 4.0. Trata-se dos parâmetros opcionais.

Na minha visão essa é uma funcionalidade que não precisaria ser acrescentada ao C# 4.0. Pois é uma brecha aos desenvolvedores VB para criticarem o C#!! Mas vamos lá…

Até a versão 3.0, se quisermos tornar o parâmetro de um método opcional devemos criar um overload desse método, como no seguinte trecho:

1:      void EscreveDados(string nome, string sobrenome, string endereco)
2:      {
3:        Console.WriteLine("Nome: {0} {1}", nome, sobrenome);
4:        Console.WriteLine("Endereço: {0}", endereco);
5:        Console.WriteLine("---");
6:      }
  
7:      void EscreveDados(string nome, string sobrenome)
8:      {
9:        EscreveDados(nome, sobrenome, string.Empty);
10:     }  

Na versão 4.0, ganhamos a funcionalidade de declarar os paramêtros como opcionais, veja:

     static void EscreveDados(string nome, string sobrenome = "", string endereco = "")
     {
       Console.WriteLine("Nome: {0} {1}", nome, sobrenome);
       Console.WriteLine("Endereço: {0}", endereco);
       Console.WriteLine("---");
     }
  

Por conta da declaração as chamadas ao método podem ser feitas assim:

       EscreveDados("Jorge", "Tressino", "Rua ABC");
       EscreveDados("Jorge", "Tressino");
       EscreveDados("Jorge", endereco: "Rua ABC");  

Esse foi fácil. Espero que tenham gostado!

Em meu próximo post tratarei de covariance e contravariance! Não percam…

 

Abraços,

JR

Categorias:Uncategorized

Patterns MVC, MVP e PCA

Olá pessoas!

Para quem está estudando design patterns, encontrei um artigo fantástico e já considero um dos melhores que falam sobre MVC, MVP e PCA. Muito detalhado, com o contexto histórico do surgimento dos padrões e referências bibliográficas.

O que me impressiona ao ler um artigo como este é ver o perfil de quem escreve. Derek Greer é software developer!! É muito legal ver um desenvolvedor com todo esse embasamento teórico. Show! Parabéns Greer!!! J

http://www.ctrl-shift-b.com/2007/08/interactive-application-architecture.html

Até a próxima!

Categorias:Design Patterns Tags:,

LINQ to Sharepoint

26/03/2009 1 comentário

Depois de um longo tempo, estou de volta!!! Recentemente, um amigo queria algo de Sharepoint em meu blog, aí vai!

O objetivo é executar uma consulta a uma lista do SharePoint através de WebService com LINQ! Em primeiro lugar é preciso instalar o LinqToSharepoint, produto que ainda não vem integrado ao Visual Studio, e está disponível no CodePlex. Ah! Ainda está em versão Alpha! J

Começe fazendo o download no codeplex em: http://www.codeplex.com/LINQtoSharePoint . Em seguida, instale e siga as instruções de registro no gac conforme a documentação do codeplex. Agora começa a brincadeira!~

Em um prompt de comando, navegue até o diretório %program files%\BdsSoft LINQ to SharePoint. Lá existe um executável chamado SP Metal. Este utilitário é responsável por ler as definições de uma ou mais listas do sharepoint e gerar uma classe com as propriedades mapeadas. Para utilizá-lo digite, por exemplo:

spmetal -url:[url do sharepoint] -list:[nome da lista]

Ao termino da execução uma classe é gerada. Para utilizá-la crie um projeto no Visual Studio 2008. Atente-se para que o projeto esteja em um framework 3.5. Inclua a classe criada pelo SPMetal e as referências às dll’s Microsoft.Sharepoint.dll e BdsSoft.SharPoint.Linq.dll.


static
void Main(string[] args)

{


SharePointDataContext dc = new
SharePointDataContext(new
Uri(url do sharpoint));

 


var projetos = new
SharePointList<Projetos>(dc);


var res = from p in projetos


where p.Status == Status.Finalizado


select p;

 


Array.ForEach(res.ToArray(), x => Console.WriteLine(x.CriadoEm) );

 


Console.ReadLine();

 

}

Primeiro cria-se um contexto para acesso aos dados através da classe SharepointDataContext. Em seguida, declara-se a lista do SharePoint que será utilizada para realizar a consulta com a classe SharPointList. O tipo genérico utilizado é a classe que foi criada pelo utilitário SPMetal. Nesse exemplo a classe Projetos (referente a lista de projetos). Por fim, basta escrever a query LINQ para acessar os dados da lista.

Se quiser saber o CAML gerado basta acrescentar o seguinte código:

dc.Log = Console.Out;

 

Acredito que ficou um pouco mais simples consumir o WebService do SharePoint, não acham?

Categorias:SharePoint Tags:

SQL Server: Application Role

22/10/2008 1 comentário

Uma funcionalidade muito interessante foi adicionada ao SQL Server 2005 e mantida, obviamente, no SQL Server 2008. Para facilitar o gerenciamento das permissões no banco de dados utilizamos um recurso chamado ROLE. Um database ROLE é um objeto criado no banco de dados no qual é possível dar ou negar permissões de acesso dos outros objetos.

Vamos a um exemplo: você tem um perfil de usuários na empresa que só pode manipular informações referentes ao sistema de Recursos Humanos. Para facilitar o gerenciamento das permissões você cria uma ROLE chamada RL_RH e define todas as permissões de acesso a ela.

CREATE ROLE RL_RH AUTHORIZATION dbo; –CRIA A ROLE

GRANT SELECT TO RL_RH; –PERMITE SELECT EM TODOS OS OBJETOS

Imagine que um novo usuário deve ser adicionado ao banco de dados e precisa ter os mesmos acessos de todos os outros do RH. Para isso basta criar o usuário e adicioná-lo ao papel já criado. Por exemplo:

CREATE LOGIN US1 WITH PASSWORD=’p@ssw0rd’; –CRIA O LOGIN NO SERVIDOR

CREATE USER US1 FOR LOGIN US1; –CRIA UM USUÁRIO PARA O LOGIN NO BANCO DE DADOS

SP_ADDROLEMEMBER ‘RL_RH’, ‘US1’; –ADICIONA O USUÁRIO COMO MEMBRO DA ROLE

Com isso, o usuário passa a ter todos os direitos da role!

Legal, não é? Mas agora imaginemos que temos alguns usuários mais avançados capazes de criar comandos SQL e executá-los diretamente no banco de dados. Coisa que não deveriam fazer a não ser através de um sistema. Como evitar que isso ocorra? Como saber se o usuário está se conectando através de uma ferramenta tipo o SSMS ou através de um sistema. Para isso, existe um recurso chamado de Application Role!

O funcionamento é semelhante, cria-se um APPLICATION ROLE e se define todas as permissões a ele. Por exemplo:

CREATE APPLICATION ROLE RL_APP_RH WITH PASSWORD = ‘pa$$w0rd’; –CRIA UM APPLICATION ROLE COM SENHA

GRANT SELECT TO RL_APP_RH; –PERMITE SELECT EM TODOS OS OBJETOS

Para os usuários:

CREATE LOGIN US2 WITH PASSWORD=’xpt0′;

CREATE USER US2 FOR LOGIN US2;

No sistema, logo após abrir a conexão com o banco de dados execute:

SP_SETAPPROLE ‘RL_APP_RH’, ‘pa$$w0rd’; –ATIVA O USO DA ROLE MEDIANTE INFORMAR O PASSWORD

Pronto a partir de agora a ROLE está ativada digamos assim. Houve uma troca no contexto de segurança e o usuário passa a ter acesso a tudo que havia sido definido para a ROLE. Se ele conectar-se diretamente no banco de dados não terá acesso a nada.


Exchange 2007 pedindo credenciais para Outlook 2007

Recentemente vinha enfrentando uma situação nada agradável com um ambiente Exchange 2007 que solicitava credenciais ao abrir o Outlook 2007. Esse comportamento se deu após habilitar o Outlook Anywhere. O ambiente possui um único servidor Exchange que realiza os papeis de Client Access, Hub Transport e Mailbox Server sob o Windows Server 2008 Enterprise Edition.

Iniciei então um trabalho de pesquisa no Tecnet e achei alguns artigos que me conduziram a resolução desse problema. Veja alguns:

Services used by a Client Access Server

How to configure Authentication for Outlook Anywhere

Using ISA Server 2006 with Outlook Anywhere

How to Configure Exchange Services for the Autodiscover Service

Deployment Considerations for the Autodiscover Service

Todos estes me ajudaram a entender o processo de auto descobrimento utilizado pelo Outlook 2007 e finalmente o que realmente me ajudou foi esse: “How to Test Outlook 2007 Autodiscover Connectivity“.

Como resultado do teste era obtido o erro “401 – Unauthorized” no acesso ao WebService https://hostname/autodiscover/autodiscover.xml. Isso me intrigou e realizei teste de acesso utilizando https://localhost/autodiscover/autodiscover.xml. Ótimo, o problema está no IIS. Mais pesquisas e chego ao seguinte artigo: “You receive error 401.1 when you browse a Web site that uses Integrated Authentication and is hosted on IIS 5.1 or IIS 6“.

Enfim, a resolução do problema se deu executando o procedimento descrito no artigo acima no método 2:

  1. No editor do registry, encontre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  2. Crie uma chave do tipo Multi-String Value com o nome de BackConnectionHostNames
  3. Edite a chave e insira o valor do hostname do servidor utilizado pelo Outlook Anywhere
  4. Reinicie o IIS Admin Service e o World Wide Web Service

Pronto! O teste do Outlook funcionou e o Exchange parou de solicitar credenciais ao ser aberto!

Espero ter ajudado…

SQL Server – Rollback Transaction em Triggers

O que acontece se executar o comando ROLLBACK TRANSACTION em uma Trigger no SQL Server? A primeira coisa que passa na cabeça é: o que foi iniciado na transação será desfeito! Sim, isso está correto. Mas se pensarmos um pouco mais além: e se após este comando houver outros comandos, eles serão executados? E se estes comandos causarem o disparo de outra trigger, ela será disparada? E os outros comandos que que estão no batch após o comando que originou o disparo da trigger, serão executados?

O comportamento é seguinte:

  • As alterações feitas até a execução do ROLLBACK TRANSACTION são desfeitas;
  • A trigger continua a execução com os demais comandos que houverem após o ROLLBACK, mas nenhuma outra trigger será disparada;
  • Os demais comandos que houverem no batch também não serão executados.

Ou seja, imaginemos o seguinte cenário: em uma trigger é implementada uma regra de negócio. Regra esta que em determinada condição precisa interromper a transação. Mas você gostaria de gravar um trace da execução dessa trigger. Ok! Após o ROLLBACK TRANSACTION é possível executar um comando INSERT para inserir o trace em outra tabela!

Se quiserem saber mais sobre o comando ROLLBACK TRANSACTION acessem o MSDN!

Abraços!

Categorias:SQL Server Tags:,

TS: Windows Internals

A Microsoft publicou hoje uma nova certificação para Windows Vista: 70-660 TS Windows Internals. A certificação testa conhecimentos profundos do núcleo e funcionamento do sistema operacional Windows Vista. Destinado a troubleshooting de aplicativos, monitoramento e gerenciamento dos subsistemas de disco, CPU, memória e rede, e de softwares que funcionam muito próximos ao sistema operacional como SQL Server, antivírus e drivers.

Os temas da prova são:

  • Identifying Architectural Components (16%)
  • Designing Solutions (15%)
  • Monitoring Windows (14%)
  • Analyzing User Mode (18%)
  • Analyzing Kernel Mode (19%)
  • Debugging Windows (18%)

Para maiores informações acesse da prova acesse aqui.

Vamos aproveitar a segunda chance. Gostei!!! J