Rodrigo Romano – MVP SharePoint Server

Registros de um Especialista SharePoint :)

Archive for the ‘SharePoint 2010’ Category

Troubleshooting SharePoint/Office365: Sideloading of apps is not enabled on this site

leave a comment »


Olá SharePointers,
Estava desenvolvendo uma SharePoint Hosted app para o Office 365 e, para minha surpresa, apareceu o erro abaixo.
Esse erro acontecia quando quando tentava fazer o deploy via Visual Studio.

 

Para resolver esse erro, basta rodar o script que está disponível nesse link: http://1drv.ms/1qDs0oy

 

Referência:

http://blogs.msdn.com/b/officeapps/archive/2013/12/10/enable-app-sideloading-in-your-non-developer-site-collection.aspx

Abraços! 😀

Advertisements

Written by Rodrigo Romano

August 2, 2014 at 12:28 pm

SharePoint e Javascript – Amor ou ódio?

leave a comment »


Olá SharePointers,

Javascript e suas bibliotecas assumem um papel cada vez mais relevante na vida de um desenvolvedor moderno. É comum encontrar pessoas que digam que atualmente é uma das “linguagens” mais importantes para um desenvolvedor de SharePoint. Sei que esse ponto é controverso, mas esse é um tema que está cada vez mais presente no nosso dia-a-dia.

Notamos que a Microsoft fez um grande esforço para “mudar” um pouco a nossa cabeça e colocou no SharePoint 2013 o conceito de Apps, que, de uma forma bem simplista, é HTML e JavaScript.

Para quem ainda não está familiarizado, David Mann (SharePoint MVP – EUA) fez um curso muito interessante no Pluralsight: http://pluralsight.com/training/Courses/TableOfContents/developing-sharepoint-2013-javascript.

O SharePoint contém uma quantidade enorme de funções prontas que podem ser reutilizadas para nos ajudar durante o desenvolvimento de alguma solução. Algumas delas não estão documentadas no MSDN.

Para ajudar no desenvolvimento, existem alguns plugins para o Visual Studio. Dentre eles, recomendo esse aqui: http://visualstudiogallery.msdn.microsoft.com/288a2b0f-1357-47b4-8215-1134c36bdf30

Voltando ao código, vou citar algumas funções que podem ajudar bastante no desenvolvimento e não estão documentadas em lugar nenhum:

  • url = SP.Utilities.UrlBuilder.replaceOrAddQueryString(url, key, value): Esse método recebe uma URL e modifica ou inclui um parâmetro na QueryStrig. O Retoro é a URL modificada.
  • url = SP.Utilities.UrlBuilder.removeQueryString(url, key): Esse método remove um parâmetro da query string (e seu valor) de uma URL.
  • url = SP.Utilities.UrlBuilder.urlCombine(url1, url2): Combina duas URLs e garante que não tenha nenhuma “/” redundante.

 

O ideal, antes de sair desenvolvendo, é pensar se o que precisamos fazer não existe no SharePoint. E, se existir, tentar entender como ele realiza tal operação e fazermos do mesmo jeito.

Referências Adicionais

http://msdn.microsoft.com/en-us/library/office/ee549589(v=office.14).aspx

http://chuvash.eu/2012/01/24/parameterize-an-javascript-object-and-create-url/

http://www.wictorwilen.se/Post/Working-with-URLs-in-SharePoint-2010-JavaScripts.aspx

 

Abraços!

Written by Rodrigo Romano

July 11, 2014 at 9:32 am

Troubleshooting: Could not find stored procedure ‘sp_dboption’

leave a comment »


Olá SharePointers,

Hoje estava montando um ambiente para testes de migração e encontrei um problema ao instalar o SharePoint Server 2007 SP2 com SQL Server 2012.

O erro foi: Could not find stored procedure ‘sp_dboption’. Essa stored procedure foi descontinuada no SQL Server 2012 e, para que a instalação funcione, é necessário criá-la novamente, utilizando o código abaixo:

USE [master]
GO
/****** Object: StoredProcedure [sys].[sp_dboption] Script Date: 12/08/2013 21:22:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [sp_dboption] — 1999/08/09 18:25
@dbname sysname = NULL, — database name to change
@optname varchar(35) = NULL, — option name to turn on/off
@optvalue varchar(10) = NULL — true or false
as
set nocount on
declare @dbid int — dbid of the database
declare @catvalue int — number of category option
declare @optcount int — number of options like @optname
declare @allstatopts int — bit map off all options stored in sysdatqabases.status
— that can be set by sp_dboption.
declare @alloptopts int — bit map off all options stored in sysdatqabases.status
— that can be set by sp_dboption.
declare @allcatopts int — bit map off all options stored in sysdatqabases.category
— that can be set by sp_dboption.
declare @exec_stmt nvarchar(max)
declare @fulloptname varchar(35)
declare @alt_optname varchar(50)
declare @alt_optvalue varchar(30)
declare @optnameIn varchar(35)
select @optnameIn = @optname
,@optname = LOWER (@optname collate Latin1_General_CI_AS)
— If no @dbname given, just list the possible dboptions.
— Only certain status bits may be set or cleared by sp_dboption.
— Get bitmap of all options that can be set by sp_dboption.
select @allstatopts=number from master.dbo.spt_values where type = ‘D’
and name = ‘ALL SETTABLE OPTIONS’
select @allcatopts=number from master.dbo.spt_values where type = ‘DC’
and name = ‘ALL SETTABLE OPTIONS’
select @alloptopts=number from master.dbo.spt_values where type = ‘D2’
and name = ‘ALL SETTABLE OPTIONS’
if @dbname is null
begin
select ‘Settable database options:’ = name
from master.dbo.spt_values
where (type = ‘D’
and number & @allstatopts <> 0
and number not in (0,@allstatopts)) — Eliminate non-option entries
or (type = ‘DC’
and number & @allcatopts <> 0
and number not in (0,@allcatopts))
or (type = ‘D2’
and number & @alloptopts <> 0
and number not in (0,@alloptopts))
order by name
return (0)
end
— Verify the database name and get info
select @dbid = dbid
from master.dbo.sysdatabases
where name = @dbname
— If @dbname not found, say so and list the databases.
if @dbid is null
begin
raiserror(15010,-1,-1,@dbname)
print ‘ ‘
select ‘Available databases:’ = name
from master.dbo.sysdatabases
return (1)
end
— If no option was supplied, display current settings.
if @optname is null
begin
select ‘The following options are set:’ = v.name
from master.dbo.spt_values v, master.dbo.sysdatabases d
where d.name=@dbname
and ((number & @allstatopts <> 0
and number not in (-1,@allstatopts)
and v.type = ‘D’
and (v.number & d.status)=v.number)
or (number & @allcatopts <> 0
and number not in (-1,@allcatopts)
and v.type = ‘DC’
and d.category & v.number <> 0)
or (number & @alloptopts <> 0
and number not in (-1,@alloptopts)
and v.type = ‘D2’
and d.status2 & v.number <> 0))
return(0)
end
if @optvalue is not null and lower(@optvalue) not in (‘true’, ‘false’, ‘on’, ‘off’)
begin
raiserror(15241,-1,-1)
return (1)
end
— Use @optname and try to find the right option.
— If there isn’t just one, print appropriate diagnostics and return.
select @optcount = count(*) ,@fulloptname = min(name)
from master.dbo.spt_values
where lower(name collate Latin1_General_CI_AS) like ‘%’ + @optname + ‘%’
and ((type = ‘D’
and number & @allstatopts <> 0
and number not in (-1,@allstatopts))
or (type = ‘DC’
and number & @allcatopts <> 0
and number not in (-1,@allcatopts))
or (type = ‘D2’
and number & @alloptopts <> 0
and number not in (-1,@alloptopts)))
— If no option, show the user what the options are.
if @optcount = 0
begin
raiserror(15011,-1,-1,@optnameIn)
print ‘ ‘
select ‘Settable database options:’ = name
from master.dbo.spt_values
where (type = ‘D’
and number & @allstatopts <> 0
and number not in (-1,@allstatopts)) — Eliminate non-option entries
or (type = ‘DC’
and number & @allcatopts <> 0
and number not in (-1,@allcatopts))
or (type = ‘D2’
and number & @alloptopts <> 0
and number not in (-1,@alloptopts))
order by name
return (1)
end
— If more than one option like @optname, show the duplicates and return.
if @optcount > 1
begin
raiserror(15242,-1,-1,@optnameIn)
print ‘ ‘
select duplicate_options = name
from master.dbo.spt_values
where lower(name collate Latin1_General_CI_AS) like ‘%’ + @optname + ‘%’
and ((type = ‘D’
and number & @allstatopts <> 0
and number not in (-1,@allstatopts))
or (type = ‘DC’
and number & @allcatopts <> 0
and number not in (-1,@allcatopts))
or (type = ‘D2’
and number & @alloptopts <> 0
and number not in (-1,@alloptopts))
)
return (1)
end
— Just want to see current setting of specified option.
if @optvalue is null
begin
select OptionName = v.name,
CurrentSetting = (case
when ( ((v.number & d.status) = v.number
and v.type = ‘D’)
or (d.category & v.number <> 0
and v.type = ‘DC’)
or (d.status2 & v.number <> 0
and v.type = ‘D2’)
)
then ‘ON’
when not
( ((v.number & d.status) = v.number
and v.type = ‘D’)
or (d.category & v.number <> 0
and v.type = ‘DC’)
or (d.status2 & v.number <> 0
and v.type = ‘D2’)
)
then ‘OFF’
end)
from master.dbo.spt_values v, master.dbo.sysdatabases d
where d.name=@dbname
and ((v.number & @allstatopts <> 0
and v.number not in (-1,@allstatopts) — Eliminate non-option entries
and v.type = ‘D’)
or (v.number & @allcatopts <> 0
and v.number not in (-1,@allcatopts) — Eliminate non-option entries
and v.type = ‘DC’)
or (v.number & @alloptopts <> 0
and v.number not in (-1,@alloptopts) — Eliminate non-option entries
and v.type = ‘D2’)
)
and lower(v.name) = lower(@fulloptname)
return (0)
end
select @catvalue = 0
select @catvalue = number
from master.dbo.spt_values
where lower(name) = lower(@fulloptname)
and type = ‘DC’
— if setting replication option, call sp_replicationdboption directly
if (@catvalue <> 0)
begin
select @alt_optvalue = (case lower(@optvalue)
when ‘true’ then ‘true’
when ‘on’ then ‘true’
else ‘false’
end)
select @alt_optname = (case @catvalue
when 1 then ‘publish’
when 2 then ‘subscribe’
when 4 then ‘merge publish’
else quotename(@fulloptname, ””)
end)
select @exec_stmt = quotename(@dbname, ‘[‘) + ‘.dbo.sp_replicationdboption’
EXEC @exec_stmt @dbname, @alt_optname, @alt_optvalue
return (0)
end
— call Alter Database to set options
— set option value in alter database
select @alt_optvalue = (case lower(@optvalue)
when ‘true’ then ‘ON’
when ‘on’ then ‘ON’
else ‘OFF’
end)
— set option name in alter database
select @fulloptname = lower(@fulloptname)
select @alt_optname = (case @fulloptname
when ‘auto create statistics’ then ‘AUTO_CREATE_STATISTICS’
when ‘auto update statistics’ then ‘AUTO_UPDATE_STATISTICS’
when ‘autoclose’ then ‘AUTO_CLOSE’
when ‘autoshrink’ then ‘AUTO_SHRINK’
when ‘ansi padding’ then ‘ANSI_PADDING’
when ‘arithabort’ then ‘ARITHABORT’
when ‘numeric roundabort’ then ‘NUMERIC_ROUNDABORT’
when ‘ansi null default’ then ‘ANSI_NULL_DEFAULT’
when ‘ansi nulls’ then ‘ANSI_NULLS’
when ‘ansi warnings’ then ‘ANSI_WARNINGS’
when ‘concat null yields null’ then ‘CONCAT_NULL_YIELDS_NULL’
when ‘cursor close on commit’ then ‘CURSOR_CLOSE_ON_COMMIT’
when ‘torn page detection’ then ‘TORN_PAGE_DETECTION’
when ‘quoted identifier’ then ‘QUOTED_IDENTIFIER’
when ‘recursive triggers’ then ‘RECURSIVE_TRIGGERS’
when ‘default to local cursor’ then ‘CURSOR_DEFAULT’
when ‘offline’ then (case @alt_optvalue when ‘ON’ then ‘OFFLINE’ else ‘ONLINE’ end)
when ‘read only’ then (case @alt_optvalue when ‘ON’ then ‘READ_ONLY’ else ‘READ_WRITE’ end)
when ‘dbo use only’ then (case @alt_optvalue when ‘ON’ then ‘RESTRICTED_USER’ else ‘MULTI_USER’ end)
when ‘single user’ then (case @alt_optvalue when ‘ON’ then ‘SINGLE_USER’ else ‘MULTI_USER’ end)
when ‘select into/bulkcopy’ then ‘RECOVERY’
when ‘trunc. log on chkpt.’ then ‘RECOVERY’
when ‘db chaining’ then ‘DB_CHAINING’
else @alt_optname
end)
if @fulloptname = ‘dbo use only’
begin
if @alt_optvalue = ‘ON’
begin
if databaseproperty(@dbname, ‘IsSingleUser’) = 1
begin
raiserror(5066,-1,-1);
return (1)
end
end
else
begin
if databaseproperty(@dbname, ‘IsDBOOnly’) = 0
return (0)
end
end
if @fulloptname = ‘single user’
begin
if @alt_optvalue = ‘ON’
begin
if databaseproperty(@dbname, ‘ISDBOOnly’) = 1
begin
raiserror(5066,-1,-1);
return (1)
end
end
else
begin
if databaseproperty(@dbname, ‘IsSingleUser’) = 0
return (0)
end
end
select @alt_optvalue = (case @fulloptname
when ‘default to local cursor’ then (case @alt_optvalue when ‘ON’ then ‘LOCAL’ else ‘GLOBAL’ end)
when ‘offline’ then ”
when ‘read only’ then ”
when ‘dbo use only’ then ”
when ‘single user’ then ”
else @alt_optvalue
end)
if lower(@fulloptname) = ‘select into/bulkcopy’
begin
if @alt_optvalue = ‘ON’
begin
if databaseproperty(@dbname, ‘IsTrunclog’) = 1
select @alt_optvalue = ‘RECMODEL_70BACKCOMP’
else
select @alt_optvalue = ‘BULK_LOGGED’
end
else
begin
if databaseproperty(@dbname, ‘IsTrunclog’) = 1
select @alt_optvalue = ‘SIMPLE’
else
select @alt_optvalue = ‘FULL’
end
end
if lower(@fulloptname) = ‘trunc. log on chkpt.’
begin
if @alt_optvalue = ‘ON’
begin
if databaseproperty(@dbname, ‘IsBulkCopy’) = 1
select @alt_optvalue = ‘RECMODEL_70BACKCOMP’
else
select @alt_optvalue = ‘SIMPLE’
end
else
begin
if databaseproperty(@dbname, ‘IsBulkCopy’) = 1
select @alt_optvalue = ‘BULK_LOGGED’
else
select @alt_optvalue = ‘FULL’
end
end
— construct the ALTER DATABASE command string
select @exec_stmt = ‘ALTER DATABASE ‘ + quotename(@dbname) + ‘ SET ‘ + @alt_optname + ‘ ‘ + @alt_optvalue + ‘ WITH NO_WAIT’
EXEC (@exec_stmt)
if @@error <> 0
begin
raiserror(15627,-1,-1)
return (1)
end
return (0) — sp_dboption

 

Abraços! 😀

Written by Rodrigo Romano

July 3, 2014 at 10:35 am

SharePoint: SQL Server MAXDOP = 1 – é realmente necessário?

with 2 comments


Olá SharePointers,

Hoje vou falar um pouco do MAXDOP (já ouviram falar?). MAXDOP é a propriedade no SQL Server que define o grau máximo de paralelismo (aka: Max Degree Of Parallelism) para as queries do SQL.

A microsoft recomenda que, para instâncias do SQL dedicadas ao SharePoint, esse valor seja fixado com 1 para uma performance otimizada (Storage and SQL Server capacity planning and configuration (SharePoint Server 2010)). Muito embora, até a versão 2010 do SharePoint encontramos várias instalações com configurações diferentes desse valor, isso não era um “blocker”. Na versão 2013 do SharePoint, isso passou a ser um blocker de instalação. Veja abaixo:

New-SPConfigurationDatabase : This SQL Server instance does not have the required "max degree of parallelism" setting of 1. Database provisioning operations will continue to fail if "max degree of parallelism" is not set 1 or the current account does not have permissions to change the setting. See documentation for details on manually changing the setting

3225_MAXDOP_0_png-550x0

Ainda de acordo com a Microsoft, o MAXDOP serve para mostrar para o SQL como aplicar o paralelismo, ou seja, se o MAXDOP estiver setado em 0 (valor default) o SQL detecta o melhor grau de paralelismo de acordo com a quantidade de CPUs disponíveis.

Se estiver setado em 1, os “parallels plans” são desabilitados por default.

Qualquer valor diferente disso serve para definir um grau específico.

 

Mas então o SharePoint não utiliza paralelismo? Certo?

ERRADO! Por questões de performance a melhor opção de performance é desabilitar esse recurso, mas, quando o SharePoint precisa, ele define Hints de paralelismo direto nas stored procedures (mais de 150 SP’s !!).

 

Para mais informações sobre o assunto, acessem os links abaixo:

 

Written by Rodrigo Romano

July 2, 2014 at 8:54 am

Como criar uma “Metadata Property” no Search e utilizá-la nas buscas

leave a comment »


 

Olá SharePointers,

 

Hoje vou mostrar como criar uma “Metadata Property” e permitir que ela seja utilizadas nas buscas sem precisar especificar a propriedade completa, exemplo: Aniversario=01/01/2000

 

Abrir a Central Administration e clicar em Manage Service Applications.

image

Escolher o Service Application correspondente ao Search.

image

No lado esquerdo, clique em Metadata Properties (dentro da guia Queries and Results).

image

Clique em New Managed Property.

image

Preencha as informações referentes a propriedade (Property Name, Description e Type). Clique no botão Add Mapping e escolha a propriedade referente a esse item. Clique em OK.

image 

Na guia Crawling, clique em Content Sources.

image

Escolha o Content Source que indexa o site em questão e clique em Start full crawl e aguarde o processo concluir.

image

No lado esquerdo, clique em Metadata Properties (dentro da guia Queries and Results).

image

Clique em Crawled Properties.

image

Escolha a propriedade criada nos passos anteriores e clique em Edit/Map Property.

image

Clique em Add Mapping e adicione ContentsHidden (Text). Marque o checkbox Include values for this property in the search index e clique em OK. (Essa etapa que fará com que a propriedade seja disponível das queries sem precisar especificar o nome dela)

image

 

Após a execução do último passo aguarde alguns segundos ou faça o crawl novamente.

 

Abraços 😀

Written by Rodrigo Romano

June 23, 2014 at 10:56 am

Object cache: The super user account utilized by the cache is not configured.

leave a comment »


Olá SharePointers,

 

Hoje a dica é para resolver um problema muito comum (aliás, geralmente é uma falta de configuração): object cache não configurado;

 

Como identificar?

No event viewer do servidor, aparecerá a mensagem abaixo:

Object Cache: The super user account utilized by the cache is not configured. This can increase the number of cache misses, which causes the page requests to consume unneccesary system resources.
To configure the account use the following command ‘stsadm -o setproperty -propertyname portalsuperuseraccount -propertyvalue account -url webappurl’. The account should be any account that has Full Control access to the SharePoint databases but is not an application pool account.
Additional Data:
Current default super user account: SHAREPOINT\system

Para resolver isso, utilizem os passos desse artigo: http://technet.microsoft.com/en-us/library/ff758656(v=office.14).aspx

 

Obs: Para as web applications que estão utilizando claims, utilizem o login no formato CLAIMS (i:0#.w|domain\user).

Abraços! 😀

Written by Rodrigo Romano

May 28, 2014 at 12:02 pm

Entrevista com Andrew Connell

leave a comment »


Olá SharePointers,

Quero começar esse post agradecendo o tempo e dedicação do Andrew por responder tão rapidamente. Andrew, um MUITO OBRIGADO da comunidade de SharePoint Brasileira, que te admira muito!

Após os agradecimentos, vamos ao que interessa (postarei as perguntas e respostas em inglês) e logo mais farei um update traduzindo.

1- SharePoint Farm Solutions x Apps – What are yours thoughts about it? 
SharePoint Farm Solutions x Apps – Quais são suas considerações sobre isso?

 

Oh boy, I could go on forever on this one, but I’ll keep it brief. Microsoft is moving in the right direction with the app model… people need to get their code out of SharePoint and instead using client-side solutions using JavaScript or using another external thing like Azure, IIS, AWS, etc. It’s better for SharePoint, and frankly it gives us more options. I get into the business of saying are solutions better than apps… I just leave it at using the best thing for your business problem. I do try to build things as apps first, but when I can’t because there are simply some things you can’t do with apps that I can do with solutions, I’ll fall back to sandboxed solutions. Then worst case, I fall back to farm solutions, but that is rare these days. If I get that far, we re-evaluate what we are trying to achieve & see if there’s a better option than farm solutions.

 

Nossa, eu poderia ficar nessa por muito tempo… Mas serei breve. Microsoft está andando na direção certa com o modelo de APP… As pessoas precisam tirar seus códigos do SharePoint e utilizar soluções Client-Side usando JavaScript ou alguma outra coisa externa, como: Azure, IIS, AWS, etc. É melhor para o SharePoint e, francamente, nos dá mais opções. Eu tento construir as coisas com APPs primeiro, quando não consigo, pois são coisas que não são possíveis ser feitas com Apps, eu vou para Sandboxed Solutions. No pior cenário, eu utilizo farm solutions, mas isso é raro hoje em dia. Se chego nesse ponto, reavalio o que estamos tentando fazer e verifico se tem uma opção melhor do que Farm Solutions.
 
2- The Office team announced that the Infopath is dead and You’ve predicted that on yours New Year’s predictions. What can you say about it? I’ve heard a lot of great news in SPC 2014 about it. What should we expect? I’m saying that because InfoPath was a controversial tool.

 

O time do Office fez o anúncio que o Infopath está morto e você já tinha predito isso. O que você pode dizer sobre isso? Ouvi vários comentários interessantes no SharePoint Conference 2014 sobre isso. O que devemos esperar? – Falei isso porquê InfoPath é uma ferramenta controversa.
So it’s a little hard to answer this as I’m close to the product group and had lost of discussions I can’t really share related to their goals, focus, and plans going forward. All I’ll say on the future for forms for the Office 365 + SharePoint platform is I’m optimistic… I like where they are going.
 
As for InfoPath, I see it as a dead product. I’ve blogged about my feelings quite a bit in the past (link here)  (link here) and covered it in my podcast (link here). If you are a customer that has heavy investments in InfoPath or you’ve already progressed quite far with a project that leverages InfoPath, then I wouldn’t change. However if you are starting a new project or evaluating, even though it is supported for the next 10 years, I would stay away from InfoPath. This bodes the question “what would you use then?” I’d first look to using a web developer to build them out. If you want more end-user form-building independence, I’d recommend looking to Nintex Forms product.
É meio complicado responder essa pergunta pois estou muito perto do time de produto e tem muitas coisas que não posso compartilhar: seus objetivos, foco e planos em andamento. Tudo o que posso dizer é que estou bem otimista com o futuro dos forms para Office 365 e SharePoint… Gosto do caminho que estão trilhando.

 

Para o InfoPath, vejo um produto morto. Postei um pouco sobre isso no passado e até fiz isso no podcast. Se você é um cliente que investiu pesado no InfoPath ou já teve um progresso considerável no projeto, não mudaria de tecnologia. Entretanto, se está começando um novo projeto ou avaliando, mesmo sendo suportado nos próximos 10 anos, eu fugiria do InfoPath. Como alternativa, primeiro utilizaria web development. Se for necessário mais independência para o usuário final, recomendo o Nintex Forms.
3- BTW, SharePoint vNext was announced to the next fiscal year. What do you think that we should expect? Considering that Microsoft’s new CEO was head of SharePoint Product Team and said that Microsoft should look again to “On-Prem” users.

 

Por falar nisso, a próxima versão do SharePoint foi anunciada para o próximo ano fiscal. O que devemos esperar? Considerando que o novo CEO da Microsoft era o gerente do time de Produto de SharePoint e disse que a Microsoft deveria olhar com mais atenção para as instalações “On-Prem”.
 
I think it’s really too early to say what we’ll see in the next on-prem version, but with this new “cloud first” mentality we’re going to see a preview over time rather than leaks. Because Microsoft is building new features into SharePoint for the Office 365 implementation first, we  can watch what gets added to the Office 365 version over time and assume that many, most and ideally all of these features will get added to the on-prem version. Further I think we will see additional changes & improvements to the on-prem version that either make hybrid deployments easier or take advantage of consuming more Office 365 services on-prem.
4- A lot of professionals like you are “migrating” or using combined technologies (you’ve announced a product using Azure). On Joel Oleson’s predictions, he said that SharePoint Consultants *must* learn something new.
Is that a prediction of SharePoint death or adoption reduction?

 

Vários profissionais, como você, estão “migrando” de tecnologia ou combinando-as. Nas previsões do Joel Oleson, ele disse que os consultores de SharePoint *deveriam* aprender algo novo. Isso é uma previsão da morte ou redução de adoção do SharePoint?

 

Neither! Traditionally SharePoint consultants have been able to operate with blinders on so to speak. They have been able to focus just on SharePoint. But in today’s more connected world that favors mashing together multiple services rather than monolithic enterprise platforms that do everything. As such, yes SharePoint consultants cannot be nearly as effective by just focusing on SharePoint, rather they need to understand other opportunities. Take developers for instance… you simply can’t be effective today without also knowing Azure development, leveraging Azure services and client side development. Over the last 12-18 months, I’ve seen 90% of my work with clients focus more in JavaScript & client-side solutions to business problems than traditional solutions. Personally I found Joel’s “prediction” amusing as the writing has been on the wall for well over two years… not much of a prediction. I know when I’m looking to staff a project, if someone says they only know SharePoint development, they are immediately excluded from my list of candidates.

 

Nenhum dos 2. Tradicionalmente, consultores SharePoint eram capazes de trabalhar de olhos fechados. Eles podiam focar somente no SharePoint. Mas hoje em dia, nesse mundo cada vez mais conectado, agrega mais valor um mix de tecnologias e serviços do que uma plataforma única que faz tudo. Assim sendo, os consultores de SharePoint não conseguem ser tão efetivos focando apenas no SharePoint, ao invés disso, precisam entender as oportunidades. Veja os desenvolvedores, eles simplesmente não podem ser tão efetivos hoje em dia sem conhecer desenvolvimento de Azure, conhecer os seus serviços e desenvolvimento Client-Side. Nos últimos 12-18 meses, vi 90% do meu trabalho ser focado em JavaScript & soluções client-side. Pessoalmente, achei divertidas as previsões do Joel, pois o conteúdo está estampado no muro por pelo menos 1 ou 2 anos… não é uma previsão. O que sei é que quando estou procurando por equipe para um projeto, se o profissional conhece apenas desenvolvimento SharePoint, ele é excluído imediatamente da lista de candidatos.
5 – What do you think about Session Management in SharePoint? We have some concerns about Security and User Authentications using sessions And if should we use custom session management or not.

 

O que você acha sobre Session Management no SharePoint? Temos algumas preocupações com segurança e autenticação de usuários usando sessões e realmente deveríamos utilizá-las.
To be honest I really don’t have any thoughts here. I’ve generally tried to stay away from this, externalizing my application from SharePoint for quite some time now as I’ve covered in a few other answers above. I’m not saying you shouldn’t do it, but I try to avoid session state in SharePoint-based solutions… the few I do these days.
Para ser honesto, não tenho nenhuma consideração. De maneira geral, tentei ficar longe disso, externalizando minha aplicação do SharePoint, como falei acima. Não estou falando que não deveria, mas eu tento evitar session state em soluções para SharePoint.
E aí pessoal, o que acharam?
Abraços e ótima semana à todos! 😀

Written by Rodrigo Romano

March 23, 2014 at 9:39 pm