Está en la página 1de 223

SharePoint 2013 Apps:

el nuevo modelo de desarrollo


!"#$%&$'()! +$,!+
!"#"$ &"$ #'(')*"$ #' '$+, "-(, '$+./ ('$'(0,#"$ , 1"&2#3
!4
5('$$
Fl ediLor prohbe cualquier Lipo de jacin, reproduccin, Lransormacin o disLribucin de esLa
obra, ya sea medianLe venLa, alquiler o cualquier oLra orma de cesin de uso o comunicacin pbli6
ca de la misma, LoLal o parcialmenLe, por cualquier sisLema o en cualquier soporLe, ya sea por oLo6
copia, medio mecnico o elecLrnico, incluido el LraLamienLo inormLico de la misma, en cualquier
lugar del mundo.
La vulneracin de cualquiera de esLos derechos podr ser considerada como una acLividad pe6
nal Lipicada en los arLculos 270 y siguienLes del Cdigo Penal.
La proLeccin de esLa obra se exLiende al mundo enLero, de acuerdo con las leyes y convenios
inLernacionales.
7 1"&2#3
!4
Press, 202
lS8N. 978-84-94079-0-4
SharePoinL 203 Apps. el nuevo modelo de desarrollo
1'(2' 1*,('5"2/+
!-./012. Jos QuinLo Zamora, CrisLian Zaragoza, Cuillermo 8as, RoberLo 8ern e lvn Paredes.
Prlogo. Daniel A. Seara.
Revisor Lcnico. Daniel A. Seara.
Revisin lingsLica. Paco Marn.
Diseo y maqueLacin. Roco Cuerrero.
lmagen de cubierLa. Ralph 8ijker
AparLado de correos 202
03340 AlbaLera, AlicanLe, Fspaa
3..456677782/9:;<8=/>
FsLe e-8ook esL publicado con nes promocionales, no esL permiLida su venLa.
!"#$% '(( )#%*" ?@
+*,,-./*01-2 %* %*2-,,#""# ?A
3/2/# 4567 ?A
89-,*:#/01 ;*2/<0*, 4567 ?B
3/2$-" 81$%/# 4564 @C
:,#=*>1# ?':' @D
)-=#, $2# %* "#2 *21@0%-,*2 A*B @A
)@2 1/(#2 %* -("/>->/#0*2 @E
C*(,*2*01->/D0 %*" "-%# %*" >"/*01* E!"/*01F2/%* ,*0%*,F
/0<G @B
?#H*%-%*2 *0 "-2 ':I @F
I01*<,->/D0 %* .-(-2 = <*#"#>-"/J->/D0 @F
!-,->1*,K21/>-2 8#>/-"*2 @G
!#.$0/%-%*2 E!#..$0/1/*2G @G
||uo de abao (\o|o.) DD
8*,H/>/#2 %* >#0*>1/H/%-% *.(,*2-,/-" EL$2/0*22
!#00*>1/H/1= 8*,H/>*2G DD
LM2N$*%- *.(,*2-,/-" DH
;/2(#2/1/H#2 .DH/"*2 AA
|rea. qaca AA
Cce \eb /pp er nov||e AE
No|cac|ore y a|ea dede ||a de S|ae|o|r AE
!#01*0/%# %* /01*"/<*0>/- %* 0*<#>/# %*2%* /:-% AB
O*#"#>-"/J->/D0 *0 -("/>->/#0*2 .DH/"*2 AB
P!D.# 2* %*2-,,#""-0 -("/>->/#0*2 %* Q/0%#A2 :9#0*
(-,- 89-,*:#/01 4567R AB
S!) ES01*,(,/2* !#01*01 )-0-<*.*01G AF
*;/2>#H*,= AF
Q!) EQ*B !#01*01 )-0-<*.*01G EC
O*21#, %* %/2*T# E;*2/<0 )-0-<*,G EC
8/1/#2 %/,/</%#2 (#, "-2 BM2N$*%-2 E?
!-1@"#<#2 = ($B"/>->/D0 *01,* >#"*>>/#0*2 %* 2/1/#2 ED
)*U#,-2 *0 8SV E8*-,>9 S0</0*2 V(1/./J-1/#0G EA
!-.B/#2 *0 .$"1/.*%/- EA
?-H*<->/D0 -%./0/21,-%- E.*1-%-1#2 -%./0/21,-%#2G EA
V1,-2 0#H*%-%*2 EE
?$*H-2 -("/>->/#0*2 %* 2*,H/>/# EE
?#H*%-%*2 *0 /01*"/<*0>/- %* 0*<#>/# (-,- 89-,*:#/01
4567 EE
!#0>"$2/#0*2 EB
I01,#%$>>/D0W S" %*2-,,#""# 2#B,* 89-,*:#/01 - "# "-,<#
%* "#2 1/*.(#2 EF
89-,*:#/01 4567 = 2$ 0$*H# .#%*"# %* -("/>->/#0*2 EG
P!$@0%# $2-, 2#"$>/#0*2 = >$@0%# -("/>->/#0*2R B?
|| Cce Soe B@
X/(#2 %* 89-,*:#/01 '((W 3/2$-"/J->/D0 = Y$0>/#0-"/%-%
BE
:@</0- >#.("*1- EI..*,2/H* Z$"" :-<*G BE
:-,1* %* (@</0- E'(( :-,1G BB
'>>/D0 (*,2#0-"/J-%- E[I !$21#. '>1/#0G BH
X/(#2 %* 89-,*:#/01 '((W V(>/#0*2 %* -"#U-./*01# BG
'((2 -"#U-%-2 *0 89-,*:#/01 E89-,*:#/01F9#21*% '((2G
BG
'((2 -$1#F-"#U-%-2 E'$1#9#21*% '((2G F@
'((2 >#.B/0-%-2 E+=B,/% '((2G FD
C*2$./*0%# FE
!#0>"$2/#0*2 FB
8/#2)'
CapLulo . Novedades en SharePoinL
203
CapLulo 2. lnLroduccin a las SharePoinL
Apps
)/ (,/.*,- -(( FF
I01,#%$>>/D0 FF
:,*(-,->/D0 %*" *01#,0# %* %*2-,,#""# FH
\+#"- )$0%#] HH
)-N$*1->/D0 = %/2*T# %* -((2 ?CE
I01,#%$>>/D0 ?CE
!"#$%F9#21*% '((2 ?A@
)#%*"# %* #BU*1#2 %* >"/*01* = ':I CS8X *0 89-,*:#/01
4567 ?EC
':I CS8X *0 89-,*:#/01 4565 ?EE
':I CS8X 89-,*:#/01 4567 ?EB
SU*.("#2 %* $2# %* "-2 ':I ?B?
!#0>"$2/#0*2 ?FB
|ra|ardo ap||cac|ore dede e| Cce Soe ?FF
'%./0/21,->/D0 %* -("/>->/#0*2 /021-"-%-2 ?HE
S" >-1@"#<# %* -("/>->/#0*2 E'(( !-1-"#<G ?HF
!#0>"$2/#0*2 ?HG
CapLulo 3. Desarrollo de SharePoinL
Apps
CapLulo 4. lnsLalacin y adminisLracin
de SharePoinL Apps
:"-1-Y#,.- %* %*2-,,#""# *0 "- ?$B* ^ I01,#%$>>/D0 -
)/>,#2#Y1 ?-(- ?GC
?-H*<-%#,*2 2#(#,1-%#2 ?G@
I021-"-0%# = *U*>$1-0%# ?':' (#, (,/.*,- H*J ?GD
!#0>"$2/#0*2 @C?
SH*01#2 *0 89-,*:#/01 4567 @C?
SH*012 C*>*/H*,2 C*.#1#2 @CD
'(( SH*01 C*>*/H*,2 @CF
!#0>"$2/#0*2 @CH
Novedade de uo de abao paa S|ae|o|r 2J1`
@CG
:-,- *" %/2*T-%#, @CG
:-,- *" %*2-,,#""-%#, @CG
:-,- *" ,*2(#02-B"* %* IX @?C
',N$/1*>1$,- @?C
\o|o. \araqe C||er 1.J @??
Q/0%#A2 'J$,* 8*,H/>* L$2 @??
\o|o. Sev|ce \araqe @?@
|ra|ac|or y corquac|or de| eroro @?@
I01*,Y->*2 %* (,#<,-.->/D0 @?F
!#0>"$2/#0*2
CapLulo 5. Novedades inuenciadas
por las SharePoinL Apps
'$1#,*2 @?H
Prlogo
!
6
Prlogo
FsLos lLimos aos, duranLe esLe nuevo milenio, muchas cosas han cambiado en la comu6
nicacin enLre los seres humanos. La losoa de las redes sociales ha Lerminado abarcando
Lambin gran parLe de la Larea de sincronizacin de acLividades y conocimienLo inLrnseco en
las empresas.
Desde el punLo de visLa de la plaLaorma MicrosoL
7
, el elemenLo undamenLal que ha dado
progresivamenLe soporLe a esLo es, indudablemenLe, SharePoinL.
Las disLinLas versiones que conocemos, han evolucionado acompaando esLe proceso,
desde un simple reposiLorio de documenLos, hasLa converLirse hoy, en la plaLaorma de elec6
cin para almacenar, procesar y comparLir Loda la documenLacin de muchos procesos en las
empresas.
No solo esLo, se ha expandido para dar una visin pblica de las mismas, a Lravs de sus
inraesLrucLuras de publicacin, ha aciliLado la inLeraccin con los daLos de negocio hasLa el
punLo de Lransormarse progresivamenLe en la "cara visible" de eleccin de los procesos de
lnLeligencia de negocio.
Lambin, cmo, aciliLando la inLeraccin enLre los miembros de las empresas, la acili6
dad de localizar inormacin perLinenLe enLre Lodo lo disponible en las mismas, de una orma
rpida, ecienLe y clara para los usuarios y muchas cosas ms.
FsLamos en las vsperas de una nueva versin del producLo, denominado ya SharePoinL
203.
Por supuesLo, se han dedicado muchos esuerzos en brindar ms y mejores presLaciones.
adapLando la plaLaorma al devenir de los Liempos, con mayor presencia en la Nube, incre6
menLado el acceso a la inormacin desde disLinLos disposiLivos y dems exigencias propias de
la evolucin de la humanidad.
FsLo hace que, evidenLemenLe, los mecanismos de personalizar las implemenLaciones en
SharePoinL exijan cada vez ms de s, y requiera mayor inLegracin con la plaLaorma.
Adems, la apuesLa va de cara a inLegrar cada vez ms, por ejemplo, las aplicaciones de
Oce.
qu duda cabe que, en la relacin cosLo-benecio, cada vez son ms las empresas que
deciden llevar su implemenLacin a enLornos exLernalizados en la Nube, como es el caso de
Windows Azure
7
.
Prlogo
!
7
De Lodo esLo se decanLa que, obviamenLe, la orma de generar personalizaciones e inclu6
sive implemenLar aplicaciones sobre la plaLaorma SharePoinL 203, requiere adapLaciones y
mejoras.
FsLe libro, precisamenLe, realiza un recorrido compleLo de Lodas esas opciones, haciendo
hincapi en las diversas inLegraciones, as como en la comparacin con las ormas previamenLe
exisLenLes.
Los cambios por venir son realmenLe imporLanLes, al punLo que algunas cosas dadas como
novedosas en la versin acLual, podran considerarse casi obsoleLas en esLa nueva por venir.
5,(+2'/#" #' )"&,-"(,)2"/'$ #2(')+,$ )"/ '& '9:2;" #' ;("#:)+" 9:' '& <(:;" 9:' +'/<"
el honor de dirigir y yo mismo hemos manLenido duranLe Lodo el proceso de diseo y creacin
de esLa nueva versin, nos hemos decidido, ahora que ya es de conocimienLo pblico, dar un
undamenLo adecuado a Lodos aquellos inLeresados en implemenLar soluciones para la nueva
versin de Oce y SharePoinL, LanLo en insLalaciones de los usuarios, como en lnea ("en la
Nube" que puedo asegurarLe que no se cae). Si Le lees el libro enLeriLo, vas a enLender como
es el Lema en la nueva versin.
Desde ya aclaro que no vas a Lener ejemplos complicados (espero que los pidan, as con6
venzo al equipo a expandirse en muchos ms deLales), aunque s puedo asegurarLe que vas a
enLender perecLamenLe "lo que vendr" con el desarrollo de apps de SharePoinL.
no quiero cerrar esLe prlogo sin reorzar un concepLo que escrib previamenLe.
Fs para m un verdadero honor guiar en lo esencial los pasos de esLa pandilla de excelen6
Les proesionales con los que comparLo el da a da de nuesLras Lareas y proyecLos en SolidQ.
DeniLivamenLe, no sera posible hacer Lodas las cosas que hacemos, y conseguir objeLivos Lan
imporLanLes, si su presLancia, proesionalidad, conocimienLo, capacidad de progreso, genero6
sidad, colaboracin y compaerismo.
Un orgullo, CrisLian, Cuillermo, lvn, Jos, y RoberLo.
"Dani" Seara
Madrid, un nublado da de ocLubre de 202.
Prlogo
!
8
Organizacin del libro
Fl objeLivo de esLe libro es proundizar en el nuevo modelo de desarrollo de SharePoinL,
que preLende dar cabida a lo que llaman las SharePoinL Apps. No obsLanLe, dada la imporLancia
#'& ('$+" #' /"0'#,#'$ 2/)&:2#,$ '/ 1*,('5"2/+ 203, no hemos querido perder la oporLunidad
de hacer un repaso de ellas, proundizando un poco en aquellas que hemos considerado ms
imporLanLes.
Fn el capLulo del libro veremos las novedades reerenLes a SharePoinL 203 separadas
por caLegoras. FsLe capLulo preLende que el lecLor Lenga una visin general de Lodas las
novedades sin proundizar mucho en ellas, pero s explicando claramenLe y con ejemplos y
diagramas aquellas novedades que no son Lan ciles de enLender, como por ejemplo, Loda la
;,(+' #' 1":2=/I10J.
Fn el capLulo 2, veremos una inLroduccin a las SharePoinL Apps, cuyo objeLivo es senLar las
bases y explicar los porqus de un nuevo modelo de desarrollo.
Fn el capLulo 3, proundizaremos en el desarrollo de las SharePoinL Apps. veremos desde
una aplicacin "hola mundo", hasLa los componenLes ms complejos a la hora de maqueLar
una app de SharePoinL o de acceder a SharePoinL 203 desde una app medianLe el modelo de
objeLos clienLe y el APl RFS1. 1odos sabemos que la Leora en esLe Lipo de desarrollos es muy
boniLa y se explica deLallado en la mayora de los recursos de MSDN, pero a la hora de la verdad,
siempre hay cosas que no van como dice la Leora, sino como marcan los aLajos o 7/0KL0/-M;2
que los propios programadores vamos experimenLando a base de golpes. Adems Lodos los
ejemplos monLados se han pensado en Lrminos del programador que parLe desde cero.
Fn el capLulo 4, veremos los deLalles de la insLalacin y adminisLracin de apps, es decir,
como insLalar una app del Oce SLore, capacidades de adminisLracin en base a licencias,
permisos, eLc. Adems, comenLaremos qu es el nuevo caLlogo de aplicaciones de SharePoinL
203.
Fn el capLulo 5, enLraremos ms en deLalle en aquellas novedades que, an ya habiendo
sido mencionadas en el capLulo , merecen un hincapi especial debido a su drsLico cambio,
en parLe, inuido por el nuevo modelo de SharePoinL Apps. FsLamos hablando de MicrosoL
NAPA, manejadores de evenLos remoLos (en ingls %1>/.1 $I1M. %1=1:I102) y la nueva arquiLec6
Lura de los ujos de Lrabajo.

Prlogo
!
9
Fjemplos de cdigo
Fn esLe libro se han uLilizado ejemplos de cdigo uenLe, concreLamenLe para los capLu6
los 3 y 5. Los lenguajes uLilizados han sido H1ML, JavaScripL, CSS, C# y visual 8asic. 1odos los
ejemplos de cdigo uLilizan la versin MicrosoL visual SLudio 202 y pueden ser descargados
#'$#' &,$ $2<:2'/+'$ #2('))2"/'$ :(&=
hLLp.//www.solidq.com/sqj/books/MaLerials/Fjemplos-de-codigo-SharePoinL-Apps.zip
AnLe cualquier problema para descargar el cdigo conLacLen con webmasLer@solidq.com.
PregunLas y comenLarios
Si Lienes cualquier comenLario o idea acerca de esLe libro o del maLerial relacionado, o
si Liene pregunLas que no se responden en esLe libro, pngase en conLacLo con webmasLer@
solidq.com.

CapLulo . Novedades en SharePoinL 203 Preview
!
10
A lo largo de la hisLoria de SharePoinL, ha habido cambios imporLanLes, siempre respon6
diendo a las necesidades del mercado en cada momenLo.
Los primeros producLos de MicrosoL que se acoLaron bajo el Lrmino "SharePoinL" ue6
("/ "#$%&'()*+ ,&$- "&%.)/&0 (S1S) y "#$%&'()*+ '(%+$1 "&%.&% 2334 (=/;1ML>1 1ahoe). Fl
equipo de SharePoinL 1eam Services se encargaba de ayudar a los equipos de Lrabajo a com6
parLir inormacin rpida y cilmenLe. Por su parLe, SharePoinL PorLal Server 200 oreca capa6
cidades de bsqueda, gesLin documenLal y personalizacin, pero como a Lodas las primeras
versiones, le alLaba mucho por hacer.
FsLos dos sisLemas, aunque eran muy Liles resolviendo sus unciones, esLaban poco inLe6
grados. MoLivo por el cual, despus de imporLanLes quejas de los clienLes, en el ao 2002 esLos
dos equipos se unieron para proporcionar una plaLaorma comn. Como resulLado, orecieron
al mercado un conjunLo de dos producLos. 5)*6(70 "#$%&'()*+ "&%.)/&0 283 9:' '(, &, '#26
cin graLuiLa (licencia de Windows Server) y "#$%&'()*+ '(%+$1 "&%.&% 2339. Se hizo un redi6
seo de la arquiLecLura con los objeLivos principales de poner SQL Server 2000 como sisLema
de almacenamienLo y ASP.NF1 como plaLaorma de desarrollo, con lo que Lodo esLo conlleva.
MasLer Pages, Web ParLs, eLc.

ParalelamenLe al equipo de SharePoinL exisLa el equipo de :)/%(0(;+ <(*+&*+
:$*$=&-&*+ "&%.&% 2332 que se dedicaba principalmenLe a gesLin de conLenidos web. Fn
11
Captulo 1. Novedades en SharePoint 2013 Preview
2004, anLe la peLicin de muchos de sus clienLes, decidieron unir Lambin esLos dos equipos,
$:(<2'/#" '& ;("#:)+" :)/%(0(;+ <(*+&*+ :$*$=&-&*+ "&%.&% <(**&/+(% ;(% "#$%&'()*+
,&/#*(1(=)&0 (codename Spark), que inLegraba algunas uncionalidades de SPS 2003 y MCMS
2002, como por ejemplo, poder uLilizar el moLor de bsquedas de SPS en MCMS. Spark ue
solamenLe un parche, ya que no proporcionaba una plaLaorma comn. Fue cuando, en ocLu6
bre de 2006, MicrosoL hizo el lanzamienLo de 5)*6(70 "#$%&'()*+ "&%.)/&0 983 y :)/%(0(;+
Ofhce 5harePoint 5erver 2007. SharePoinL 2007 Luvo un Lremendo xiLo con cerca de 00
millones de licencias vendidas. Con SharePoinL 2007 se inLroducen muchas capacidades y se
Lransorma el concepLo de SharePoinL de ser un sisLema de porLales y siLios de equipos de
Lrabajo a ser un porLal de colaboracin de negocio en el que se inLegran capacidades de. cola6
boracin, porLal, bsqueda, gesLin de conLenido, ormulario de negocio, ujos de Lrabajo e
inLegracin con lnLeligencia de negocio.
Dado el xiLo de SharePoinL 2007, MicrosoL sigui aposLando por cada uno de los pilares
o capacidades (7/0K9/L;2 en ingls) mejorndolos paralelamenLe. Fn 2007, adquiri >?*6$0
que son componenLes de visualizacin avanzada, y en 2008, adquiri '(7&%0&+ y @A", B"',
dos empresas dedicadas a la bsqueda empresarial, la segunda de las ms imporLanLes del
mercado en el momenLo.
Fn mayo de 200, ue cuando MicrosoL hizo el lanzamienLo de SharePoinL 200, que
mejorara y rediseara las capacidades de la versin anLerior. La versin graLuiLa, en esLe caso,
se llamara "#$%&'()*+ @(?*6$+)(* 2343 (SPF 200) y la versin de pago "#$%&'()*+ "&%.&%
2343 (SPS 200). Fn SharePoinL 200, se inLroduce la experiencia de usuario amigable (%:NN/M
O)), se mejoran las capacidades de mulLi-navegador y disposiLivo, viendo la evidenLe Lendencia
del mercado, adems de uLilizar AJAX para mejorar la experiencia del usuario. Adems, en esLa
versin se convierLe C%((.& '/ "#$%&'()*+ 5(%D"E$/& permiLiendo usar SharePoinL en modo
cjjine. OLra gran mejora es Ofhce web Apps, que nos permiLe ver y ediLar documenLos de
Oce direcLamenLe en el navegador. 1ambin se invierLe mucho en mejorar las caracLersLicas
$")2,&'$= :F ")+&, manejo de perles, conexin enLre personas, eLc. Fn cuanLo a conexin con
sisLemas exLernos, nacen los 8CS (servicios de conecLividad empresarial), que nos permiLen
enlazar con uenLes exLernas en modo lecLura y escriLura. Sin olvidarnos de Lodas las venLajas
para desarrollador. RFS1, A1OM, JSON, LlNQ, depurar con [F5], eLc.
FsLo es el esLado del arLe del producLo SharePoinL hasLa su versin acLual, SharePoinL 200.
No obsLanLe, el 6 de Julio de 202 sale la primera beLa pblica de SharePoinL 203, llamada
12
Captulo 1. Novedades en SharePoint 2013 Preview
"#$%&'()*+ 2349 '%&.)&7. Adems, el da 24 de OcLubre de 202 sali la versin G,: '/ '&
siLio de MSDN, descargable nicamenLe para aquellos desarrolladores con subscripcin con
sucienLes derechos. MicrosoL anunci que la disponibilidad general de SharePoinL 203 sal6
#(>, '& Q de 203.
A Lodo esLo, se aade el cambio de logos y N0LM;:MP que esL ejecuLando MicrosoL en
Lodas sus reas siguiendo el diseo novedoso de 5)*6(70 H, la que lleva a un cambio de logo
en SharePoinL Lambin.

SharePoinL 203 Lrae muchas novedades Lambin en Lodas las capacidades o 7/0K9/L;2, siendo
dos de los ejes cenLrales, la Nube y el conLenido social. FsLe capLulo preLende dar una visin a
alLo nivel de esLas novedades. Con esLo conseguimos que aquellos que disponemos de menos
Liempo para leer densas documenLaciones podamos cilmenLe conocer qu Lrae esLa nueva
versin y cmo podemos aprovecharlo para nuesLra ruLina diaria.
Los desarrolladores web esLamos de suerLe, dado que con SharePoinL 203 vienen buenas
noLicias, ya que MicrosoL cada vez esL cenLrando ms aLencin en H1ML, CSS y JavaScripL,
LanLo para desarrollos sobre el propio SharePoinL 203 como para el resLo de producLos de
Oce 203 a Lravs de las Oce Apps (aplicaciones Lipo complemenLo !L;;:M! para Oce
203). Debido a ello, surgen nuevos Lipos de componenLes o aplicaciones sobre SharePoinL
llamadas "#$%&'()*+ AEE0. Para aclarar, esLa nueva orma de crear aplicaciones no elimina
la Lradicional orma de crear soluciones SharePoinL medianLe Soluciones de granja o QLM;N/R,
sino que aade ms posibilidades. Fn esLa seccin del libro nos cenLraremos en novedades de
desarrollo a ms alLo nivel y no enLraremos muy en deLalle en las SharePoinL Apps, puesLo que
el resLo de los capLulos del libro se cenLran exclusivamenLe en las apps, incluyendo desarrollo,
gesLin y publicacin en :$%D&+'1$/& (Ofhce 5tore).
veamos a conLinuacin una relacin de las novedades para el desarrollador en SharePoinL
203.
13
Captulo 1. Novedades en SharePoint 2013 Preview
Cloud App Model
1al como comenLaba, en SharePoinL 203 se inLroducen las SharePoinL Apps y con ellas
un nuevo modelo de desarrollo de aplicaciones. Fs decir, que en SharePoinL 203, Lendre6
mos dos opciones a la hora de desarrollar aplicaciones, podremos generar Soluciones (724) o
Aplicaciones (L44).
Figura -. Opciones de desarro6
llo en SharePoinL 203
FsLas opciones Lambin se vern reejadas como planLillas de proyecLos disLinLas en visual
SLudio 202.
Figura -2. PlanLillas de desarrollo para SharePoinL 203
en visual SLudio 202
14
Captulo 1. Novedades en SharePoint 2013 Preview
?,$ 1*,('5"2/+ 1"&:+2"/$ $"/ &,$ $"&:)2"/'$ +(,#2)2"/,&'$ #' 1*,('5"2/+ 9:' ;:'#'/ )(',($'
con visual SLudio para exLender nuesLras aplicaciones web con uncionalidad adicional. Fl con6
cepLo de SharePoinL App es nuevo, pero la idea es similar, doLar a SharePoinL de uncionalidad
adicional, aunque en esLe caso se redisea el paradigma con los siguienLes objeLivos.
- 5(";"()2"/,( :/ $1+( *).&1 6& $)01$-)&*+( &* 1$0 $E1)/$/)(*&0, puesLo que no Lienen
por qu vivir en SharePoinL. Pueden esLar alojadas y consumir recursos de oLros servidores (llS,
Azure, eLc.).
- @$/)1)+$% 1$ )*0+$1$/)I* F $/+?$1)J$/)I* 6& $E1)/$/)(*&0 a los usuarios, ya que las
SharePoinL Apps se adquieren va MarkeLPlace a Lravs del SharePoinL SLore (pblico) o del
App CaLalog (privado).
- 1"&0'/+,( ?*$ K*)/$ *&/&0)6$6 6& *&=(/)(. La nalidad de las apps es de solvenLar una
necesidad especca de los usuarios, no de hacer una mega aplicacin que se encarga de Lodo.
No obsLanLe, se podrn crear cualquiera de los dos Lipos de aplicaciones para SharePoinL
203.
Fn los siguienLes capLulos de sLe libro, hablaremos ms en deLalle de esLe nuevo modelo
de desarrollo, ya que es nuesLro objeLivo principal.
15
Captulo 1. Novedades en SharePoint 2013 Preview
HerramienLas de desarrollo
Comenzando por el ms bsico, debido a que esL ms orienLado a usuarios de negocio
que a desarrolladores, Lenemos a L)0)(, despus a "#$%&'()*+ >&0)=*&%, que esL orienLado a
usuarios ms Lcnicos y a L)0?$1 "+?6)(, que ya esL orienLado a desarrolladores puros. No olvi6
demos el proyecLo MA'AN que es como un visual SLudio (simplicado y limiLado a SharePoinL
Apps) pero embebido en una pgina web. ComenLaremos en esLe mdulo esLos 4 producLos
para el desarrollo de componenLes a medida en SharePoinL 203, dejando el proyecLo NAPA en
un capLulo aparLe debido a su novedad y aplicacin exclusiva para SharePoinL y Oce Apps.
visio 203
DenLro del mbiLo de SharePoinL, se considera a visio como una herramienLa de desarrollo
debido a que nos permiLe de orma visual e inLuiLiva crear ujos de Lrabajo (en ingls wcrljcws)
personalizados y despus exporLarlos a SharePoinL Designer para poder aadir algunas accio6
nes ms avanzadas.
Fn visio 203 y SharePoinL Designer 203 se incluyen novedades en el desarrollo de ujos
de Lrabajo, enLre ellas nuevas Formas (Q3L412) que represenLan FLapas (Q.LP12), 8ucles (+//42)
y Pasos (Q.142). Dichas Formas, en versiones anLeriores de visio, no esLaban disponibles. Por el
nombre se puede inLuir un poco la uncionalidad que desempean esLos Lres nuevos compo6
nenLes. Fl objeLivo del libro no es avanzar en esLe Lema sino inLroducirlo, para ms inormacin
sobre workows de SharePoinL 203 en visio 203, vanse los siguienLes enlaces.
Workow developmenL in SharePoinL Designer 203 and visio 203.
Shapes in Lhe SharePoinL Server 203 workow LemplaLe in visio 203.
16
Captulo 1. Novedades en SharePoint 2013 Preview

Figura -3.PlanLilla de
1*,('5"2/+
203 Workow
en visio 203
Figura -4. Men de ormas (shapes)
para ujos de Lrabajo de SharePoinL
203 denLro de visio 203.
17
Captulo 1. Novedades en SharePoint 2013 Preview
SharePoinL Designer 203
@/ "#$%&'()*+ >&0)=*&% 2349 (SPD 203) el primer cambio que observamos al insLalarlo
y ejecuLarlo es el logo.
Figura -5. Logo de
SharePoinL Designer 203
Fn esLa parLe, Lenemos noLicias para aquellos que nos dedicamos a aplicar diseos en
SharePoinL. Parece ser que MicrosoL no considera apropiado SharePoinL Designer para aplicar
"N0LM;:MP", de hecho, siendo as, yo no considero apropiado el nombre del producLo "Q3L01S/:M.
"12:PM10". esLo no quiere decir que SPD esL en peligro de exLincin, ha habido cambios y
mejoras en el producLo, pero mucho ms orienLadas del lado de los ujos de Lrabajo. veamos
una serie de mejoras que se han inLroducido.
48 >&0$E$%&/& 1$ .)0+$ 6& >)0&O( E$%$ P,:Q
Han quiLado la visLa de Diseo denLro del ediLor web de SPD 203, por lo que
ahora solamenLe Lenemos la posibilidad de ediLar pginas maesLras, diseos de pgi6
nas, eLc., con visLa de cdigo. Ms inormacin. SharePoinL Designer 203's missing
#'$2</ 02'A y SharePoinL Designer 203 Design view is Cone!
28 Crear ujos de trabajo basados en eI nuevo .NT 4.x workow lnfrastructure
(5harePoint 20l3 workows)
1ambin se manLendr la compaLibilidad hacia aLrs para poder crear y ediLar
ujos de Lrabajo de SharePoinL 200.
18
Captulo 1. Novedades en SharePoint 2013 Preview
Figura -6. rear ujo de Lrabajo para SharePoinL 203 desde SharePoinL
Designer

M(+$8 Si no ves la opcin de SharePoinL 203 Workow al crear un nuevo
ujo de Lrabajo en SPD 203 es porque no Lienes congurado Windows
Azure Workow en la granja de SharePoinL 203. Recuerda que esLe com6
ponenLe no se insLala con SharePoinL 203, hay que insLalarlo aparLe.
Ms inormacin. lnsLalacin y conguracin de ujos de Lrabajo para
SharePoinL Server 203.
98 lntegracin con tapas (mquinas de estados)
Los ujos de Lrabajo hasLa ahora deban crear acLividades en serie. Ahora los ujos
de Lrabajo de SharePoinL 203 podrn implemenLar mquinas de esLados, es decir,
podrn salLar de un esLado a oLro dependiendo de cierLas condiciones, incluso lle6
gando a una eLapa anLerior.
19
Captulo 1. Novedades en SharePoint 2013 Preview
Figura -7. Mquina de esLados niLos para los ujos de Lrabajo de SharePoinL 203
4. VisuaI Designer (lntegrado en 5PD 20l3)
Cuando desarrollamos ujos de Lrabajo en visio, Lenemos disponible un ediLor visual
medianLe el que podemos usar guras (23L412) direcLamenLe arrasLrndolas y solLn6
dolas. Fn el caso de SPD 203, y solamenLe para desarrollar wcrljcws #' 1*,('5"2/+
203 (no para los de SharePoinL 200), Lenemos inLegrado el L)0?$1 >&0)=*&% de visio
denLro de SPD. NormalmenLe desde el #:2-L9 "12:PM10 $' 2/+("#:)'/ &,$ '+,;,$ #' &,
mquina de esLados y desde el diseador, en modo senLencias declaraLivas "Q1M.1M=1T
Q.J91", inLroduciremos las acciones como lo hemos hecho siempre.
R8 lnvocar HTTP (R5T) web 5ervices
FxisLe una accin que nos permiLe invocar a un servicio web RFS1 por H11P de
orma grca. Fjemplo de uso (en ingls). How Lo work wiLh web service using "Call
H11P Web Service" acLion in SharePoinL Designer 203.
20
Captulo 1. Novedades en SharePoint 2013 Preview
S8 "(E(%+& $ /(E)$% F E&=$%
Una de las caracLersLicas ms soliciLadas, sobre Lodo a nivel de diseo de ujos de
Lrabajo, es poder copiar y pegar cierLas acciones anLe procesos repeLiLivos. Ahora ya
esL soporLado. Ms inormacin (en ingls). Copy-and-PasLe supporL in SharePoinL
Designer 203.
7. Q((E0
Por n se pueden hacer bucles en los ujos de Lrabajo medianLe la inclusin de una
acLividad naviLa.
H8 lniciar workows de 5harePoint 20l0
Nueva accin que permiLe invocar a los wcrljcws de 200 desde uno de 203. De
esLe modo se aumenLa la compaLibilidad hacia aLrs.
T8 Mejorado eI editor de correo eIectrnico (formato enriquecido)
438 VariabIes de tipo Diccionario
Podremos crear variables para almacenar vecLores o arrays de valores, combinando
esLo con la nueva accin de Q((E podremos alcanzar muchos ms escenarios.
Para ms inormacin sobre "#$%&'()*+ >&0)=*&%, recomiendo mirar direcLamenLe en el
-&"< #'& '9:2;" #' ;("#:)+"= SharePoinL Designer 1eam 8log.
21
Captulo 1. Novedades en SharePoint 2013 Preview
visual SLudio 202
Cada equipo de producLo de MicrosoL Lrabaja en paralelo para inLenLar mejorar da a da,
por esLo es que el 2 de sepLiembre de 202 ue el Ianzamiento ohciaI de VisuaI 5tudio 20l2
y, claro, en lo que a los desarrolladores SharePoinL nos aecLa hubieron novedades LanLo para
SharePoinL 200 como para SharePoinL 203 . veamos primero aquellas novedades que aplican
a ambas versiones de SharePoinL y dejemos para el nal las herramienLas para desarrollo de
SharePoinL Apps, que solamenLe aecLan a SharePoinL 203.
48 >)0&O$6(% 6& 1)0+$0 F +)E(0 6& /(*+&*)6(
Cuando creamos nuevas lisLas o Lipos de conLenido desde visual SLudio (a Lravs
de "Nuevo FlemenLo...") ahora ya no Lenemos que pelearnos con unos cheros XML
Lediosos y diciles de enLender, han hecho un gran Lrabajo con el diseador visual
para esLo, vase en la imagen.
28
Figura -8. Diseador de lisLas y Lipos de conLenido en SharePoinL 203.
<%&$% /(1?-*$0 6& 0)+)(
1enemos disponible un nueva planLilla ().1> &1>49L.1) para la creacin de colum6
nas de siLio.
98 Crear web Parts de 5iIverIight
Nueva planLilla que nos aciliLa la creacin de Web ParLs para SilverlighL.
22
Captulo 1. Novedades en SharePoint 2013 Preview
4. PubIicar soIuciones 5harePoint en servidores remotos
FsLo es desde visual SLudio Lener la capacidad de desplegar en oLros servidores.
Ms inormacin. Cmo. lmplemenLar, publicar y acLualizar una solucin de SharePoinL
en un servidor remoLo.
R8 UtiIizar herramientas de generacin de perhIes para medir eI rendimiento de
"#$%&'()*+
FsLas herramienLas nos permiLen observar y grabar el comporLamienLo en cuanLo
a rendimienLo deLecLando. posibles cuellos de boLella, cdigo inecienLe, allos de
liberacin de memoria, eLc.
Para ver ejemplos y ms inormacin sobre esLo vea esLas pginas.
- Analizar el rendimienLo de la aplicacin medianLe las herramienLas de generacin
de perles.
- Cenerar perles de rendimienLo de aplicaciones de SharePoinL.
S8 Crear 5andboxed VisuaI web Parts
Fn SharePoinL 200 no se permiLa crear de orma cil un #:2-L9 U1N SL0. )"/ :/,
QLM;V/R1; 2/9-.:/M, ahora ya exisLe planLilla para ello.
7. lnteIIisense y depuracin para Java5cript
Han mejorado mucho la depuracin en JavaScripL, para ver ms inormacin.
Depurar soluciones de SharePoinL.
23
Captulo 1. Novedades en SharePoint 2013 Preview
Adems de Lodas esLas novedades, para poder desarrollar las nuevas SharePoinL Apps
(que aplican solamenLe a SharePoinL 203) vamos a necesiLar visual SLudio 202. Pero no es
sucienLe con #Q @C?@ de base, sino que Lenemos que insLalar las Microsoft Ofhce DeveIoper
,((10 ;(% L)0?$1 "+?6)( 2342 (descarga desde ,9:>). FsLas herramienLas nos proporcionan
planLillas para aciliLarnos la creacin de aplicaciones de Oce 203 y SharePoinL 203.

Figura -9. PlanLillas de visual SLudio 202 para SharePoinL 203 Apps.
Debemos Lener en cuenLa que para poder insLalar esLas planLillas de desarrollo es reque6
rida cualquiera de esLas versiones de visual SLudio. U1+)-$+&, '%&-)?- " '%(;&00)(*$1.
Adems, si nos pregunLamos, podemos desarrollar SharePoinL Apps con visual SLudio
200 La respuesLa es no. Con vS 200, podremos desarrollar soluciones de granja y 2LM;N/R
como lo venamos haciendo para SharePoinL 200, pero en esLe caso para 203.
24
Captulo 1. Novedades en SharePoint 2013 Preview
ProyecLo NAPA
No vamos a enLrar muy en deLalle, puesLo que Lenemos una seccin dedicada a ello en el
capLulo 5 de esLe mismo libro, pero es un lDF de desarrollo web. Ah lo dejo.
Figura -0, ProyecLo NAPA. FnLorno de desarrollo en la Nube.
25
Captulo 1. Novedades en SharePoint 2013 Preview
Mayor uso de los esLndares web
Con SharePoinL 203, se abre la posibilidad de crear aplicaciones de SharePoinL a un mayor
mbiLo de desarrolladores no acosLumbrados a la Lecnologa MicrosoL. De hecho, para desa6
rrollar las nuevas SharePoinL Apps se uLilizarn las Lecnologas H1ML, CSS, JavaScripL, RFS1,
ODaLa, OAuLh, eLc.
Fl hecho de que una SharePoinL App se ejecuLe en un !"#$%& independiza a sLa del con6
LexLo de SharePoinL, por lo que pasa a ser una aplicacin remoLa. Como Loda aplicacin remoLa,
para poder realizar la comunicacin con el propio SharePoinL, se realiza o bien a Lravs de RFS1
" #' (9:1M. WNX1=. Y/;19. Con esLo, se consigue que en cualquier plaLaorma y/o Lecnologa
web se pueda desarrollar una aplicacin para SharePoinL 203. Por ejemplo, imaginemos una
aplicacin de gesLin de vacaciones realizada con PHP, la cual queremos inLegrar en SharePoinL.
Ahora es posible simplemenLe usando el modelo de objeLos clienLe para Loda la comunicacin
con SharePoinL, el resLo de componenLes de la aplicacin uncionaran Lal cual esLaban (pre6
senLacin, navegabilidad enLre ormularios, eLc.). vase en la imagen las posibles opciones de
acceso a daLos desde una app hacia SharePoinL.
Figura -. Posibilidades de desarrollo de aplicaciones clienLe en SharePoinL 203.
Ahora no enLraremos ms en deLalle en las Lecnologas mencionadas, pues al LraLarse de
un libro de desarrollo se va a proundizar sobre cada uno de esLos punLos ms adelanLe. Por
adelanLar un poco, cabe mencionar que hay muchas novedades en la parLe de RFS1 y modelo
de objeLos clienLe.
26
Captulo 1. Novedades en SharePoint 2013 Preview
4.$ +2;"$ #' ,;&2),)2"/'$
Con SharePoinL 203 podemos desarrollar ms Lipos de aplicaciones que anLeriormenLe.
Hagamos una caLegorizacin dependiendo de las herramienLas usadas para crearlas, de los
modelos de programacin uLilizados, de los mLodos usados para empaqueLarlas, desplegar6
las y publicarlas, y los disposiLivos en los que se ejecuLan.
- "#$%&'()*+ AEE0 (el Lipo de aplicaciones en el que se cenLra esLe libro). Son soluciones
independienLes para realizar Lareas pequeas. Los usuarios pueden descargarlas e insLalarlas
direcLamenLe desde un caLlogo pblico llamado AEE "+(%&. Pueden incluir componenLes
bsicos de SharePoinL como. lisLas, pginas, Web ParLs, ujos de Lrabajo, Lipos de conLenido,
eLc. Se pueden ejecuLar en un servidor exLerno (Azure u oLros).
- 5itios de pubIicacin. Fn SharePoinL un siLio de publicacin nos sirve para hacer imple6
menLaciones de webs pblicas. Debido a esLo, y a la canLidad de concepLos a asimilar en una
web pblica (SFO, N0LM;:MP, navegacin, URL, usabilidad, eLc.) se enmarcan la creacin de siLios
pblicos como una Lipo de aplicacin propio denLro de SharePoinL. Adems en SharePoinL
203, hay basLanLes novedades en esLe senLido, las cuales veremos ms adelanLe.
- 5oIuciones de granja. Las soluciones de granja son los ".wsp" que ya conocemos. Fs
decir, aquellas soluciones que normalmenLe son un conjunLo de Web ParL2, y oLras exLensiones
cuyo despliegue es realizado por una caracLersLica (Z1L.-01) y que resulLa en aadir cierLos
ensamblados (DLL) a la CAC (,9/NL9 !221>N9J (L=31) del servidor ronLal de SharePoinL (o ser6
vidores si hay ms de uno). Para insLalar esLe Lipo de aplicaciones, se requiere hacer el desplie6
gue direcLamenLe en el servidor. Las soluciones de granja permanecen igual en SharePoinL 203,
salvo un deLalle, ya que en SharePoinL 200 se podan desplegar con polLicas CAS ((-2./>
!==122 Q1=-0:.J) asociadas y esLas polLicas son ignoradas en SharePoinL 203. Adems, con la
aparicin de las SharePoinL Apps aparecen cierLas recomendaciones sobre cundo usar unas u
oLras, que las puedes ver en la seccin de SharePoinL Apps de esLe libro (capLulo 2).
- 5oIuciones 5andbox. Son Lambin ".wsp" como las soluciones de granja, pero con un
espacio aislado de ejecucin y con una APl ms reducida. Adems, se insLalan a nivel de siLio
sin requerir el acceso en el servidor para ello, simplemenLe subiendo el ".wsp" a la galera de
soluciones del siLio de SharePoinL. Debemos de Lener en cuenLa que segn la documenLacin
ocial de MicrosoL las soluciones 2LM;N/R '$+./ marcadas como obsoleLas en SharePoinL 203.
- AE1)/$/)(*&0 E$%$ -I.)1. Con SharePoinL 203, se abre el abanico de posibilidades en
cuanLo al acceso a SharePoinL desde las aplicaciones mviles. Fn el caso de Windows Phone,
27
Captulo 1. Novedades en SharePoint 2013 Preview
exisLe una APl de clienLe disponible para ello, y en el caso del resLo de disposiLivos mviles, se
pueden usar los nuevos servicios RFS1/ODaLa que incluyen mucha ms uncionalidad ahora.
RepresenLacin del lado del clienLe (ClienL-side rendering)
Una de las novedades en el ncleo de la plaLaorma SharePoinL, y con el objeLivo de dar
soporLe a una "rica" experiencia de usuario, es la uncionalidad llamada represenLacin del
&,#" #'& )&2'/+' =9:1M.T2:;1 01M;10:MP.
Fs un mecanismo que nos permiLe producir nuesLra propia salida para cierLos conLroles
que se hospedan en una pgina de SharePoinL. Cuando decimos salida, nos reerimos a que
podemos uLilizar nuesLro propio H1ML y JavaScripL para denir la lgica y presenLacin de
cierLo conLrol.
Un ejemplo es la consLruccin de un Lipo de campo (jelJ) personalizado al cual quere6
mos asociarle una represenLacin muy personalizada.
Figura -2. CaracLersLica de ClienL-side rendering.
28
Captulo 1. Novedades en SharePoint 2013 Preview
Podemos ver un ejemplo compleLo. Cmo personalizar un Lipo de campo con la repre6
senLacin del clienLe.
Novedades en las APl
1al como comenLbamos en el punLo anLerior, donde armbamos que SharePoinL 203
hace mayor uso de los esLndares, Lambin cabe decir que el equipo de SharePoinL ha hecho
un gran esuerzo para orecer mucha de la uncionalidad que Liene en el modelo servidor, Lam6
bin por clienLe, LanLo en la APl de clienLe como en la APl RFS1. Hay un aparLado compleLo que
habla sobre esLas novedades en el capLulo 3 de esLe libro.
lnLegracin de mapas y geolocalizacin
Por n ha llegado, en SharePoinL 203 ya Lenemos de orma naLiva un Lipo de columna
(jelJ tye) para la geolocalizacin. FsLo es algo que llevbamos implemenLando manualmenLe
desde las primeras versiones de SharePoinL.
Figura -3. CaracLersLica de Mapas en SharePoinL 203. lmagen obLenida de M,SDN.
ConcreLamenLe en un campo de Lipo '&()(*$+!(, podemos inLroducir coordenadas como
valores decimales, LanLo para la laLiLud como longiLud, aunque Lambin podemos congurarlo
29
Captulo 1. Novedades en SharePoint 2013 Preview
de modo que obLenga las coordenadas del usuario acLual direcLamenLe desde el navegador
(siempre que implemenLe la APl W3C de Ceolocalizacin).
Fn esLa inLegracin Lenemos dos acLores a Lener en cuenLa.
48 A1-$/&*$-)&*+( 6& /((%6&*$6$0.
Como hemos comenLado anLeriormenLe, la orma en la que SharePoinL almacena la inor6
macin de las coordenadas es a Lravs de un Lipo de columna nuevo y esLo a nivel de SQL
1'(0'( 9:'#, (';('$'/+,#" )"/ &"$ /:'0"$ +2;"$ #' #,+"$ -&(%&+#., -&(-#$/0. y 0!&#$#*0. 23,
9:' ('9:2'('/ +'/'( 2/$+,&,#" 4564.78)#9./&7:%7! en el servidor de SQL Server. Para descar6
garlo, podemos usar esLe paqueLe. MicrosoL SQL Server 2008 R2 SP FeaLure Pack.

M(+$8 Fs imporLanLe Lener en cuenLa que esLe Lipo de columna no esL
habiliLado de orma visual al aadir una nueva columna, para poder aa6
#2(&" , :/, &2$+, &" #'-'/ *,)'( &"$ #'$,(("&&,#"('$ va cdigo.
28 Representacin grhca de mapas=
Fn cuanLo a la represenLacin grca de los punLos geogrcos, SharePoinL 203 uLiliza los
mapas de 8ing, concreLamenLe "8ing Maps Ajax conLrol v7". Adems, Lenemos un nuevo Lipo
de visLa que es de Lipo Mapa.

M(+$8 Para habiliLar el mapa de 8ing en nuesLra granja de
SharePoinL 203, debemos esLablecer la "clave" de 8ing Maps o bien
medianLe modelo de objeLos clienLe o bien medianLe PowerShell.
4&+;4<=!,->$/7?&. @=!,-?&. ABC,+&# $ D$)!E =!,- >$/7 F&.GH
Ms inormacin ,9:>.

1ambin debemos saber que se puede personalizar la represenLacin grca del mapa
usando la caracLersLica ClienL-side rendering que mencionbamos anLeriormenLe.
30
Captulo 1. Novedades en SharePoint 2013 Preview
CaracLersLicas Sociales
Fn la parLe social, SharePoinL ha mejorado mucho, y ms que lo har porque el 25 de junio
de 202 MicrosoL compr la red social empresarial ammer. ConcreLamenLe para SharePoinL
203 Lenemos novedades en las dos reas sociales CommuniLies y My SiLes.
Comunidades (CommuniLies)
Fn SharePoinL 200 se podran crear lisLas de discusin para crear algo parecido a un oro
que permiLa debaLes enLre los usuarios. Fn SharePoinL 203 sigue esLando la lisLa de discusin,
pero Lenemos dos planLillas de siLio nuevas llamadas "CommuniLy SiLe" y "CommuniLy PorLal".
<(--?*)+F ")+& es la planLilla de Lipo oro, Lan deseada. Podremos organizar discusiones
por caLegoras, Lener moderadores, aplicar reglas, revisin de comenLarios o crear insignias
de LalenLo para moLivar a los usuarios. De orma auLomLica, se genera una repuLacin en el
conLenido de los oros (cuando Liene ms voLos -Lpico 9:K1 o me gusLa-, es ms respondido, o
incluso es marcado como respuesLa) y Lambin habr una repuLacin por miembro que ser
mayor cuanLo ms acLivo sea dicho miembro.
<(--?*)+F '(%+$1 es una planLilla para obLener un resumen de Lodas las planLillas
CommuniLy SiLe, es decir, cuando Lenemos muchos oros organizados en disLinLos siLios o
colecciones de siLio, esLa planLilla nos rene inormacin sobre Lodos los oros para que los
usuarios puedan descubrirlos y unirse a ellos. Adems, los siLios basados en esLa planLilla uLili6
zan Lodas las caracLersLicas de bsqueda empresarial oreciendo as una buena experiencia de
usuario y un lLrado de seguridad, no permiLiendo ver cierLos oros a aquellos usuarios que no
Lienen permisos para verlos.
31
Captulo 1. Novedades en SharePoint 2013 Preview

Figura -4. CommuniLy SiLe en SharePoinL.
32
Captulo 1. Novedades en SharePoint 2013 Preview
My SiLes
Llamamos My SiLes a las caracLersLicas de SharePoinL que nos permiLe Lener un espacio
privado como empleados, donde guardar nuesLra inormacin, aadir nuesLras preerencias,
aadir a compaeros a nuesLra red de "=/991LP-12" o compaeros, eLc.
Fn SharePoinL 203, seguimos Leniendo esLos siLios pero la inLeraz grca ha sido redise6
ada compleLamenLe, vase en la imagen.
Figura -5. My SiLe en SharePoinL 203.
Adems, se han inLroducido dos nuevas caracLersLicas. "Microblog" y "Newseeds", que
convierLen los My SiLes en un enLorno social muy parecido a Facebook y 1wiLLer. Podremos
hacer cosas que probablemenLe ya nos suenen a Lodos.
- ParLicipar en conversaciones con nuesLros amigos poniendo comenLarios.
- ComparLir imgenes y enlaces.
- ULilizar Lags del esLilo #palabra medianLe las cuales los usuarios podrn buscar luego.
- Mencionar a genLe con @nombre.
- ComparLir, comenLar y me gusLa.
- Seguir a genLe, documenLos, siLios y eLiqueLas para personalizar nuesLro newseed.
33
Captulo 1. Novedades en SharePoint 2013 Preview
Como consideracin a Lener en cuenLa, de orma predeLerminada en SharePoinL 203,
Loda esLa inormacin se almacena en una biblioLeca en el perl de cada usuario (cada usuario
almacena sus esLados, comenLarios, eLc.) y adems no se va eliminando la inormacin segn
un umbral de das (como pasaba en SharePoinL 200). Por esLe moLivo, hay que hacer la plani6
cacin del espacio en disco que puede albergar Lodo esLo.
Aadido a esLo Lenemos la nueva caracLersLica de "<(-E$%+)% <(*+&*)6(" que nos per6
miLe como usuarios comparLir hasLa nivel de Lem o documenLo con oLros usuarios sin Lener
que llamar al adminisLrador de seguridad o sin Lener que conocer el modelo de seguridad de
SharePoinL. Fn los "My SiLe" se ha rediseado la esLrucLura y ahora no Lendremos dos biblio6
Lecas, una privada y oLra pblica, sino que habr solamenLe una y uLilizando la caracLersLica
de comparLir conLenido, podremos dar permisos a deLerminados usuarios para ver algunos
conLenidos. Adems, esLa biblioLeca esLar en las opciones de Oce 203 como siLio preerido
para guardar inormacin, para ello, Oce 203 Lendr un servicio de eDiscovery que permiLir
descubrir si cierLo usuario Liene disponible un "My SiLe".
Fn cuanLo a desarrollo, cabe mencionar que hay cambios en los espacios de nombres, as
como algunos nuevos.
- MicrosoL.Oce.Server.AcLiviLyFeed
- MicrosoL.Oce.Server.Audience
- MicrosoL.Oce.Server.lnrasLrucLure
- MicrosoL.Oce.Server.SecuriLy
- MicrosoL.Oce.Server.Social
- MicrosoL.Oce.Server.SocialDaLa
- MicrosoL.Oce.Server.UserProles
- MicrosoL.Oce.Server.WebConLrols
- MicrosoL.Oce.Server.WebConLrols.Field1ypes
34
Captulo 1. Novedades en SharePoint 2013 Preview
1ambin, al igual que en las dems reas, el equipo de MicrosoL ha hecho un gran esuerzo
para permiLir que muchas de esLas APl esLn disponibles Lambin desde modelo de objeLos
clienLe y/o RFS1. ConcreLamenLe, las reas donde ms esuerzo han hecho implemenLando
RFS1 y CSOM son.
- "(/)$1 @&&60 (8#&$+&<(7+, 6!F&<(7+, '&+I))6!F&#7, '&+>&,+!(,7, '&+"&&E, eLc.)
- @(11(7 E&(E1& ("())(J, '&+"())(J&#7, '&+"())(J&E, '&+4K--&7+!(,7, eLc)
- @(11(7 /(*+&*+ ("())(J&E3(*K%&,+7L#!, '&+"())(J&E, eLc.)
- User ProhIes (SetMyroleicture, '&+>.<#(/&#+!&7, 6et0serrole, eLc.)
PuesLo que esLo no preLende ser un libro de MSDN, para obLener ms inormacin sobre los
mLodos y propiedades disponibles para cada seccin, puede visiLar esLos recursos. B"0'#,#'$
de los sisLemas sociales en SharePoinL Server 203 y CaracLersLicas sociales y de colaboracin
en SharePoinL 203.
Adems, en el capLulo 3 se hace un ejemplo donde se accede a la APl de JavaScripL.
Flujos de Lrabajo (Workows)
Fn SharePoinL 203, se ha rediseado compleLamenLe Loda la inraesLrucLura de ujos
de Lrabajo con el doble objeLivo de implemenLar windows workow loundation 4 y com6
paLibilizar esLos ujos de Lrabajo con la Nube. 1anLo es as, que el nuevo moLor de ujos de
Lrabajo que hasLa ahora esLaba denLro del propio SharePoinL, ahora es un moLor de ejecucin
aislado llamado workow Manager CIient l.0, lo que implica que la comunicacin enLre
SharePoinL y esLe moLor se har en base a proLocolos como VA?+#. 1odo esLo viene muy en
lnea de la aparicin de SharePoinL Online, ya que se preLende esLandarizar de Lal orma Lodos
los componenLes que uncionen de igual orma en SharePoinL /MT401>:21 y /M9:M1. Adems, el
nuevo modelo de SharePoinL Apps Lambin ha impulsado esLe cambio de arquiLecLura de los
ujos de Lrabajo, para enLre oLras cosas permiLir esLa uncionalidad en las SharePoinL Apps. No
obsLanLe, no preLendo avanzar ms en esLe Lema, puesLo que en el capLulo 5 hay una seccin
exclusivamenLe sobre esLo.
Servicios de conecLividad empresarial (8usiness ConnecLiviLy Services)
Desde que conozco SharePoinL, versin 2007 en adelanLe, he podido conecLarlo con sis6
Lemas o reposiLorios exLernos como SAP, FRP, CRM, 8ases de daLos y dems LO8 (Line-O-
35
Captulo 1. Novedades en SharePoint 2013 Preview
8usiness SysLems). Cuando digo conecLarlo, dejo muy abierLo el abanico de operaciones que
se puede hacer sobre esa uenLe exLerna de daLos.
Fn SharePoinL 2007, recuerdo que Lenamos el 8CD (8usiness DaLa CaLalog) que nos permi6
La solamenLe leer daLos desde sisLemas exLernos y orecerlos a SharePoinL a modo de campo
de lisLa y Lambin a Lravs del indexador de SharePoinL.
Fn SharePoinL 200 se inLroducen los 8CS (8usiness ConnecLiviLy Services) que dan soporLe
Lambin a la escriLura en sisLemas exLernos, adems de los Lipos de conLenido exLernos, eLc.
Ahora en SharePoinL 203, la nueva arquiLecLura de 8CS es la que se muesLra en la gura.
Figura -6. ArquiLecLura de 8CS (8usiness ConnecLiviLy Services). lmagen obLenida de MSDN de
MicrosoL.
De esLa imagen cabe desLacar que exisLir por una parLe Loda una arquiLecLura 8CS en
SharePoinL 203 (Lal cual ocurra en SharePoinL 200, pero con mejoras) y adems una pequea
inraesLrucLura de 8CS en Oce 203.
36
Captulo 1. Novedades en SharePoint 2013 Preview
Fn cuanLo al 8CS de Oce 203, permiLe conecLar a Oce direcLamenLe con uenLes
de daLos exLernas sin Lener un SharePoinL por el medio. S que es verdad que a la hora de
crear el modelo o solucin de 8CS, debemos asegurarnos de que es compaLible con Oce
203, es decir, nos aseguramos que se implemenLa como lo que llaman "/1)&*+W0)6& 0(1?+)(*".
Adems, cuando insLalamos Oce 203, de orma predeLerminada se nos insLala el 8usiness
ConnecLiviLy Services ClienL RunLime que se encarga de cachear (podemos Lrabajar cjjine) y
sincronizar daLos exLernos con Oce 203. No es objeLivo de esLe libro enLrar ms en deLalle
en la parLe de 8CS y Oce, pero se puede ver ms inormacin ,9:>.
Fn cuanLo a la arquiLecLura 8CS de SharePoinL Lenemos las siguienLes novedades.
- lntegracin con Ias 5harePoint Apps
Podemos crear un 8CS en el mbiLo de una SharePoinL App. Qu signica esLo Pues que
ese 8CS ser creado y desplegado cuando insLalamos la App, y ser eliminado si la desinsLa6
lamos. FsLe Lipo de modelo de 8CS se llaman "SharePoinL app-scoped exLernal conLenL Lype".
Una consideracin a Lener en cuenLa es que el acceso a las uenLes exLernas denidas en esLe
Lipo de 8CS esLar limiLado a esLa app en parLicular.
- V>$+$ /(-( ;?&*+&0 6& 6$+(0
Fn SharePoinL 200 se poda conecLar desde uenLes WCF, .NF1 y SQL Server. Ahora, ade6
ms de esLas Lres, Lambin se permiLe un origen ODaLa. Fn cuanLo a auLenLicacin en el origen
son soporLados. Annimo, 8sica, Windows y usndolo conjunLamenLe con el Secure SLore
Service de SharePoinL Lambin se puede una auLenLicacin personalizada.
Algunos ejemplos de servicios que pueden generar ODaLa son.
SharePoinL 200
SQL Azure
Windows Azure 1able SLorage
Windows Azure MarkeLplace
SQL Server ReporLing Services
MicrosoL Dynamics CRM 20
C2/#"A$ ?20'
37
Captulo 1. Novedades en SharePoint 2013 Preview
- B.&*+ G&/&).&%0 %&-(+(0
HasLa ahora no se podan asociar FvenL Receivers a Lipos de conLenidos exLernos, pero
en SharePoinL 203 s que se podr gracias al concepLo de FvenL Receivers remoLos. Dada la
imporLancia de esLo y dado que Lambin puede servir como sisLema de alerLas anLe cambios
en las uenLes de origen, hay una seccin en esLe libro exclusiva explicando en deLalle esLe
Lipo de FvenL Receivers (capLulo 5.2). Aclaro que las alerLas Lampoco esLn permiLidas en lisLas
exLernas de SharePoinL 200.
- Mejoras en Iistas externas (xternaI Lists)
Al igual que en la versin anLerior, para poder mapear una base de daLos con una lisLa de
SharePoinL, Lendremos que crear el Lipo de conLenido exLerno y despus crear la lisLa exLerna.
FsLe Lipo de lisLas Liene limiLaciones en comparacin con las lisLas normales de SharePoinL. Fn
la versin de 203 han inLroducido una serie de mejoras.
- Mejor rendimiento en el renderizado de lisLas debido a que se realiza un paginado,
lLrado y ordenamienLo anLes de obLener los daLos. De esLe modo, vienen los daLos ya
ordenados, lLrados y solamenLe los de la pgina que Loque. Me parece que esLo debera
de haber sido as desde el principio.
1' ;:'#' '$+,-&')'( '& 1X-)+& 6& &1&-&*+(0 que se muesLran por pgina.
Capacidad de hItrado en coIumnas avanzada. Con esLo podemos denir a nivel
de base de daLos cmo queremos que sea el lLro, siempre que luego lo indiquemos en
'& V(" Y/;19.
- V%6&*$-)&*+( &* 1$0 /(1?-*$0. Se pueden denir ordenamienLos que aecLarn a
Lodo el conjunLo de daLos y no solamenLe a los daLos parciales obLenidos.
- xportar a xceI. Se puede exporLar una lisLa exLerna hacia Fxcel 200 y 203.
- Y<" &* "#$%&'()*+ V*1)*&
Fn Oce 365 para empresas, el mdulo de SharePoinL Online incluye 8CS. Fn la versin de
203 se podr obLener inormacin desde las uenLes de daLos. WCF services, SQL Azure DaLa
Services, ODaLa FndpoinLs y servicios web.
38
Captulo 1. Novedades en SharePoint 2013 Preview
- A//&0( 6&06& E1$+$;(%-$ -I.)1 /(* 1(0 0&%.)/)(0 GB",
ComparLo algunos enlaces en los que se hace uso de esLa caracLersLica, para aquellos que
quieran proundizar en esLe Lema.
Reerencia a 8CS RFS1 APl para SharePoinL 203.
Acceder a daLos exLernos desde cdigo JavaScripL usando los servicios RFS1.
- C5OM - ModeIo de Objetos CIiente .NT
1ambin podremos uLilizar modelo de objeLos clienLe para 8CS.
La reerencia compleLa de programacin con 8CS para desarrolladores de MSDN la pue6
#'/ 0'( ,9:>.
39
Captulo 1. Novedades en SharePoint 2013 Preview
8squeda empresarial
Una de las novedades ms imporLanLes de SharePoinL 203 es la bsqueda empresarial. Fs
que, claro, una cosa es bsqueda como la conocemos en enLornos de lnLerneL (8ing, Coogle,
eLc.) y oLra cosa muy disLinLa es un moLor de bsqueda empresarial que Liene que cumplir con
necesidades especcas de cierLo empleado y normalmenLe de manera urgenLe.
Adems de esLo, por el simple hecho de Lener un moLor de bsqueda "1M 19 :M.10:/0 ;1 -M
jrewcll", debemos Lener en cuenLa varios aspecLos imporLanLes.
- "&=?%)6$68 Fn una red empresarial, los recursos a los que cada empleado Liene acceso
dependen del rol y los permisos de cada uno. FsLo es muy imporLanLe Lenerlo en cuenLa en un
sisLema 8F.
- Diferentes tipos de hcheros. PDF, DOC, DOCX, PP1, PP1X, ZlP, H1ML, RDL, 8D con or6
maLo propio,.
- >)0+)*+(0 %&E(0)+(%)(0. 8ases de daLos, inLraneLs corporaLivas (SharePoinL,.), carpeLas
de red comparLidas, correo elecLrnico (Fxchange, .), cheros de Fxcel, sisLemas de archivos,
servidores web, LoLus NoLes, SisLemas FRP, SisLemas CRM,.
- Combinacin de informacin estructurada y no estructurada. FxisLe inormacin
esLrucLurada en bases de daLos, lisLas, libros de Fxcel, eLc. Pero Lambin inormacin en pgi6
nas web, vdeos, documenLos, eLc. que esL LoLalmenLe desesLrucLurada. Adems, muchas
veces exisLe relacin enLre los disLinLos Lipos de inormacin, por lo que oLro reLo es el de
combinar Loda esLa inormacin de la orma ms adecuada.
- VocabuIarios y taxonomas propias. Una de las venLajas es que la mayora de las bs6
quedas Lendrn un mbiLo concreLo de la empresa.
- @&/#$0 6& 1(0 6(/?-&*+(0. Fecha de creacin, echa de anlisis de un inorme, echas
que esLn denLro de los documenLos, .
- Bsqueda de un documento concreto. Si comparamos con la bsqueda en lnLerneL,
en la cual la mayora de las veces el usuario no sabe lo que esL buscando, en la bsqueda
empresarial, el usuario muchas veces busca cierLa documenLacin que sabe de su exisLencia,
puesLo que ya la consulL en el pasado, pero no recuerda exacLamenLe donde esLaba almace6
nada. Un sisLema de bsqueda empresarial debe aprovechar esLe aspecLo.
- '&%0(*$1)J$/)I* 6&1 -(6&1( 6& %&1&.$*/)$. Fn la bsqueda en lnLerneL no Liene senLido
hablar de personalizar el modelo de relevancia para cierLos casos, ya que suele ser propieLario,
40
Captulo 1. Novedades en SharePoint 2013 Preview
pero en sisLemas de bsqueda empresarial es muy habiLual que las empresas puedan adapLar
el modelo de relevancia a sus necesidades.
MicrosoL ha dado la imporLancia que requiere a esLe Lema y en SharePoinL 203 ha inLe6
grado la bsqueda de FAS1 para SharePoinL 200 denLro del ncleo de bsquedas. S, en oLras
palabras, no habr que comprar esLe producLo aparLe si queremos disruLar de sus venLajas.
Cabe decir que no es una inLegracin direcLa, sino que se ha rediseada Loda la arquiLec6
Lura, pero Leniendo en cuenLa aquellos acLores de FAS1 que proporcionan mejoras indudables.
veamos cul es la nueva arquiLecLura de bsqueda.
48
Figura -7. ArquiLecLura de 8squeda Fmpresarial en SharePoinL 203.
Componente Rastreador (CrawIer)
FsLe componenLe es responsable de rasLrear el conLenido que proviene desde disLinLas
uenLes de inormacin. lnvoca a los conecLores y manejadores de proLocolos adecuados para
cada uenLe de daLos.
41
Captulo 1. Novedades en SharePoint 2013 Preview

lmportante. podemos desarrollar nuesLros propios conecLores
personalizados Ms inormacin. Marco de conecLores de bs6
queda en SharePoinL 203.
La base de daLos de Crawl (A) se uLiliza para almacenar inormacin sobre los elemenLos
rasLreados y el hisLorial del rasLreo (Liempo del lLimo rasLreo, ld del lLimo rasLreo,.)
28 Componente de procesamiento de contenido (Content Processing)
Procesa los elemenLos rasLreados y los pasa al componenLe de indexacin. Aqu es donde
se usan los iFilLers para hacer el 4L02:MP de los documenLos. Fn SharePoinL 203 sigue pudin6
dose exLender los FormaL Handlers y crear un propio iFilLer.
Realiza una serie de procesos como. creacin de ./K1M2, deLeccin de lenguaje, exLraccin
de enLidades, 2./47/0;2, 2.1>>:MP " 91>L.:[L=:\M, eLc.
Fscribe inormacin en la base de daLos de Links (8) para ormar un Web Craph y poder
usarlo en el modelo de ranking. Fs decir, uLiliza el mismo concepLo que los moLores de bs6
queda de lnLerneL para mejorar el ranking de resulLados.
Adems, Lambin genera variaciones onLicas para la bsqueda de personas.
98 Componente de procesamiento de anaIticas (AnaIytics Procesing)
Analizan los elemenLos rasLreados y cmo los usuarios inLeraccionan con los resulLados de
bsqueda (AnalyLics ReporLing DaLabase - C). Por ejemplo, cuando un usuario ve una pgina,
ese evenLo se recoge en el FvenL SLore y esLe componenLe puede usar esLo para analizar com6
porLamienLos y mejorar el ranking consecuenLemenLe.
Podemos crear nuesLros propios evenLos personalizados.
1ambin uLiliza la base de daLos de Link (8) para combinar esLa inormacin con la inormacin
de uso y obLener as mejoras para el algoriLmo de 0LMK:MP.
ConcreLamenLe se realizan los siguienLes anlisis.
- Search Analysis
Link and Anchor 1exL Analysis
Click DisLance
42
Captulo 1. Novedades en SharePoint 2013 Preview
Search Clicks
Deep Links
1")2,& !,<$
Social DisLance
Search ReporLs
- Usage Analysis
RecommendaLions
Usage CounLs
AcLiviLy Ranking
4. Componente de indexacin (lndex Component)
Se encarga de obLener los elemenLos rasLreados y procesados, y escribirlos de orma ade6
cuada en los cheros de ndices.
1ambin recibe las consulLas de usuario en un ormaLo compaLible y comparable con el
ormaLo en que se almacenaron lo elemenLos. De esLa orma, es capaz de comparar la consulLa
del usuario con Lodos los documenLos que Liene almacenados en el ndice y devolver el con6
junLo de documenLos (resulLados) ms adecuado.
R8 Componente de procesamiento de consuIta (Query Processing Component)
Realiza el procesamienLo lingsLico en Liempo de consulLa (7/0; N01LK:MP, 2.1>>:MP,
<-10J 24199=31K:MP, expansin de la consulLa -.312L-0-2-).
ULiliza el modelo de similiLud para converLir y adapLar la consulLa en un ormaLo adecuado
y comparable con los documenLos que exisLen en el ndice.
OpLimiza la precisin y relevancia del moLor de bsquedas
Decide cuales de las "Reglas de ConsulLa" (nuevo Lrmino) son aplicables.
Devuelve a la aplicacin clienLe los resulLados de bsqueda
S8 Administracin de bsqueda (5earch Administration)
Responsable del aprovisionamienLo y cambios en la Lopologa de servidores de bsqueda.
43
Captulo 1. Novedades en SharePoint 2013 Preview
Responsable de la coordinacin de los disLinLos componenLes mencionados anLeriormenLe.
La base de daLos de Admin Search (D) almacena inormacin sobre.
- !";"&"<>,
- Crawl Rules
- Query Rules
- 4,/,<'# 5(";'(+2'$ 4,;;2/<$
- ConLenL Sources
- Crawl Schedules
- Conguraciones de AnalyLics
A nivel inormaLivo, los procesos de bsqueda son.
- P(0+ <(*+%(11&%. Servicio de Windows que supervisa los procesos NodeRunner.
- NodeRunner.exe. Proceso que conLiene los componenLes de bsqueda (uno por cada
componenLe. Crawl, ConLenL Processing, Query, lndex, AnalyLic). Puede haber ms de uno por
servidor.
- M55earch.exe. Windows Service que conLiene el componenLe de Crawl.

Consejo. Cuando esLamos en un enLorno de desarrollo, y queremos desa6
rrollar algn Lipo de aplicacin reerenLe con el uso de la bsqueda, hay que
Lener en cuenLa que el proceso "noderunner.exe" consume gran canLidad de
recursos. Para reducir un poco la canLidad de recursos que consume se puede.

. FjecuLar PowerShell.
4&+;4<C,+&#/#!7&4&$#*04&#D!*& @<&#M(#%$,*&6&D&) N&EK*&E
2. lr al archivo de conguracin c:\rogram iiles\Microso1t 01ce
Servers\15.0\Search\kuntime\1.0\noderrunner.exe.cong y cambiar el valor
#' B,(E&NK,,&#4&++!,-7 %&%(#.6!%!+>&-$O.+&7PHQHG

3. Reiniciar el servicio SharePoinL Search HosL ConLroller
44
Captulo 1. Novedades en SharePoint 2013 Preview
Fn lo que a novedades exclusivas de desarrollo se reere Lenemos Lambin una lisLa de
)"$,$=
SinLaxis de consulLa SQL eliminada
Fs decir, que ahora para lanzar una consulLa al moLor de bsquedas desde el modelo de
objeLos, Lendremos que recurrir o bien a KQL (Keyword Query Language) o bien a FQL (FAS1
Query Language), esLe lLimo se inLroduce debido a la inLegracin de FAS1 que comenLaba
anLes.
Servicio Web de 8squeda ObsoleLo
Fl Lpico servicio web hLLp.//servidor/siLio/_vLi_bin/search.asmx queda como obsoleLo en
SharePoinL 203 , esLo no signica que no uncione, ya que por Lemas de compaLibilidad con
aplicaciones ya creadas si que unciona, pero si esLs desarrollando una aplicacin que requiere
de acceso al moLor de bsquedas eviLa usar esLe servicio web y uLiliza en su lugar o bien el
modelo de objeLos clienLe o la APl RFS1 (_api).
Programacin con aplicaciones clienLe
Podemos Lener una aplicacin denLro del servidor de SharePoinL para invocar al modelo
de objeLos de servidor de SharePoinL y hacer aplicaciones personalizadas de bsqueda o que
uLilizan la bsqueda. Pero esLo en la mayora de los casos no sirve, y necesiLamos acceder al
moLor de bsqueda desde uera. Para ello, Lenemos dos posibilidades en SharePoinL 203 .
uLilizar el modelo de objeLos clienLe en caso de que nuesLra aplicacin sea .NF1 o Web basada
en llamadas de JavaScripL, o la APl RFS1 en caso de Lener una aplicacin de mvil, o de cdigo
de servidor en Lecnologas no .NF1, como Java, PHP, Cocoa, Flash, eLc. ConcreLamenLe, para
la bsqueda Lenemos muchas novedades en esLe aparLado, pero como esLn perecLamenLe
descriLas en MSDN, os comparLo los enlaces.
- Modelo de objeLos clienLe de 8squeda en SharePoinL 203.
- APl RFS1 de 8squeda en SharePoinL 203 (en ingls).
45
Captulo 1. Novedades en SharePoint 2013 Preview
D+(,$ /"0'#,#'$
FxisLen ms novedades en esLe campo como la inclusin de los operadores NFAR, ONFAR
y XRANK en el KQL. 1ambin la posibilidad de desarrollar un proceso personalizado en el pro6
cesamienLo de conLenido del indexador.
Adems de Lodo el rediseo que se ha hecho a nivel de adminisLracin y conguracin con
&"$ %12-9. &J412, ]-10J 0-912, %12-9. Q/-0=12, eLc. No es objeLivo de esLe libro comenLar esLos
Lemas, pero puede obLener ms inormacin. Novedades de 8squeda en SharePoinL 203.
Fn el capLulo 3 de esLe libro hay un ejemplo de uso del modelo de objeLos clienLe .NF1 de
bsqueda en el que se hace una consulLa al moLor de bsquedas usando la clase KeywordQuery.
DisposiLivos mviles
Fn SharePoinL 203 hay nuevas caracLersLicas reerenLes a los disposiLivos mviles, no
solamenLe en cuanLo al desarrollo, sino que Lambin hay mayor soporLe naLivo para mviles.
Podemos dividir las novedades en secciones.
lnLeraz grca
A nivel de cmo se muesLran los conLenidos de SharePoinL en un disposiLivo mvil se ha
implemenLado una visLa nueva llamada Vista contempornea, que se aade a las dos exisLen6
Les en SharePoinL 200.
L)0+$ cIsica. La misma que en SharePoinL 200.
Vista contempornea (!"#$%&'"()(* ,-%.). visLa opLimizada para H1ML5 soporLada
para Mobile lnLerneL Fxplorer 9.0 para WP 7.5 en adelanLe, Saari 4.0 para iOS 5.0 en adelanLe
y Android 4.0 en adelanLe.
L)0+$ '$*+$11$ /(-E1&+$. visLa de SharePoinL normal usada para escriLorio.
46
Captulo 1. Novedades en SharePoint 2013 Preview
Figura -8. visLas mviles disponibles en SharePoinL 203. lmagen obLenida de MSDN de MicrosoL.
Puede ver ms inormacin sobre los navegadores soporLados en SharePoinL 203.
Oce Web Apps en mviles
Fn SharePoinL 200 Oce Web Apps se insLalaba como un componenLe inLegrado en
SharePoinL, el cual orece visLas desde el navegador de escriLorio y mvil para Word, Fxcel y
PowerPoinL. Ahora, en SharePoinL 203, Oce Web Apps pasa a ser un producLo separado
que requiere insLalarse en un servidor aparLe, no obsLanLe, sigue pudindose inLegrar con
SharePoinL 203 oreciendo los visores llamados "word MobiIe Viewer", "xceI MobiIe
L)&7&%" y "PowerPoint MobiIe Viewer" los cuales esLn opLimizados para ver documenLos
de Oce desde el navegador del mvil, sin Lener que descargar el propio chero al disposiLivo
mvil.
NoLicaciones y alerLas desde lisLas de SharePoinL
SharePoinL 203 da soporLe a las noLicaciones para las aplicaciones mviles, es decir,
que cuando se aade o modica algn elemenLo de una lisLa de SharePoinL en la aplicacin
del mvil recibiremos una alerLa. Adems, Lambin se puede congurar una cuenLa de mvil
47
Captulo 1. Novedades en SharePoint 2013 Preview
en SharePoinL 203 para permiLir a los usuarios suscribirse para recibir un SMS anLe cualquier
cambio en una lisLa de SharePoinL.
No es objeLivo de esLe libro adenLrase en esLo, sin embargo, comparLo conLigo algunos
('):($"$ 2/+'('$,/+'$=
- Congurar cuenLas de mvil en SharePoinL 203.
- Congurar y usar Push NoLicaLions en SharePoinL 203 apps para Windows Phone.
ConLenido de inLeligencia de negocio desde iPad
SharePoinL 203 permiLe a los usuarios de iPad poder ver cierLos Lipos de conLenidos de
PerormancePoinL y Fxcel Services. Para proundizar en esLo, Lienes esLe recurso. visualizacin
de inormes y cuadros de mandos en disposiLivos Apple iPad.
Ceolocalizacin en aplicaciones mviles
Fn un aparLado anLerior, comenLaba las novedades de SharePoinL 203 en lo que a geolo6
calizacin y mapas se reere. Debemos decir que en las aplicaciones mviles para SharePoinL
203 Lambin Lendremos disponible el Lipo de columna o campo "9/=L.:/M". Ms inormacin
'/= Uso del Lipo de campo de ubicacin de SharePoinL 203 en aplicaciones mviles y Cmo
inLegrar mapas de SharePoinL 203 con aplicaciones de lisLa de Windows Phone.
Cmo se desarrollan aplicaciones de Windows Phone para SharePoinL 203
Para empezar, se necesiLa Lener visual SLudio con el SDK de Windows Phone insLalado. Fs
imporLanLe saber que esLa plaLaorma requiere Windows visLa SP2 o Windows 7. FsLo quiere
decir que no se puede insLalar Lodo esLe SDK de desarrollo para Windows Phone sobre un
Windows Server. As que el enLorno ideal de desarrollo sera. dos mquinas, una con SharePoinL
203 sobre Windows Server y la oLra con Windows 7 con visual SLudio y el SDK de Windows
48
Captulo 1. Novedades en SharePoint 2013 Preview
Phone insLalado. Para proundizar en esLe Lema puede ver Cmo congurar un enLorno para
desarrollar aplicaciones mviles para SharePoinL.
FCM (FnLerprise ConLenL ManagemenL)
SharePoinL 203, al igual que las versiones anLeriores, Liene un ncleo muy uerLe en lo
que se reere a la gesLin documenLal empresarial, Lambin llamada "B*+&%E%)0& <(*+&*+
:$*$=&-&*+".
Como principales novedades en esLe mbiLo Lenemos.
eDiscovery
Se habla mucho de esLa caracLersLica en SharePoinL 203, y a primera visLa lo asociamos
con algo uLurisLa que nos permiLir descubrir cierLos paLrones al esLilo de cmo se hace con
minera de daLos. Fl objeLivo real de esLa nueva caracLersLica (o al menos uno de ellos) es acLuar
como lo haca en SharePoinL 200 la caracLersLica "G&/(%60 :$*$=&-&*+", es decir, ayudar a
proLeger a Lu negocio, preservando Lodo el ciclo de vida de los 01=/0;2, que son acLivos de una
organizacin que deben ser almacenados para cumplir cierLos requerimienLos legales.
Poniendo Lodo esLo sobre la Lierra, algunas empresas necesiLan almacenar cierLa docu6
menLacin para Lenerla visible anLe algunas inspecciones legales recurrenLes. FsLa inormacin
puede que la Lengan disLribuida a lo largo de la(s) inLraneL(s) corporaLiva(s) y no hay una per6
sona que sepa dnde esL Lodo, a no ser que se dedique exclusivamenLe a ello. Aadido a Lodo
esL Lambin que esLa documenLacin se requiere manLenerla duranLe una canLidad exacLa
de Liempo, por ejemplo unos meses, un ao, dos aos,. depende del caso. 1ambin esL la
problemLica que a veces se requiere cierLa versin de los 01=/0;2, pero Lambin se quiere que
pueda ser modicado. AnLe esLo, lo lgico es pensar "pues hago una copia del documenLo y
sigo Lrabajando con ella", pero claro, dnde lo guardo, cmo aviso a Lodos los involucra6
dos vaya marrn no Fn SharePoinL 203, &>)0/(.&%F viene a cubrir Lodas esLas necesidades.
veamos un resumen de cmo lo hace.
Fl cenLro de eDiscovery
Un nuevo Lipo de planLilla de coleccin de siLios que permiLe gesLionar Lodos los casos de
eDiscovery.
49
Captulo 1. Novedades en SharePoint 2013 Preview
Proceso de eDiscovery en SharePoinL 203
Figura -9. Proceso de eDiscovery en SharePoinL
203. lmagen obLenida de 1echNeL de MicrosoL.
Cuando se recibe una peLicin de &>)0/(.&%F o de Record ManagemenL, lo que haces es
ir al siLio creado con la planLilla de Lipo eDiscovery y crear un "&>)0/(.&%F <$0&", llammosle
un "caso".
Al caso denido, se le asocia un conjunLo de ;?&*+&0 6& (%)=&*, hItros, y /"012 (docu6
menLos que queremos preservar Lal cual esLn). RespecLo a los 3/9;2, decir que en SharePoinL
200 se permiLan marcar los documenLos como 3/9;, lo cual pona ese documenLo como solo
lecLura y los usuarios no podan seguir haciendo cambios sobre ellos. Ahora en SharePoinL
203 , se inLroduce el concepLo de ")*WE1$/& #(160" que permiLen manLener una copia inLacLa
del documenLo que se ha marcado como 3/9;, pero a su vez permiLe que los usuarios puedan
seguir modicndolo. Para ello, y con el objeLivo de ahorrar Lodo el espacio en disco que se
pueda, lo que SharePoinL hace es crear una biblioLeca llamada "preservation hoId Iibrary"
(que solamenLe es visible para 2:.1 =/991=.:/M L;>:M2) y guardar en ella aquellos documenLos a
los que se les hace algunas modicaciones desde el momenLo que se marcan como ":MT49L=1
3/9;2".
Fn la parLe de del diagrama de arriba, cabe desLacar el concepLo de &1L> ^/9;102 9:' ;("6
porcionan una inLeraz comn para los documenLos enconLrados LanLo en SharePoinL, como en
Fxchange, incluso le podemos asociar una direccin de correo elecLrnico a una &1L> ^/9;10.
Siguiendo el ujo, aparLe de hacer el conjunLo de denicin de nuesLro caso de eDiscovery,
Lambin denimos la consulLa nal y cmo ser el conjunLo de documenLos, lisLas, pginas, y
50
Captulo 1. Novedades en SharePoint 2013 Preview
objeLos de Fxchange exporLados para la liberacin del caso. Adems, la exporLacin se hace
siguiendo el ormaLo de acuerdo a FDRM ($91=.0/M:= "L.L %1Z101M=1 Y/;19). Ms inormacin.
lnormacin general sobre la exhibicin de documenLos elecLrnicos y las suspensiones en
conLexLo en SharePoinL Server 203.
Hablando un poco ms de los orgenes permiLidos para esLo cabe desLacar que eDiscovery
hace uso (es requisiLo) del moLor de bsquedas de SharePoinL Search. As que, permiLe uLilizar
los "3%240$ 5"4(6%2" que son algo parecido a los "!"#$%#$ 5"4(6%" mezclados con Federacin.
Fs decir, las uenLes de daLos como carpeLas comparLidas, siLios de SharePoinL, web pblicas,
DocumenLum, eLc.
Fl objeLivo de esLe proceso, como comenLbamos anLes, es exporLar inormacin lLrada
y relevanLe para audiLores exLernos u oLro Lipo de usuarios que requiera cierLa inormacin de
nuesLra empresa basada en unos paLrones.
Por supuesLo, las caracLersLicas de %1=/0; YLMLP1>1M. de SharePoinL 200 siguen esLando
soporLadas, vea ms inormacin. Novedades en Record ManagemenL para SharePoinL 203.
51
Captulo 1. Novedades en SharePoint 2013 Preview
WCM (Web ConLenL ManagemenL)
Como bien sabemos, SharePoinL Lambin puede acLuar como sisLema de conLenidos web,
para ello se dene el Lipo de planLilla de publicacin, las caracLersLicas de publicacin, eLc. Fn
SharePoinL 203, Lenemos buenas noLicias en esLa parLe, ya que se ha hecho un gran esuerzo
en conseguir que SharePoinL cada vez sea un WCM mejor valorado. veamos las principales
mejoras.
CesLor de diseo (Design Manager)
Con SharePoinL 203, se inLroducen Lambin cambios que aecLan al diseador de
SharePoinL, es decir, las personas encargadas de crear Lodo lo reerenLe a N0LM;:MP, H1ML, CSS,
eLc. Fl gesLor de diseo proporciona un paso a paso de Lodos los arLeacLo s necesarios para
personalizar el diseo de SharePoinL. Adems, Lambin Lendremos la posibilidad de crear el
diseo desde herramienLas ms orienLadas al diseo, como Dreamweaver, y poder luego subir
los archivos H1ML y CSS a SharePoinL, de orma que SharePoinL 203 lo Lransorma en la
'$+(:)+:(, #' >L2.10 4LP12, 9LJ/-.2, eLc. vase en la Figura 20 los pasos que se realizaran
para consLruir un diseo de SharePoinL con el gesLor de diseo.
Figura -20. Pasos del
gesLor de diseo de
SharePoinL 203.
No vamos a enLrar en deLalle en esLa parLe, ya que no es el objeLivo de esLe libro. Para ms
inormacin puedes ver. Desarrollando el diseo del siLio en SharePoinL 203. No obsLanLe, en
el capLulo 3 se enLra muy en deLalle respecLo a maqueLacin y diseo denLro de las SharePoinL
Apps.
52
Captulo 1. Novedades en SharePoint 2013 Preview
SiLios dirigidos por las bsquedas
Una de las caracLersLicas de las que prescinda SharePoinL 200 es poder orienLar un
siLio pblico hacia el &<(--&%/& o comercio elecLrnico, sin Lener que hacer un Lrabajo de
desarrollo considerable. Ahora, en SharePoinL 203 , se inLroduce la planLilla de coleccin de
siLios llamada "'%(6?/+ <$+$1(=", que nos va a permiLir de orma cil que nuesLro siLio de
producLos pueda acLuar como una coleccin de elemenLos a clasicar por disLinLas caLegoras,
de los cuales vamos a querer Lener visLas de un conjunLo de producLos lLrados, as como visLa
de elemenLos parLiculares. A esLe Lipo de siLios se les llama siLios dirigidos por las bsquedas,
aunque yo los idenLico mejor como siLios de comercio elecLrnico o incluso siLios de caLlogo
de producLos.
Los elemenLos clave de esLe Lipo de siLios son.
- Pgina maestra (igual que la de publicacin).
- Diseo de pgina. DesLacamos dos.
" CaLegora. para ver un conjunLo de producLos en modo de agrupaciones o
lLrados.
" visLa de elemenLo. para ver la pgina de deLalle de un elemenLo o producLo
concreLo.
- Pginas. creadas en nuesLro siLio usando la pgina maesLra y seleccionando un diseo
de pgina de los de arriba.
- 5earch-driven web Part= '& /:'0" Content 5earch web Part que permiLe obLener
elemenLos de una consulLa al moLor de bsquedas y aplicarle un esLilo de orma cil.
" >)0E1$F ,&-E1$+&0 (o planLillas de visualizacin). doble objeLivo de conLrolar
las propiedades que se mosLrarn para los resulLados de la bsqueda y Lambin
,;&2),(&' :/ '$+2&" #' ,):'(#" , /:'$+(" N0LM;:MP.
<(*+%(1 >)0E1$F ,&-E1$+&0. para denir el esLilo y diseo del conjunLo
compleLo de producLos, as como la paginacin, ordenamienLos, eLc.
ltem DispIay TempIates. donde se denen los esLilos y diseo para un
Lem concreLo en la coleccin de producLos.
53
Captulo 1. Novedades en SharePoint 2013 Preview
Figura -20. Conguracin del
ConLenL Search Web ParL de
SharePoinL 203. lmagen obLe6
nida de MSDN.
Figura -22. ConLrol 1emplaLe para el ConLenL Search Web ParL.
lmagen obLenida de MSDN de MicrosoL
54
Captulo 1. Novedades en SharePoint 2013 Preview
Figura -23. lLem 1emplaLe para el ConLenL Search Web ParL. lmagen
obLenida de MSDN de MicrosoL.
CaLlogos y publicacin enLre colecciones de siLios
Como en Lodas las nuevas versiones, se denen nuevos Lrminos que no son diciles, pero
que si no se conoce su denicin ormal, o el objeLivo por el que ueron creados, no se llegan
a enLender del Lodo bien. FsLo me pas con el Lrmino "CatIogos" de SharePoinL 203. es
que los caLlogos son lisLas o biblioLecas comparLidas que sirven para poder publicar conLe6
nido enLre colecciones de siLio. Fn la seccin anLerior he denido la esLrucLura bsica de un
siLio dirigido por bsquedas que hace uso de un caLlogo para ello. Pero aqu junLamos dos
concepLos, por una parLe caLlogo como represenLacin visual de cara a realizar un siLio de
&<(--&%/& en lnLerneL, y por oLra parLe, caLlogo como medio para comparLir conLenido
enLre colecciones de siLios, que es a lo que me reero ahora. FsLa caracLersLica se denomina
PubIicacin Cruzada " Cross-5ite PubIishing (X5P) en ingls. FxisLe una APl especca para
esLo en SharePoinL 203.
55
Captulo 1. Novedades en SharePoint 2013 Preview
Mejoras en SFO (Search Fngines OpLimizaLion)
FsLe es uno de los aspecLos donde se han hecho ms progresos, bajo mi punLo de visLa.
La verdad es que cuando insLal SharePoinL 203 y vi la canLidad de novedades de "BV
("&$%/# B*=)*& VE+)-)J$+)(*) que Lena, me qued sorprendido. Las capacidades 5<: (web
<(*+&*+ :$*$=&-&*+) de SharePoinL 200 haban mejorado respecLo a la versin 2007, pero
en lo que a SFO se reere, se haba quedado como maLeria pendienLe. Pero Lodo llega, ya
Lenemos SharePoinL 203 que es mucho ms WCM.
Para ms inormacin acerca de las novedades en SFO, Le recomiendo visiLar el siguienLe
;"$+ #'& -&"< #'& '9:2;" #' 1*,('5"2/+ #' 1"&2#3= Novedades en SFO para SharePoinL 203.
Cambios en mulLimedia
Cuando esLamos creando pginas web que van a ser publicadas en lnLerneL, debemos ser
muy cuidadosos con el conLenido mulLimedia, concreLamenLe con el Lamao de las imgenes,
publicacin de los vdeos, inLegracin con ou1ube, eLc. SharePoinL 203 Liene mejoras en esLe
aspecLo Lambin. vemoslas.
- lmage Renditions. ConsisLe en que por cada imagen o vdeo que subimos a SharePoinL,
sLa se almacena Leniendo en cuanLa una serie de dimensiones que previamenLe el adminisLra6
dor ha esLablecido. Con esLo conseguimos que cuando inserLamos una imagen en una pgina
podamos decidir las dimensiones de sLa.
" Los Lipos de imgenes soporLados son. gi, jpg, jpeg, jpe, j, bmp, dib, png,
Li, Li, ico, wdp y hdp. los Lipos de vdeos soporLados son. wmv, wma, avi,
mpg, mp3, mp4, as, ogg, ogv, oga y webm.
- Mejoras en eI vdeo. AparLe de lo mencionado en el punLo anLerior, Lenemos Lambin
la capacidad de incluir vdeos exLernos como ou1ube y Lambin la generacin auLomLica de
.3->NML:92.
Navegacin adminisLrada (meLadaLos adminisLrados)
Uno de los cambios sorprendenLes es el Lema de la navegacin, ya que hasLa ahora
dependa de los siLios, subsiLios, pginas y algn enlace a medida que pudisemos inLroducir.
Fn SharePoinL 203, se puede congurar para que la navegacin sea adminisLrada, es decir,
medianLe -&+$6$+(0 $6-)*)0+%$6(0. FsLo no quiere decir que Lenemos que ir creando Loda
56
Captulo 1. Novedades en SharePoint 2013 Preview
la esLrucLura de navegacin a mano. Fl uncionamienLo ser parecido, ya que cuando creamos
un siLio auLomLicamenLe se nos crea el meLadaLo adminisLrado para la navegacin. vamos,
que no nos va a Lraer complicaciones, sino venLajas, ya que podremos cambiar la URL a nues6
Lro anLojo (y esLo es bueno a la hora de denir buenas URL para SFO). Adems, para el caso
concreLo de eCommerce que comenLbamos anLeriormenLe, nos viene bien, ya que podremos
hacer URL disLinLas para las disLinLas caLegorizaciones, por ejemplo, en caso de una Lienda de
elecLrodomsLicos. /rigorcos, /lavadoras, /hornos, eLc.
D+(,$ /"0'#,#'$
Adems de Lodas las mencionadas anLeriormenLe, Lenemos ms novedades a las que no
enLraremos en deLalle por quedarse uera del mbiLo de esLe libro. Pero no por ello dejaremos
de mencionarlas y dejar un enlace con ms inormacin para los curiosos.
B:'0,$ ,;&2),)2"/'$ #' $'(02)2"
" :$/#)*& ,%$*01$+)(* "&%.)/&0. Fncargado de hacer Lraduccin auLomLica.
" '(7&%'()*+ A?+(-$+)(* "&%.)/&0. Conversin de .ppL y .ppLx hacia oLros
ormaLos.
" Mejoras en Access 5ervices 20l3.
Novedades en inLeligencia de negocio para SharePoinL 203
Fn la parLe relacionada con inLeligencia de negocio Lambin hay basLanLes novedades
$"-(' +"#" ;,(, Fxcel Services, visio Services, PerormancePoinL Services, eLc. No enLrare6
mos en deLalle en ellas en esLe libro, pero si Lenemos curiosidad, Lenemos ms inormacin.
Novedades de lnLeligencia de negocio en SharePoinL 203.
57
Captulo 1. Novedades en SharePoint 2013 Preview
Conclusiones
A lo largo de la evolucin de SharePoinL, hemos ido observando como el equipo de
MicrosoL en cada versin nueva del producLo ha puesLo el oco en cierLos componenLes. Por
ejemplo, en SharePoinL 2007 el oco de novedades esLuvo de cara del desarrollador, concreLa6
menLe Lodo el sisLema de caracLersLicas (eaLures) y soluciones. Ms adelanLe, para SharePoinL
200, el principal oco ue la arquiLecLura de servicios ms escalable y LoleranLe a allos, por lo
que ue ms orienLado haca el proesional l1. FinalmenLe, en esLa nueva versin observamos
que el oco de novedades se cenLra en el usuario, puesLo que se han rediseado Lodo de cara
a seguir las guas de esLilo Windows 8 MeLro y obLener as una mejor experiencia del usuario.
Con esLo no quiere decirse que en los dems campos no hayan novedades, como habis ido
observando en esLe capLulo, s las ha habido. Lo que quiero dejar como conclusin es que
MicrosoL esL escuchando al usuario nal en esLe senLido y esLo siempre es buena noLicia para
Lodos.
A Lodo esLo aadir que Lambin Lenemos disponible una $'(2' #' A'-),$+$ mosLrando
la novedades de Oce 203 y concreLamenLe uno en el que se muesLran las /"0'#,#'$ #'
SharePoinL 203, puede verlo ,9:>.
CapLulo 2. lnLroduccin a las SharePoinL Apps
!
58
@/ '$+' ),;>+:&" #'#2),#" , &,$ /:'0,$ $EE0 de SharePoinL vamos explorar de orma Lerica
los undamenLos de esLe nuevo modelo, desde su concepcin hasLa el despliegue, pasando por
Lodos los Lipos y clases de apps que seremos capaces de desarrollar con las herramienLas que
nos orece SharePoinL 203.
Fn esLa versin, MicrosoL ha hecho el mayor esuerzo nunca visLo hasLa ahora por unicar
Lodas las plaLaormas de =/9LN/0L=:\M bajo un mismo lanzamienLo, propiciando una mayor
compeneLracin enLre Lodos sus producLos. Fmpezando por SharePoinL y acabando por Oce
y Lync, esLa vez SharePoinL esLar compleLamenLe alineado en el Liempo en ambas plaLaormas,
"#0-#% y "# '(%&-2%.
Pero anLes de esLo, comencemos siLundonos en conLexLo con una inLroduccin sobre el
desarrollo de aplicaciones para SharePoinL en sus lLimas versiones.
lnLroduccin. Fl desarrollo sobre SharePoinL a lo largo de
los Liempos
Me inici en esLo del desarrollo sobre la plaLaorma SharePoinL en la primavera del ao 2007,
en aquel momenLo la versin del producLo que esLaba en el mercado era Microsoft Ofhce
5harePoint 5erver 2007 o en su versin reducida y graLuiLa Windows SharePoinL Services
3.0, adems, Lena algn viso de inLegracin con Oce 2007 aunque limiLado y con una gran
canLidad de hndicaps por la escasa documenLacin y la gran canLidad de errores que Lena
en aquel momenLo por ser una Lecnologa joven ( joven porque era Lan solo la Lercera versin
del producLo, precedida por la 200 y la 2003, que ue la que de alguna manera senL cierLas
bases en Lorno al producLo).
Fn aquel Liempo (Liempos de SharePoinL 2007) solo haba una manera "ocial" de desa6
rrollar aplicaciones para SharePoinL, es lo que comnmenLe se llamaban 2"046-"#%2, que en
la mayora de los casos consLaban de 7%8 9)($2 y/o /(*+%(1&0 de ASP.NF1 2.0. FsLa era la
59
Captulo 2: Introduccin a las SharePoint Apps
manera de exLender esa plaLaorma de gesLin de conLenidos increblemenLe grande y, dado el
poLencial de la plaLaorma ASP.NF1, las posibilidades eran prcLicamenLe ilimiLadas. Fran Liem6
pos de programar Web ParLs "a ojo", sin uLilizar diseadores grcos (que ya exisLan para la
plaLaorma ASP.NF1 pero no para las Web ParLs), direcLamenLe desde el cdigo <Z " LY *,->,
que inyecLar cdigo H1ML con las clases Lodo mezclado. Fl modelo de despliegue y las resLric6
ciones de seguridad de la plaLaorma hacan de cada despliegue prcLicamenLe una maniobra
de guerra, en la que no hacer una copia de seguridad del servidor, eLiqueLar una rama en el
reposiLorio y dems acciones prevenLivas no eran una opcin, sino una necesidad imperiosa
para no morir en el inLenLo.
Fn cualquier caso, eran Liempos diverLidos, el problema era que no haba lmiLes, que
Locando un XML de polLicas o inserLando una DLL en la CAC del servidor podamos violar
Lodas las normas de seguridad del servidor de un banco sin darnos apenas cuenLa de lo que
habamos hecho. esLos problemas en la conabilidad de las aplicaciones, y sobre Lodo de
su ilimiLada capacidad de accin sobre un servidor en deLerminadas circunsLancias nos acab
llevando al modelo de desarrollo de SharePoinL 200.
:)/%(0(;+ "#$%&'()*+ "&%.&% 2343 "+$*6$%6[B*+&%E%)0& y :)/%(0(;+ "#$%&'()*+
@(?*6$+)(* 2343 en su versin graLuiLa, sLas son las Lres versiones que MicrosoL presenL
con el lanzamienLo de SharePoinL 200. Fn su versin 200, SharePoinL Lrajo un modelo de
desarrollo nuevo que inLenLaba paliar los problemas de seguridad que presenLaba el modelo
LN2/9-./ que presenLaba SharePoinL 2007. FsLe modelo de SharePoinL 2007, que segua siendo
un modelo perecLamenLe soporLado en su versin 200, se pas a llamar 2"046-"#%2 1% :()#;)
" '/ 2/<&E$ ZL0> 2/9-.:/M2, nombre muy acerLado ya que las soluciones desplegadas de esLa
manera Lienen capacidad para acceder a prcLicamenLe a Lodos los recursos de la granja de
servidores con la nica resLriccin de los permisos de usuario, sorLeable, por oLra parLe, por el
propio desarrollador de la solucin. FsLa parLe Lrajo grandes novedades en cuanLo al desarrollo
en capas, al n Lenamos la parLe de presenLacin separada de la lgica, como cualquier oLro
desarrollador en ASP.NF1 y Lodo gracias a las visual Web ParLs, un hbrido que consisLa en
una Web ParL que cargaba un conLrol de usuario de .NF1. Pero esLo es solo un ejemplo de las
mejoras lineales razonables que se espera de una nueva versin. Hablemos de la exLensin del
modelo de desarrollo.
1ambin hicieron su aparicin las comnmenLe llamadas 2)#18"< 2"04$-"#2 o en espaol
2"046-"#%2 1% %2')6-" )-20)1", que como bien indica el nombre ueron un nuevo Lipo de
solucin incluido en la versin 200 que ejecuLaba su cdigo (cdigo de la APl de servidor de
SharePoinL al igual que en el resLo de soluciones) en una "caja" aislada del resLo de procesos
del servidor SharePoinL. FsLas soluciones, aunque mucho ms resLricLivas en las posibilidades
de ejecucin, Lrajeron consigo una gran exibilidad en cuanLo a insLalacin y despliegue. 1an
solo subiendo un archivo de solucin a una biblioLeca de soluciones gesLionada por un admi6
nisLrador de coleccin de siLios, ya Lenas disponible dicha solucin. Adems, esLe Lipo de
soluciones son cilmenLe gesLionables por el adminisLrador de coleccin de siLios, y permiLan
60
Captulo 2: Introduccin a las SharePoint Apps
poner lmiLes a los recursos del servidor que consumen, de orma que sea prcLicamenLe impo6
sible que una solucin aislada de esLe Lipo Lire abajo Lodo el servidor.
Una de las principales razones para el uso de esLe Lipo de soluciones aisladas es la posi6
bilidad de desarrollar para SharePoinL Online incluido en Oce365, s, la Lan recurrenLe nube
pblica en su versin SharePoinL. Pero esLo ha sido claramenLe insucienLe para equiparar
&,$ 0'($2"/'$ "#0-#% (en la Nube) y "# '(%&-2% (en servidores cuya adminisLracin queda de
nuesLro lado), y esLas dierencias preLenden hacerse cada vez ms y ms pequeas con cada
versin de SharePoinL.
Adems, oLra de las razones por las que el modelo de soluciones para SharePoinL es insu6
cienLe para el acLual mercado, es la alLa de un modelo claro de comercializacin. Fs decir, el
llamado &)(=%$'0)6% 1% )'0-6)6-"#%2 que se uLiliza con un gran xiLo en diversas plaLaormas
mviles con un roLundo xiLo. FsLe modelo, en el cual una persona puede acceder a cualquier
aplicacin, descargarla e insLalarla en su sisLema sin miedo a que dae la plaLaorma gracias a
una serie de cerLicaciones que ha Lenido que pasar previamenLe a su publicacin en la Lienda
de aplicaciones. Sin un modelo robusLo como sLe en el que markeLing, calidad y disLribucin
queden compleLamenLe homogeneizadas para la plaLaorma, se haca dicil la unicacin de
plaLaormas /M9:M1 y /M 401>:21.
FsLos dos ingredienLes, el modelo de comercializacin, as como el modelo de despliegue
y ejecucin aislados es lo que nos lleva a la versin acLual del producLo SharePoinL 203 y a
su Lercer y nuevo modelo de programacin para esLa versin, el llamado !0"41 >'' ?"1%0
(liLeralmenLe, modelo de aplicaciones en la Nube).
SharePoinL 203 y su nuevo modelo de aplicaciones
SharePoinL 203 nos Lrae un modelo de aplicaciones en la Nube que nos permiLe crear
apps. Las apps para SharePoinL, desde un punLo de visLa uncional, son piezas aisladas de un6
cionalidad que exLienden las caracLersLicas de un porLal SharePoinL. Han sido concebidas para
que sean ciles de uLilizar, consuman pocos recursos del servidor que las uLiliza y sobre Lodo
para que resuelvan una necesidad especca de los usuarios.
Fn esLe conLexLo, se crea un ecosisLema para los usuarios de la plaLaorma Ofhce 365

'/
el que las disLinLas aplicaciones de Oce son exLensibles a Lravs del Ofhce 5tore (SharePoinL y
Oce Apps). Pero anLes de meLernos en la maLeria principal de esLe libro que son las SharePoinL
! ;* -9#,- E4564G *0 -%*"-01*_ )/>,#2#Y1 ""-.- Ofhce 365 a| coruro de poduco Cce que o b|er ear
*`>"$2/H-.*01* *0 "- ?$B* # B/*0 2* /021-"-0 %*2%* "- ?$B*_ (#, "# 1-01#_ >-B* 1*0*, *0 >$*01- N$* *21* 1a,./0#
a|oa erq|oba aro a| Cce ad|c|ora| cono a QF*/ V*1)*&_ xchange V*1)*& = "#$%&'()*+ V*1)*&W
61
Captulo 2: Introduccin a las SharePoint Apps
Apps, voy a explicar brevemenLe lo que son las Oce Apps y por qu las SharePoinL Apps pue6
den inLegrarse con las mismas, haciendo nuesLro Lrabajo sobre SharePoinL Apps el doble de
Lil.
Desde un punLo de visLa de un desarrollador clsico de SharePoinL, las SharePoinL Apps
podramos decir que se reducen a una Web ParL )"/ ,&<:/,$ )"/$2#'(,)2"/'$ '$;')2,&'$ #'
aislamienLo respecLo al servidor en el que esLn insLaladas. Dado que no son ms que un .0/=:./
de web, podemos acceder a alguno de sus componenLes desde oLros visores de web. aqu
es donde enLran las Oce Apps, Qu son las Oce Apps, para el usuario, desde un punLo
de visLa uncional, las Oce Apps son aplicaciones que exLendern la uncionalidad de Oce,
ya sea inLeracLuando con los daLos de su documenLo o con recursos exLernos, como pueden
ser los mapas de 8ing o cualquier oLra aplicacin web. 8ien, pero desde un punLo de visLa ms
Lcnico, Qu son en realidad, pues no son ms que navegadores
2
incrusLados en Oce con
un deLerminado acLor de orma, que muesLra aquello que nosoLros hemos desarrollado. sLa
es la razn por la que es posible inLegrar nuesLras SharePoinL Apps denLro de una Oce App
(componenLes web que se inLegran denLro de navegadores web).
Despus de inLroducirnos brevemenLe en algunos concepLos, esLamos preparados para
comenzar a conocer realmenLe el nuevo modelo de aplicaciones de SharePoinL. Fn la Figura 2
podemos ver un pequeo dibujo exLrado de MSDN que es muy ilusLraLivo, a grandes rasgos,
de cmo nosoLros como desarrolladores proveemos aplicaciones a Lravs de la Nube, en esLe
caso en orma de Oce SLore, hacindoselas llegar a los usuarios de manera LransparenLe para
nosoLros.
Figura 2-. Desarrolladores proveen aplicaciones a
+(,0E$ #' &, B:-'
OcialmenLe, a esLe modelo de aplicaciones se le ha dado el nombre de !0"41 >'' ?"1%0
debido a que undamenLalmenLe se cre para que uera posible desplegar esLe Lipo de aplica6
ciones en la Nube, LanLo desde el lado del proveedor (componenLes de la aplicacin), como del
2 !#0>,*1-.*01* $1/"/J-0 *" .#1#, %* lnternet xpIorer l0W
62
Captulo 2: Introduccin a las SharePoint Apps
lado del usuario que adquiere la aplicacin, ya que son compaLibles con la plaLaorma Oce
365, paqueLe que incluye SharePoinL Online.
Con esLe modelo en la Nube, auLomLicamenLe obLenemos Loda la versaLilidad de la plaLa6
orma AJ?%& " #' V>$+$, haciendo que nuesLras aplicaciones sean mucho ms versLiles, por
ejemplo, en cuanLo a uso de recursos de servidor. Para ser un poco ms grco, voy ilusLrar
con un ejemplo esLe Lipo de venLajas. lmaginemos una aplicacin que muesLra los daLos en
Liempo real de una carrera de Frmula . FsLa aplicacin consLara al menos de una pgina para
mosLrar los daLos, una base de daLos que los almacena y servicios web para rerescar y leer la
base de daLos de orma consLanLe. Si Lodos esLos recursos de nuesLra aplicacin esLn en un
solo servidor que Lenemos en propiedad, es muy cil que un nmero de usuarios elevado des6
borde los recursos de nuesLro servidor rpidamenLe, y si por el conLrario conLraLamos una gran
canLidad de servidores de orma permanenLe, esLaremos desperdiciando una gran canLidad de
recursos una vez que acaba la carrera. Fn esLe escenario, alojar nuesLros recursos haciendo uso
#' $'(02)2"$ A'- '/ AJ?%& y "\Q AJ?%& para la base de daLos, consumiramos solo lo que gas6
Lamos, empezando por lo mnimo (el equivalenLe a un pequeo servidor) y Azure se encargara
de auLo-provisionar servidores de orma dinmica conorme la demanda aumenLase.
Fn el ejemplo anLerior he mencionado Azure como posible plaLaorma en la Nube y SQL
Azure como posible base de daLos. Cabe desLacar que las aplicaciones son compaLibles con
la gran mayora de Lecnologas web exisLenLes, es decir, en lugar de usar .NF1 para nuesLros
servicios en Azure, podramos uLilizar PHP y una base de daLos MySQL en lugar de SQL Azure.
FsLo es posible gracias los nuevos modelos de objeLos que incluye SharePoinL 203, como
puede ser el modelo de objeLos de JavaScripL y la nueva ]$E), como han bauLizado al nuevo
,))'$" , +(,0E$ #' $'(02)2"$ GB",, ahora muchsimo ms compleLo que en la versin anLerior,
incluyendo enLre oLros acceso a los servicios de bsqueda, wcrljcw, la parLe de redes sociales,
Laxonomas, perles de usuario y 8CS
3
.
Cundo usar soluciones y cundo aplicaciones
HasLa esLe momenLo, hemos repasado la hisLoria de los desarrollos en SharePoinL y hemos
echado un visLazo inLroducLorio el nuevo modelo de desarrollo de "#$%&'()*+ AEE0. Con esLa
inormacin es posible que muchos lleguemos a una pregunLa necesaria a la hora de iniciar
un nuevo desarrollo sobre SharePoinL. Debemos uLilizar soluciones o deberamos opLar por
el nuevo modelo de aplicaciones, para arrojar un poco de luz en esLe senLido, a conLinuacin
podemos enconLrar los punLos ms represenLaLivos de cada una y as poder Lomar esLa deci6
sin dependiendo de qu necesidades Lenga el proyecLo en cuesLin.
Aplicacin (app)
# Y?0)*&00 <(**&/+).)+F "&%.)/&0_ *" 2*,H/>/# N$* 0#2 (*,./1* >#0*>1-, - %/21/01-2 Y$*01*2 %* %-1#2 %* #1,-2
9*,,-./*01-2 %* 0*<#>/# EbVL ^ b/0* VY L$2/0*22G %*2%* 89-,*:#/01W
63
Captulo 2: Introduccin a las SharePoint Apps
- Fscenarios en los que se necesiLan uncionalidades con un conLexLo muy acoLado (como
en una aplicacin de escriLorio).
- Ms exibilidad en Lecnologas, capacidades e inraesLrucLura.
- Mayor nivel de aislamienLo de daLos, procesos y usuarios.
- Solucin (wsp)
- Personalizaciones proundas.
- Despliegue de pginas maesLras, diseos de pgina, recursos.
- Fscenarios de personalizacin de adminisLracin de SharePoinL.
Fl Oce SLore
Fn esLe aparLado vamos a echar un visLazo al Ofhce 5tore y sus venLajas desde el punLo de
visLa de negocio y ciclo de vida de las apps. Fn el capLulo 4 "AdminisLracin de SharePoinL Apps"
de esLe mismo libro LraLaremos en proundidad cmo publicar y adminisLrar nuesLras aplica6
)2"/'$ '/ '& Ofhce "+(%&, as como en el caLlogo privado de nuesLra granja de SharePoinL.
Fl modelo de negocio Lipo :$%D&+E1$/&
4
Liene mlLiples venLajas a la hora de publicar
nuesLras aplicaciones. Por una parLe, nos aciliLa el conLacLo direcLo con los usuarios, homoge6
neizndolo con Lodos ellos a Lravs de canales nicos como puede ser el sisLema de valoracio6
nes de nuesLras aplicaciones, medianLe el cual podremos obLener inormacin y opiniones de
los usuarios de una orma naLural para ellos y unicada para nosoLros. Aunque en algn caso
pueda parecer conLraproducenLe, si hacemos un buen Lrabajo o bien si escuchamos a los usua6
rios, aadiendo aquellas caracLersLicas que son ms soliciLadas o corrigiendo aquellos bugs
que ms usuarios reproducen, lo normal es que seamos premiados con buenas opiniones y en
consecuencia con un aumenLo en el nmero de descargas.
$ / pa| de ee puro ne ee|e a| |qr|cado de :$%D&+E1$/& %/,*>1-.*01* >#.# Ofhce "+(%& =- N$*
*2 *" 0#.B,* %*" -$1a01/># .*,>-%# %* -("/>->/#0*2 N$* 0#2 #>$(-W
64
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-2 Oce SLore de FsLados
Unidos en ase 8eLa.
Por oLra parLe, oLra de las ventajas )-E(%+$*+&0 de publicar en el Oce SLore esL en el
ciclo de vida de las aplicaciones, muy simplicado en la siguienLe gura. Fl ciclo de vida de
desarrollo para el Oce SLore nos proporciona una orma muy 0&*/)11$ de publicar y acLualizar
nuesLras aplicaciones. Cuando desarrollamos una aplicacin, anLes de publicarla en el Oce
SLore, la empaqueLamos en ?* 0(1( $%/#).( que conLiene Lodos los recursos, no necesiLamos
crear un insLalador complejo que deba uncionar en cienLos de servidores con disLinLas con6
guraciones, solo el paqueLe que genera visual SLudio. Una vez que publicamos dicho paqueLe
(nuesLra aplicacin) a Lravs del Oce SLore, solo necesiLaremos re-publicar dicho paqueLe
para que Lodos los usuarios de nuesLra aplicacin puedan acLualizarla de orma LoLalmenLe
inLegrada con SharePoinL 203. FsLe proceso remplazar los componenLes anLeriores por los
de la nueva versin, garanLizando que nada alle duranLe dicho proceso de acLualizacin. Cabe
desLacar que lo realmenLe imporLanLe de esLe paqueLe es un archivo XML llamado -$*);&0+
que conLiene la inormacin esencial de nuesLra aplicacin (LLulo, versin.), el resLo de com6
ponenLes son los recursos (pginas H1ML, hojas de esLilos CSS.).
65
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-3. Ciclo de vida de las aplicaciones
en Oce SLore.
D+(,$ #' &,$ ventajas 9:' /"$ ;(";"()2"/, '& Ofhce 5tore $"/=
- AdminisLracin de nuesLra aplicacin
" CicIo de pubIicacin (publicacin de acLualizaciones auLomaLizadas, es decir,
cuando publicamos una nueva versin de nuesLra aplicacin, el Oce SLore se
encarga de avisar a Lodos los usuarios auLomLicamenLe de que exisLe una nueva
versin de la aplicacin que Lienen insLalada)
" Datos de anIisis (nmero de descargas, nmero de pginas visLas.)
" Q)/&*/)$-)&*+( 6& 0&%.)/)(0. Fl Oce SLore incluye un marco de Lrabajo o Z0LT
>17/0K para licenciamienLo especialmenLe orienLado a licenciar servicios y no apli6
caciones como Lal. Fl objeLivo es proLeger los daLos ms all de la propia aplicacin,
ya que esL demosLrado que no hay disposiLivo cuya seguridad sea inranquea6
ble. La propuesLa de MicrosoL en esLe senLido preLende acabar con la piraLera
a Lravs de la proLeccin de los servicios de daLos. Si Lu usuario no Liene licencia
para acceder a los daLos de un deLerminado servicio, da igual que Lenga la apli6
cacin insLalada (de orma irregular), ya que sLa resulLar inservible sin el debido
acceso a los servicios de daLos en la Nube. Para verlo ms claro, imaginemos que
hemos publicado una aplicacin que medianLe un servicio web provee inormacin
general en Liempo real sobre el campeonaLo nacional de liga de Lbol de nuesLro
pas, nosoLros publicamos dicha aplicacin a 3,99t, y con ello esperamos amorLi6
zar enLre oLras cosas el cosLe de los servidores que manLienen dicho servicio web.
Como esLamos cobrando esa canLidad, decidimos que no es necesario ningn Lipo
de auLenLicacin para acceder a los daLos, ya que el mero hecho de consumirse
66
Captulo 2: Introduccin a las SharePoint Apps
desde nuesLra aplicacin implica, en Leora, que han pagado los 3,99t por uLilizar
la aplicacin. ue ocu||a en e| momento en e| que omo|ean |a segu|oao oe| C|ce
Stoe Fn ese momenLo, mucha genLe comenzara a uLilizar la aplicacin sin pagar
previamenLe los 3,99t. Aqu es donde enLra el Z0L>17/0K de licenciamienLo que nos
permiLe validar si la peLicin de la aplicacin Liene una licencia vlida, asignada por
el Oce SLore, y en caso conLrario podemos denegar las peLiciones al servicio web.
ProLegiendo as nuesLra aplicacin Lambin desde uera del disposiLivo en el que se
ejecuLa.
" :(*&+)J$/)I*. Fl Oce SLore inLegra las cuenLas MicrosoL que Lodos uLilizamos
a menudo en oLros mercados exisLenLes como el Windows Phone MarkeLplace, el
Windows 8 SLore y Xbox Live. FsLo signica que nuesLros posibles usuarios no Len6
drn que crear cuenLas complejas ni aadir de nuevo su LarjeLa de crdiLo para
poder comprar aplicaciones.
1ipos de SharePoinL App. visualizacin y uncionalidad
Ahora que comenzamos a Lener una idea general de los concepLos ms bsicos de esLe
nuevo modelo, es el momenLo de comenzar a adenLrarnos en los deLalles. Las SharePoinL Apps
pueden Lener dierenLes ormas de represenLacin en una pgina (capa de presenLacin), con6
creLamenLe son Lres los Lipos de app que podremos desarrollar segn la orma en la que vamos
a presenLarla al usuario y el Lipo de uncionalidad que va a cubrir.
Pgina compleLa (lmmersive Full Page)
Las apps de Pgina compleLa, son aquellas que ocupan Loda la inLeraz de usuario, es decir
que Lienen una pgina maesLra propia y Lodo lo que se muesLra en panLalla cuando accedemos
a una de ellas es parLe de la app. NormalmenLe, escogeremos esLe Lipo de app cuando quera6
mos una inmersin conLexLual compleLa del usuario, por ejemplo, para una app compleja de
gesLin de vacaciones de empleados, que uLilizara presumiblemenLe varios elemenLos de la
inLeraz visual (elemenLos de navegacin, paneles con inormacin, ormularios, eLc.).
67
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-4. SharePoinL 203 App del Lipo pgina compleLa
Para acceder a esLe Lipo de apps, normalmenLe, enLraremos en los conLenidos del siLio y
seleccionaremos la app en cuesLin. Cabe desLacar que ahora Lodo son apps en los conLenidos
del siLio, LanLo las E1$*+)11$0 6& 1)0+$ como las de bibIioteca quedan Lambin represenLadas
como apps, de orma que las nuesLras quedan compleLamenLe inLegradas como un elemenLo
ms denLro del conLenido del siLio.
ParLe de pgina (App ParL)
?,$ ,;&2),)2"/'$ +2;" 5,(+' #' ;.<2/, " AEE '$%+
5
que es el Lrmino original con el que
ueron bauLizadas, quedan represenLadas en una pgina con Web ParL Z/M12 como cualquier
oLra Web ParL de SharePoinL. Por denLro, esLas App ParLs no son ms que Web ParLs que dibu6
jan un !M#$%& para mosLrar la pgina en la que represenLamos Lodos los componenLes de nuesLra
App ParL.
% ' (-,1/, %* *21* ($01#_ .* ,*Y*,/,a - *21* 1/(# %* -("/>->/#0*2 >#.# AEE '$%+ =- N$* "- 1,-%$>>/D0 *2 "/1*,-"
y pobab|enere ro erdeno ura ve|or oc|a| er epao| de ee en|ro er |a docunerac|or oc|a|.
68
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-5. SharePoinL 203 App del Lipo App ParL

NormalmenLe, la uLilizaremos para proveer al usuario de una uncionalidad ms concreLa y
reducida que con las aplicaciones de Pgina compleLa. Por ejemplo, un mapa que siLe geogr6
camenLe proveedores en uncin de los parmeLros que le pasemos a nuesLra App ParL. He
dicho parmeLros, exacLo, esLa Web ParL especial que vendr dada por la clase CIientwebPart
del modelo de objeLos, Lambin podr recibir parmeLros, ya sea a Lravs de las propiedades
del 1ool ParL como hacamos hasLa ahora con el resLo de Web ParLs, o como consecuencia de
oLras acciones del usuario o del conLexLo de la pgina. Para agregar nuesLras App ParLs a una
pgina, solo Lendremos que buscar bajo la pesLaa "lnserLar" de la cinLa de opciones, la sec6
cin "Piezas" y en sLa Lenemos la opcin "FlemenLo de aplicacin" que nos mosLrar las App
5,(+$ disponibles para inserLar en la pgina. 1ambin podemos enconLrar e inserLar las App
5,(+$ disponibles bajo la caLegora "Aplicaciones" desde el men de insercin de elemenLos
web.
Figura 2-6.
Men lnserLar en
SharePoinL 203.
Cuando uLilizamos App ParLs, no esLamos necesariamenLe limiLados a una sola App ParL
por proyecLo de SharePoinL App, realmenLe podemos complemenLar una app de Pgina com6
69
Captulo 2: Introduccin a las SharePoint Apps
pleLa, con uno a varias App ParLs 9:' *,)'/ &,$ 0')'$ #' 7:;P1. o complemenLo reducido de
nuesLra App compleLa, es decir, se complemenLan.
Accin personalizada (Ul CusLom AcLion)
Fn esLa orma de represenLacin, las apps son accedidas de la orma ms inLegrada posible,
esLo es, medianLe boLones conLexLuales en la cinLa de opciones (%:NN/M) de cualquier pgina o
bien en orma de exLensin en los mens conLexLuales de elemenLos de lisLa o biblioLeca.
Figura 2-7. SharePoinL 203 App del Lipo Ul CusLom AcLion
FsLa orma de enLrada para acceder a la uncionalidad de nuesLras apps es realmenLe inLe6
resanLe en escenarios en los que necesiLamos que nuesLras apps se ejecuLen sobre un objeto
contextuaI muy concreLo como puede ser l &*.X( por correo de una deLerminada inorma6
cin perLenecienLe a un elemenLo /(*/%&+( de una lisLa, o la $/+).$/)I* 6& $1=K* E%(/&0( 9:'
aecLa a Lodo un conLexLo como hacen el resLo de acciones de la cinLa de opciones.
Las acciones personalizadas se conguran medianLe XML, en esLe XML se conguran Lodas
las propiedades del boLn que ejecuLar la accin, as como la accin que debe acLivar. Las
acciones pueden ser desde un simple enlace con parmeLros que dirija al usuario a una pgina
concreLa, hasLa una compleja uncin JavaScripL que lleve a cabo operaciones mucho ms cos6
Losas. Fs decir, desde las acciones personalizadas solo Lendremos de nuevo cdigo de clienLe
disponible.
70
Captulo 2: Introduccin a las SharePoint Apps
1ipos de SharePoinL App. Opciones de alojamienLo
HasLa ahora, hemos hablado de que las apps esLn compuesLas por dierenLes recursos
como CSS, pginas o archivos JavaScripL, pero no hemos visLo donde pueden alojarse dichos
recursos y qu opciones Lenemos como desarrolladores a la hora de escoger dicho aloja6
mienLo. Segn donde se alojen los recursos que hacen uncionar nuesLra app, podemos hablar
de Lres Lipos de app, ms una cuarLa opcin ms compleja que seran las apps de alojamienLo
hbrido. FsLas opciones son. alojada en un proveedor ('%(.)6&%W#(0+&6
6
), auLo-alojada en
la Nube pblica (A?+(#(0+&6
7
), alojada en el propio servidor SharePoinL en el que se ins6
Lala ("#$%&'()*+W#(0+&6) y, por lLimo, una aproximacin hbrida que combina varias de las
anLeriores.
Apps alojadas en SharePoinL (SharePoinL-hosLed Apps)
Las apps alojadas en SharePoinL se insLalan direcLamenLe en un siLio de SharePoinL 203, al
que llamaremos HosL Web (el siLio que aloja). Los recursos de nuesLra app quedarn comple6
LamenLe aislados bajo un sub-siLio de esLe HosL Web, a esLe sub-siLio lo llamaremos App web
(el siLio de la app), ya que el siLio en s represenLar a nuesLra app y Lodos sus recursos.
FsLe Lipo de alojamienLo nos permiLe acceder, y por LanLo reuLilizar, Lodos los arLeacLos del
Host web en SharePoinL, ya que nuesLra aplicacin obLendr el conLexLo de dicho siLio y con
ello obLendr acceso medianLe el modelo de objeLos de JavaScripL a los disLinLos arLeacLos
del siLio. precisamenLe JavaScripL es el nico modelo de objeLos disponible para esLe Lipo de
aplicaciones, ya que no nos esL permiLido usar ningn modelo de objeLos de servidor desde
ellas.
FsLas aplicaciones se despliegan e insLalan cuando se descargan desde el Oce SLore o el
caLlogo corporaLivo de aplicaciones.
& ;-%# N$* "#2 1/(#2 %* -"#U-./*01# 9-0 2/%# 0#.B,-%#2 >#0 >#.B/0->/#0*2 (*>$"/-,*2 N$* *2 %/YK>/" N$*
2*-0 1,-%$>/%-2 %#2 H*>*2 /<$-"_ ->#.(-T# ./2 1,-%$>>/#0*2 %* *21#2 1a,./0#2 >#0 *" 1a,./0# #,/</0-"_ N$* .$=
(,#B-B"*.*01* #2 *0>#01,-,a/2 *0 #1,-2 ($B"/>->/#0*2W
' S0 -"<$0-2 #>-2/#0*2 1-.B/a0 2* "*2 9- ""*<-%# - ""-.-, 5)*6(70 AJ?%& A?+(E%(.)0)(*&6 AEE0_ *0
a|quro de |o v|deo de onac|or oc|a|e.
71
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-8. visualizacin y alojamienLo en una SharePoinL-hosLed App
Apps alojadas en un proveedor (Provider-hosLed Apps)
Las apps alojadas en un proveedor incluyen una serie de componenLes que esLn alojados
uera de la granja de SharePoinL donde la app esL insLalada, normalmenLe esLos componenLes
son alojados por el desarrollador de la propia app aunque se puede dar el caso, bien por res6
Lricciones de seguridad o bien por una cuesLin de cosLes, en los que el propio consumidor de
la app aloja esLos componenLes exLernos en servidores adminisLrados por l mismo.
FsLe Lipo de aplicaciones pueden ser alojadas LanLo en plaLaormas web remoLas de MicrosoL,
como es Windows Azure, como en oLras plaLaormas, incluidas las que no son de MicrosoL, por
lo LanLo, podemos decir que la gran venLaja de esLa aproximacin es que podemos elegir cual6
quier servicio de alojamienLo (3/2.:MP) que exisLa en el mercado. La comunicacin remoLa con el
servidor de SharePoinL se puede realizar a Lravs de alguno de los modelos de objeLos de clienLe
exisLenLes, as como a Lravs de los servicios web basados en GB", y V>$+$. La auLenLicacin en
esLe escenario puede ser o bien implemenLando el esLndar VA?+# para auLenLicacin o bien
a Lravs de la biblioLeca de JavaScripL para auLenLicacin a Lravs de dominios (_LILQ=0:4. =0/22T
;/>L:M 9:N0L0J).
Fl nico punLo que Lenemos que considerar como posible conLraparLida a la exibilidad
que nos proporcionan las aplicaciones alojadas en el proveedor, es en el caso de que nosoLros
mismos seamos los alojadores de dichos componentes externos. Fn esLe caso, Lenemos la res6
ponsabilidad de asegurar el uncionamienLo ininLerrumpido, as como de acLualizar el enLorno
que aloja los componenLes. Fn resumen, una gran exibilidad conlleva una gran responsabilidad.
FxisLen dos opciones a la hora de monLar nuesLro servidor, hacerlo denLro del )"(6
poraLivo donde se encuenLre el servidor remoLo de SharePoinL, o uera del jrewcll corporaLivo.
Dependiendo de la opcin, habr dierencias en cuanLo a las opciones que podemos uLilizar
duranLe el desarrollo. veamos esLas dos opciones.
72
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-9. Apps alojadas en un proveedor (Provider-hosLed App)
Con componenLes remoLos uera del rewall
Fn esLe escenario podemos uLilizar Java5cript " &"$ $'(02)2"$ A'- GB",FV>$+$ y la auLen6
Licacin se realiza a Lravs de la biblioLeca de JavaScripL para auLorizacin a Lravs de dominios
(6("22@1"&)-# 0-8()(*
H
).
Fn esLe caso, la responsabilidad cae compleLamenLe del lado del desarrollador a la hora de
manLener el aislamienLo enLre los daLos de los dierenLes usuarios de la aplicacin. FsLo es as
debido a que el servidor va a quedar alojado direcLamenLe en los servidores del proveedor, los
que esLn compleLamenLe conLrolados por l, por lo que LanLo la seguridad del servidor como
el aislamienLo de los daLos en el mismo corren a cargo del propio proveedor.
lmaginemos que Lenemos una aplicacin que necesiLa una base de daLos SQL Server com6
pleLa para uncionar. Fn esLe caso, posiblemenLe hablaramos de una aplicacin alojada en el
proveedor, lo que nos llevara a Lener que alojar algunos componenLes en nuesLro servidor
(siendo nosoLros el proveedor), esLa base de daLos en caso de que el clienLe no Luviera posi6
bilidad de ubicarla denLro de sus sisLemas Lendramos que Lenerla en un servidor en nuesLros
sisLemas y, por LanLo, quedara uera del jrewcll (la red corporaLiva) del clienLe.
8 )@2 /0Y#,.->/D0 2#B,* >D.# $1/"/J-, *21- B/B"/#1*>- %* c-H-8>,/(1 -N$K 911(dee.2%0W./>,#2#Y1W>#.e*0F$2e
||bay/p12(v~oce.1').ap. E*0 /0<"a2GW
73
Captulo 2: Introduccin a las SharePoint Apps
Con componenLes remoLos denLro del rewall
Fn esLe escenario podemos uLilizar el lenguaje de programacin que deseemos. Para
comunicar con SharePoinL podremos uLilizar cualquiera de los modelos de objeLos de clienLe
o bien los servicios RFS1/ODaLa, y en esLe caso, Lambin podremos uLilizar el proLocolo para
auLenLicacin y auLorizacin de apps VA?+#.
Fn esLe punLo, la responsabilidad del desarrollador queda en proveer al clienLe con un
paqueLe de insLalacin compleLo para implanLar los componenLes remoLos en su servidor
remoLo que queda denLro de la red corporaLiva (denLro del jrewcll). Fs decir, siguiendo con el
ejemplo anLerior en el que nuesLra aplicacin necesiLa una base de daLos SQL Server propia,
proveeramos al clienLe de una copia de seguridad o un insLalador que creara Lodas las bases
de daLos necesarias en el servidor que correspondiera denLro de su red corporaLiva. Fn esLe
caso, al LraLarse de un servidor propio del clienLe, la gesLin y, por LanLo, la responsabilidad
sobre la seguridad de los daLos, queda del lado del propio clienLe ya que nosoLros no Lenemos
posibilidad de conLrolar su red corporaLiva.
Apps auLo-alojadas (AuLohosLed Apps)
Las apps auLo-alojadas se alojan sobre Windows Azure Web SiLes
G
(una especie de Windows
Azure reducido). Al igual que ocurre en con las aplicaciones alojadas en el proveedor, las auLo-
alojadas quedan en un servidor remoLo uLilizando recursos de dicho servidor, pero Lambin
pueden acceder a los elemenLos del servidor SharePoinL donde se insLala la aplicacin.
Fn esLe caso, como esLamos uLilizando un sisLema de nube pblica que aprovisiona recursos
de orma auLomLica segn la necesidad, cuando nuesLra aplicacin se insLala en el servidor de
cualquier clienLe, Lodos los componenLes de Windows Azure y SQL Azure son aprovisionados
auLomLicamenLe sin necesidad de que hagamos algo cada vez. Fl problema del aislamienLo
que Lenamos con las aplicaciones alojadas en el proveedor aqu desaparece, ya que Azure pro6
vee un nuevo Windows Azure Web SiLe cada vez que se insLala la aplicacin, garanLizando as el
aislamienLo enLre los dierenLes usuarios de nuesLra aplicacin, y lo ms imporLanLe, quedando
la responsabilidad de dicho aislamienLo del lado de la propia MicrosoL.
Aadido a Lodo esLo cabe desLacar una venLaja undamenLal, inherenLe al uso de esLe Lipo
de servicios en la Nube, y es que Azure adminisLrar por nosoLros el balanceo de carga as
como el resLo de Lareas de manLenimienLo y adminisLracin que puedan necesiLar los siLios de
Azure.
( 'N$*""#2 "*>1#,*2 /01*,*2-%#2 *0 -.("/-, /0Y#,.->/D0 2#B,* *21* 2*,H/>/#_ ($*%*0 9->*,"# -N$K 911(deeAAAW
A/0%#A2-J$,*W>#.e*2F*2e9#.*e2>*0-,/#2eA*BF2/1*2e
74
Captulo 2: Introduccin a las SharePoint Apps
Figura 2-0. App auLo-alojada (AuLohosLed App)
Apps combinadas (Hybrid Apps)
Las apps combinadas no son realmenLe un cuarLo Lipo de app, sino que son la represenLa6
cin de lo que supone combinar apps aIojadas en 5harePoint con algunos componenLes en
la Nube. FsLe escenario aporLa las venLajas de ambos Lipos de despliegue, pudiendo uLilizar el
modelo de objeLos de JavaScripL desde los componenLes alojados en SharePoinL, y Leniendo
que auLenLicar medianLe OAuLh para aquellos que esLn en la Nube.
La conLraparLida de esLe escenario es que hay que analizar de orma muy exhausLiva las
comunicaciones enLre servidores, as como las resLricciones de seguridad que podemos encon6
+(,( )"/ '& 6("22@2-$% 26(-'$-#:
0
a la hora de acceder a los disLinLos componenLes medianLe el
modelo de objeLos de JavaScripL.
Aunque esLe Lipo de combinaciones pueden ser muy variadas, un posible ejemplo de app
combinada podra ser una aplicacin de gesLin de prsLamos con inLers variable. FsLa apli6
cacin podra concebirse inicialmenLe como una aplicacin de Lipo SharePoinL-hosLed dado
que podra crear Lodas las esLrucLuras de daLos en orma de lisLas denLro del propio siLio
de SharePoinL. La dierencia con una aplicacin clsica de esLe Lipo vendra cuando necesiLa6
!) \|||ped|a povee ura der|c|or nuy conp|ea de| en|ro =0/22T2:.1 2=0:4.:MP (-,- -N$*""#2 /01*,*F
2-%#2 *0 -.("/-, /0Y#,.->/D0 911(dee*2WA/f/(*%/-W#,<eA/f/e!,#22F2/1*g2>,/(1/0<
75
Captulo 2: Introduccin a las SharePoint Apps
mos obLener de orma peridica el nuevo ndice bursLil para los inLereses de los prsLamos
en los disLinLos plazos. FsLos ndices para un mejor rendimienLo los obLendramos desde un
componenLe exLerno (por ejemplo un 71N 0/91 en Azure) los almacenaramos en una base de
daLos inLermedia (que podra esLar en uno de nuesLros servidores) y nalmenLe accederamos
a dichos daLos a Lravs de un servicio web, Lambin alojado en nuesLros servidores.
FsLe servicio web sera accedido desde nuesLra aplicacin inicialmenLe concebida como
SharePoinL-hosLed y que ahora ya sera una aplicacin que combina componenLes de los dis6
LinLos Lipos de aplicacin.
76
Captulo 2: Introduccin a las SharePoint Apps
Resumiendo
Para acabar, vamos a resumir de una orma grca los Lres Lipos bsicos de alojamienLo
que hemos visLo a lo largo de las pginas anLeriores, a conLinuacin Lenemos la Labla con la
inormacin ms imporLanLe resumida. De ella sacaremos nuesLras propias conclusiones a la
hora de decidirnos por un Lipo u oLro de aplicacin desde el punLo de visLa del alojamienLo.
TIPO DE APP CARAC1FRlS1lCAS Programacin
SharePoint-hosted La ms sencilla de implemenLar y alojar. Fn ella, Lodos los componenLes de la
aplicacin se alojan direcLamenLe denLro de la granja de SharePoinL del usua6
rio. Cada insLalacin de dicho Lipo de aplicaciones queda como un sub-siLio del
mismo aislado.
FsLa opcin solo se recomienda cuando no es necesario acceder a ningn servi6
cio alojado uera de la granja de SharePoinL.
Se pueden uLilizar elemenLos del siLio de SharePoinL (lisLas, elemenLos, Web ParLs).
H1ML y
H,0,1)(2;+
Provider-hosted FsLa opcin requiere un servidor dedicado o al menos un sisLema de alojamienLo
que garanLice el aislamienLo de los daLos de los disLinLos clienLes (y sus usuarios).
Fl servidor puede esLar denLro o uera del jrewcll corporaLivo del clienLe. Fl desa6
rrollador es el responsable de proveer el servidor o bien el paqueLe de insLalacin
compleLo.
Fl desarrollador es el responsable del aislamienLo.
AporLa mayor exibilidad pero Lambin una mayor responsabilidad.
Se pueden usar elemenLos del siLio de SharePoinL (lisLas, elemenLos, Web ParLs).
H1ML, JavaScripL
)"/ ('$+(2))2"/'$
=0/22T;/>L:M y
$'(02)2"$ A'-
RFS1/OAuLh
Autohosted Similar al anLerior, pero con la dierencia de que los componenLes queda auLom6
LicamenLe aprovisionados en Windows Azure.
Los componenLes Web y SQL se aprovisionan auLomLicamenLe al insLalar la
aplicacin.
La adminisLracin y manLenimienLo de Lodos los componenLes as como el aisla6
mienLo de los daLos corre a cargo de MicrosoL.
Se pueden usar elemenLos del siLio de SharePoinL (lisLas, elemenLos, Web ParLs).
H1ML, JavaScripL
)"/ ('$+(2))2"/'$
=0/22T;/>L:M y
$'(02)2"$ A'-
RFS1/OAuLh
77
Captulo 2: Introduccin a las SharePoint Apps
Conclusiones
Hace unos aos Lrabajando en un proyecLo de exLraneL corporaLiva para una empresa
relacionada con la banca espaola, se dio el problema de que era LoLalmenLe imposible desde
el punLo de visLa de la seguridad de dicha empresa acceder a la cach global de ensamblados
(CAC) de Windows. Por esLa razn, la solucin que por aquel enLonces desarrollamos racas
dado que no poda ser concebida sin inLroducir cierLos ensamblados en la CAC. FsLa ancdoLa
que es real, y viene precisamenLe a cuenLo de la imporLancia que Liene el aislamienLo del ser6
vidor de nuesLros desarrollos.
A lo largo de esLe capLulo hemos recorrido de orma Lerica lo que supone el nuevo modelo
de desarrollo para la plaLaorma SharePoinL. Quizs lo ms signicaLivo de esLe modelo no esL
en la Lecnologa que uLiliza, y probablemenLe Lampoco en cmo se desarrollan las aplicaciones,
lo que mayor valor le debe dar esLe modelo a Lodos los desarrolladores es la capacidad de
generar nuevas oporLunidades de negocio de una orma sencilla y muy segura para los clienLes
nales de nuesLras aplicaciones. Si esLo se consigue nalmenLe, Lodas las novedades presen6
Ladas y el esuerzo que los desarrolladores hacemos cada vez que hay un cambio de modelo
como sLe, habrn valido la pena.
CapLulo 3. Desarrollo de SharePoinL Apps
!
78
Fl objeLivo de esLe capLulo es dar una visin ms en deLalle de cmo se desarrollan las
nuevas apps de SharePoinL 203.
Fn primer lugar se ver un paso a paso de cmo, parLiendo desde cero, se puede desa6
rrollar una app de SharePoinL. Luego veremos ms en deLalle aquellas buenas prcLicas de
maqueLacin y diseo con ejemplos reales. nalmenLe se vern varios ejemplos del modelo
de objeLos clienLe y RFS1 accediendo a SharePoinL desde las apps.
Mi primera app
lnLroduccin
Una vez visLos los aspecLos Lericos del nuevo modelo de aplicaciones que presenLa
SharePoinL 203 con las apps, es el momenLo de unLarse las manos haciendo aquello que
mejor saben hacer los desarrolladores. desarrollar. veremos que a la hora de desarrollar apps
;,(, SharePoinL 203, visual SLudio 202 se encarga de prcLicamenLe Lodo el Lrabajo Ledioso
de conguracin de proyecLos, dejando al desarrollador un precioso lienzo a su disposicin.
As pues, veremos cmo congurar y desarrollar nuesLra primera app basndonos en la
,(9:2+')+:(, "#$%&'()*+W#(0+&6 AEE0, y parLiendo del Lipo ms simple de app, la AEE 6&
Pgina compIeta ()>>102:I1 ^-99 SLP1 !44). Como ya sabemos, esLa arquiLecLura permiLe
#'$;&'<,( ,;;$ #'/+(" #'& ;(";2" $'(02#"( #"/#' '$+. 2/$+,&,#" SharePoinL 203. Por lo LanLo,
es ideal para una ase inicial de desarrollo y pruebas. adems, como veremos, es el modelo
"ms cercano" a lo que conocemos de SharePoinL 200, por lo que es perecLo para asenLar
conocimienLos y jar las bases del nuevo modelo de programacin que suponen las SharePoinL
apps. SeguidamenLe, veremos cmo desarrollar los oLros dos Lipos de apps disponibles, AEE
'$%+0 y de A//)I* E&%0(*$1)J$6$ (O) (-2./> !=.:/M2). De esLa manera, cubrimos Lodo el aba6
79
Captulo 3: Desarrollo de SharePoint Apps
nico de posibilidades, y podremos conocer las dierencias en cuanLo a desarrollo, de un Lipo
de app con el resLo.
Pero anLes siquiera de abrir visual SLudio 202, se requiere de una serie de conguracio6
nes en el enLorno de desarrollo a n de eviLar problemas posLeriores, y poder desplegar apps
correcLamenLe. Fmpezamos
Preparacin del enLorno de desarrollo
Lo primero a aclarar es que los pasos que se siguen a conLinuacin se aplican a una
mquina con una insLancia de SharePoinL 203 insLalada localmenLe. Lo ms cmodo y seguro
es Lener una mquina virLual aislada a n de eviLar posibles problemas en la mquina anLrin.
ConcreLamenLe, para la realizacin de los disLinLos laboraLorios que veremos, parLo de una
mquina virLual con Windows Server 2008 R2 x64 como sisLema operaLivo, SQL Server 202,
SharePoinL 203 y visual SLudio 202. Fn cuanLo a las especicaciones hardware, es imporLanLe,
para un buen rendimienLo y no desesperar, dar cuanLa mayor RAM sea posible. MicrosoL reco6
mienda para un enLorno de desarrollo un mnimo 6 C8 de RAM. Como reerencia, mi mquina
Liene 0 C8 de RAM, y 50 C8 de disco duro. 8ien hasLa ahora Seguimos.
SiLio del Desarrollador
Fl primer paso, y ms sencillo, es crear una coleccin de siLios bajo una aplicacin web
'/ SharePoinL 203 con un siLio raz creado a parLir de la nueva planLilla de siLio, "")+)( 6&
>&0$%%(11$6(%". FsLa es una planLilla especca para insLalar y probar las apps que vayamos
desarrollando. No podremos desplegar apps desde visual SLudio 200 en una coleccin de
siLios que esL consLruido con oLra planLilla.
80
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-. PlanLilla de SiLio de desarrollador.
Reservar un Dominio Aislado para las apps
Fl siguienLe paso es crucial en el desarrollo de una SharePoinL-hosLed App, y muy impor6
LanLe Lenerlo claro, ya que es clave para comprender el uncionamienLo de las SharePoinL apps.
NecesiLamos reservar el nombre para un dominio, a parLir del cual ormar las direcciones de los
siLios web que conLienen las apps. La idea es sencilla. cada app que creamos se almacena ais6
ladamenLe en su propia aplicacin web, ya se encuenLre sLe en el mismo servidor donde esL
insLalado SharePoinL (SharePoinL-hosLed Apps), en Azure (AuLohosLed Apps), o en cualquier
oLro servidor que queramos (Provider-hosLed Apps), como se ha visLo anLeriormenLe. FsLa es
precisamenLe una de las grandes venLajas de las apps, que se ejecuLan bajo un proceso aislado
de modo que en ningn caso pueden aecLar a SharePoinL, ni al servidor en s.
Fn el caso de una SharePoinL-hosLed App, quin, dnde y de qu Lipo es el siLio que se
crea Pues bien, cuando insLalamos una app, el propio SharePoinL 203 $' '/),(<, #' )(',(&'
un siLio (5Pweb), a parLir de la nueva planLilla "A''Z3 AEE ,&-E1$+&"` bajo eI sitio donde
)*0+$1$-(0 1$ $EE. FsLe siLio que se crea se conoce como App web. el siLio donde se insLala
la app, es decir, el SharePoinL "anLrin", se conoce como P(0+ AEE.
81
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-2. Relacin enLre una HosL Web y una App web.
Qu ocurre cuando insLalamos la app en disLinLos sub-siLios 8ajo cada uno de esLos sub-
siLios, se crear a su vez un siLio hijo, que es el que conLendr nalmenLe a la SharePoinL-hosLed
App. Fs decir, cada app se dene a nivel de siLio (5Pweb), y vive aisladamenLe con el resLo de
apps en su propio siLio, como sub-siLio del siLio donde se insLal. vaya Lrabalenguas!.
Hay que aclarar que una app web no se crea nicamenLe para una app del Lipo SharePoinL-
hosLed, sino que Lambin se crea en el caso de que nuesLra app, sea del Lipo que sea, conLenga
componenLes propios de SharePoinL como LisLas, Workows, CaracLersLicas (FeaLures), eLc.
Fs decir, una app del Lipo Cloud-hosLed (Provider-hosLed o AuLohosLed) puede Lener LanLo
componenLes en la Nube, como componenLes propios de SharePoinL. Fs en el caso de Lener
algn componenLe de SharePoinL, cuando se creara una app web para as poder alojarlos8
staramos entonces antes un caso mixto de aprovisionamiento de apps.
82
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-3. Caso mixLo de aprovisionamienLo de SharePoinL Apps
bajo qu direccin se crea dicho siLio Aqu es donde enLra en juego el dominio aislado
del que hablamos al principio. Por ejemplo, supongamos que Lenemos una inLraneL con la
siguienLe direccin. )$!,+#$,&+:%!&%/#&7$:*(%. Un posible dominio aislado que podemos
('$'(0,( $'(>, '& $2<:2'/+'= $//7:%!&%/#&7$:*(%: Si lo hacemos as, al insLalar una nueva insLan6
)2, #' :/, ,;; se crear un siLio para la misma con una URL similar a http{s): App-re]o-
$ROS*TEU:$//7:%!&%/#&7$:*(%, donde la cadena $ROS*TEU es un idenLicador nico que se le
asigna aleaLoriamenLe a cada insLancia de una app. FnLendiendo por insLancia, cada app que
insLalamos a nivel de siLio de SharePoinL. Fs decir, denLro una misma coleccin de siLios, pode6
mos Lener disLinLas insLancias de una app, una por cada vez que la insLalemos en cada siLio.
Por lLimo, anLes de pasar a ver cmo crear dominios aislados para las apps, queda en el
aire la cuesLin de cmo regisLrar esos dominios de manera que sean accesibles. 1enemos la
posibilidad clsica de usar un servidor de DNS, que es la opcin recomendada para un enLorno
de produccin. Pero para un enLorno de desarrollo, es perecLamenLe vlido uLilizar el chero
V(7+7 de Windows. Para alegra nuesLra, visual SLudio 202 se encarga de hacer las modica6
ciones oporLunas en el chero HosLs por nosoLros, en el momenLo de compilar y desplegar una
/:'0, ,;;8
bien, cmo reservamos un dominio aislado para las apps Con nuesLro querido amigo
Windows PowerShell. Para SharePoinL 203 se han creado una serie de nuevos comandos, o
=>;91.2 como se les conoce en Windows PowerShell. Uno de ellos es el que nos permiLe reser6
var el dominio aislado para las aplicaciones, Lal que as.
83
Captulo 3: Desarrollo de SharePoint Apps

"#$%"&'(()*+,-. /,((01+-#+(2#0,13*+4
Para lanzar esLe =>;91., y los que vienen a conLinuacin, es preciso hacerlo con un
usuario que sea adminisLrador de la granja, y Lambin iniciar la insLancia de Windows
PowerShell como AdminisLrador. 1ambin es imporLanLe, asegurarse de que los servicios
7/$E%!,DU y 7/+!%&#DU esLn levanLados. Para ello podemos lanzar los siguienLes comandos.

.#$ 0$,2$ 0(,5+-.67
.#$ 0$,2$ 0($-+#267
Por lLimo, podemos comprobar que eecLivamenLe, se ha regisLrado correcLamenLe el dominio aislado, usando
'& =>;91. C&+W"'AEE>(-$)*.
Figura 3-4. ResulLado del cmdleL CeL-SpAppDomain
Servicios y aplicaciones de servicio
8ien, ya hemos reservado un dominio para aislar las apps, pero sienLo decir, amigo lecLor,
que an quedan unos cuanLos pasos ms anLes de dar por Lerminada la conguracin del
enLorno de desarrollo. Fl siguienLe es iniciar, o ms bien, asegurarnos de que esL iniciado,
LanLo la insLancia del servicio en el servidor, como la aplicacin de servicio, que permiLe ejecu6
Lar apps localmenLe. FsLamos hablando de la aplicacin de servicio AEE :$*$=&-&*+ "&%.)/&
AEE1)/$+)(* (!49:=L=:\M ;1 Q10I:=:/ ;1 !;>:M:2.0L=:\M ;1 !442). NormalmenLe, a no ser que
84
Captulo 3: Desarrollo de SharePoint Apps
explciLamenLe hayamos desmarcado la casilla, LanLo servicio como aplicacin de servicio se
crean al lanzar el Asistente de Conhguracin de Ia Granja.
Figura 3-5. Aplicacin de servicio App ManagemenL Service en el AsisLenLe de Conguracin de la
Cranja.
Despus, debemos comprobar que la insLancia del servicio en el servidor esL iniciada
(Q.L0.1;), accediendo desde la AdminisLracin cenLral, a A6-)*)0+%$% 1(0 0&%.)/)(0 6&1 0&%.)W
6(% (YLMLP1 Q10I:=12 /M 210I10).
Figura 3-6. Comprobacin de que el servicio esL iniciado.
queda oLra aplicacin de servicio, algo ms complicada LanLo de crear (es necesario
crearla manualmenLe), como de enLender por qu es necesaria. Nos reerimos a la aplicacin
#' $'(02)2" Microsoft 5harePoint loundation 5ubscription 5ettings 5ervice AppIication
(es corLo el nombre.) Al igual que con la aplicacin de servicio anLerior, debemos asegurarnos
LanLo de que esL creada la aplicacin de servicio, como Lambin de que esL iniciada la insLan6
cia del servicio en servidor.
Para enLender por qu necesiLamos esLa aplicacin de servicio conviene Lener en cuenLa
en Lodo momenLo, que el modelo de programacin de las SharepoinL apps ue desarrollado
inicialmenLe para Oce 365. Fs por ello, que para poder Lrasladar dicho modelo a SharePoinL
203, el enLorno para ejecuLar las SharepoinL apps debe de congurarse a nivel de "inquilino"
85
Captulo 3: Desarrollo de SharePoint Apps
o como es ms conocido, +&*$*+. Fs decir, como una enLidad que conLraLa un servicio en la
Nube. FsLe concepLo de .1MLM. Liene Lodo el senLido denLro del conLexLo de Oce 365, sin
embargo, resulLa conuso que para un enLorno local, sea necesario crear y congurar "inquili6
nos" que consuman servicios. Aun as, necesiLamos emular el sisLema de .1MLM.2 '/ :/ '/+"(/"
local, y es por ello por lo que necesiLamos la anLeriormenLe ciLada aplicacin de servicio. Sin
esLe servicio, no sera posible crear .1MLM.2, lo que a su vez no hara posible insLalar y ejecuLar
apps. Cuando se crea una insLancia de Q-N2=0:4.:/M Q1..:MP2 Q10I:=1 !449:=L.:/M, el servicio
auLomLicamenLe crea un "inquilino" o .1MLM. por deecLo, que se corresponde con Lodos los
siLios y colecciones de siLios de la granja. Fs decir, imaginemos a los siLios y colecciones de
siLios de la granja, como una "persona" que ha conLraLado un servicio. Del mismo modo que
para Oce 365, una persona conLraLa un servicio, y por ello, Liene su .1MLM. )"(('$;"/#2'/+'
que le permiLe consumirlo.
Figura 3-7. Comprobacin de que la aplicacin de servicio esL iniciada.
As pues, LanLo para iniciar las dos insLancias de los servicios en servidor hacemos uso del
siguienLe comando de Windows PowerShell.

8#$%"&"#26-3#9.0$,.3# : ;<#2#=>?18#$@A(#BC1D,+#
E#F /'((G,.,H#+#.$"#26-3#9.0$,.3#4 %*2
>?18#$@A(#BC1D,+# %#F /"&"IJ032-($-*."#$$-.H0"#26-3#9.0$,.3#4K :
"$,2$%"&"#26-3#9.0$,.3#

Figura 3-8. Secuencia de comandos para iniciar las insLancias de servicio.
86
Captulo 3: Desarrollo de SharePoint Apps
Fn caso de que los servicios ya esLuvieran iniciados, obLendramos el siguienLe resulLado.
Figura 3-9. Sercvicios ya iniciados.
A conLinuacin, comprobamos que ambas aplicaciones de servicio esLn ejecuLndose,
vericando que su esLado es "Online".

8#$%"&"#26-3#9.0$,.3# : ;<#2#=>?18#$@A(#BC1D,+#
E#F /'((G,.,H#+#.$"#26-3#9.0$,.3#4 %*2
>?18#$@A(#BC1D,+# %#F /"&"IJ032-($-*."#$$-.H0"#26-3#9.0$,.3#4K

Figura 3-0. Comprobacin de que los servicios esLn ejecuLndose.
Por lLimo, queda congurar ambas aplicaciones de servicio para indicar la cuenLa
de usuario con la que van a ejecuLarse, la agrupacin de aplicaciones (!449:=L.:/M
S//9) y la base de daLos en la que se apoyan. Para la cuenLa de usuario, necesiLamos un
4<>$,$-&EI**(K,+8 Si ya Lenemos uno, nos salLamos el siguienLe paso, en el que lo creamos.

>,33*I.$ L D#;%"&G,.,H#5'33*I.$
87
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-. Creacn de una cuenLa de usuario adminisLrada (Managed AccounL).
Fl comando anLerior pedir que se inLroduzca el usuario en ormaLo "E(%!,!(WK7K$#!(" y la
conLrasea del mismo. Cuando ya Lenemos el 4<>$,$-&EI**(K,+, lanzamos los siguienLes coman6
dos secuencialmenLe.

>,33*I.$ L 8#$%"&G,.,H#5'33*I.$ /5*+-.-*MI0I,2-*4
>,((&**N"IJ"63 L D#;%"&"#26-3#'((N-3,$-*.&**N
%D,+# "#$$-.H0"#26-3#'((&**N %'33*I.$ >,33*I.$
>,((&**N'(("63 L D#;%"&"#26-3#'((N-3,$-*.&**N
%D,+# '(("#26-3#'((&**N %'33*I.$ >,33*I.$
>,(("IJ"63 L D#;%"&"IJ032-($-*."#$$-.H0"#26-3#'((N-3,$-*. E'((N-3,$-*.&**N
>,((&**N"IJ"63 ED,+# "#$$-.H0"#26-3#'(( E),$,J,0#D,+# "#$$-.H0"#26-3#)O
>(2*PA"IJ"63 L D#;%"&"IJ032-($-*."#$$-.H0"#26-3#'((N-3,$-*.&2*PA
E"#26-3#'((N-3,$-*. >,(("IJ"63
>,(('(("63 L D#;%"&'((G,.,H#+#.$"#26-3#'((N-3,$-*. %'((N-3,$-*.&**N
>,((&**N'(("63 %D,+# '(("#26-3#'(( %),$,J,0#D,+# '(("#26-3#)O
>(2*PA'(("63 L D#;%"&'((G,.,H#+#.$"#26-3#'((N-3,$-*.&2*PA
%"#26-3#'((N-3,$-*. >,(('(("63
nalmenLe, el lLimo y deniLivo paso (bueno, casi) es crear el "inquilino" o
.1MLM. del que hablamos anLeriormenLe. Fn realidad, como se ha dicho, solo necesiLa6
mos crear un nombre con el que idenLicar a la idenLidad que va a consumir los servicios
de manera local. Para ello Lenemos el siguienLe comando, el cual nos pedir conrmacin.

"#$%"&'(("-$#"IJ032-($-*.D,+# %D,+# /,((4 -ConfrmQ>R,N0#
88
Captulo 3: Desarrollo de SharePoint Apps
Congurar lnLerneL Fxplorer
Una vez reservado el dominio aislado, y congurado las aplicaciones de servicio, Lenemos
el enLorno de desarrollo casi a punLo. NuesLra primera app ya casi Liene un hogar donde nacer
y crecer eliz. FalLa un deLalle. congurar lnLerneL Fxplorer para que nos permiLa navegar hacia
el dominio que hemos creado anLeriormenLe. Para ello, seguimos las siguienLes insLrucciones.
. Abrimos la conguracin de lnLerneL Fxplorer.
2. Fn la pesLaa "Conexiones", clic en "Conguraciones LAN".
3. Desmarcamos "DeLecLar conguraciones auLomLicamenLe".
4. Seleccionamos "Usar un servidor proxy para la LAN".
5. Marcamos "No usar servidor proxy para direcciones locales".
6. Hacemos clic el boLn "Avanzado" y aadimos a la Iista de excepciones el nombre
de nuesLro dominio aislado, Lal que as. X:$//7:%!&%/#&7$:*(%.
7. Cerramos Lodo, haciendo clic en "OK".
Las conguraciones que hemos hecho, deben haber quedado as.
Figura 3-2. Conguraciones en lnLerneL Fxplorer
89
Captulo 3: Desarrollo de SharePoint Apps
ahora s, si hemos llegado hasLa aqu sanos y salvos, ya podemos decir que Lenemos un
enLorno local de desarrollo a punLo para las SharePoinL apps. Fn cualquier caso, solo recordar
que esLas conguraciones son nicamenLe necesarias para el caso de querer desarrollar apps
localmenLe. Si nuesLra inLencin es desarrollar apps para para Oce 365, MicrosoL ya nos dej
un enLorno preparado, e incluso la posibilidad de usar una herramienLa de desarrollo /M9:M1,
:)/%(0(;+ MA'A, de la cual hablaremos ms adelanLe.
Hola Mundo!
Por qu ser que Lodo programador se inicia en un lenguaje con un "Hola Mundo" Fs
acaso un vesLigio de una humanidad anLigua, que perdura en nuesLros das O Lal vez es
cierLa la leyenda urbana que en caso de no iniciarse de Lal modo, caer sobre nosoLros aos
de penuria "programacional" 8ueno, desvaros aparLe, y uere como uere, nosoLros no vamos
a ser ms originales que nadie, por lo que pueda pasar. As pues, una vez congurado nuesLro
enLorno de desarrollo, vamos a ver cmo crear nuesLra primera SharePoinL App. Con la arqui6
LecLura SharePoinL-hosLed App como parLida, crearemos en primera lugar una app de Pgina
compleLa donde simplemenLe se muesLre el inmorLal "Hola Mundo". A conLinuacin, veremos
'& ('$+" #' +2;"$ #' ,;;$` para Lener as una visin global del alcance y las posibilidades de esLe
nuevo modelo de programacin.
App de Pgina compleLa
veamos a conLinuacin un paso a paso de como crear una app de esLe Lipo.
!N0:>/2 #:2-L9 Q.-;:/ @C?@ =/>/ !;>:M:2.0L;/0888
. creamos un proyecLo nuevo. 8ajo el lenguaje de programacin con el que ms cmodo
nos sinLamos (visual 8asic en mi caso), enconLramos la nueva seccin Ojjce/ShcrePcint
AA
. FsLa
seccin conLiene planLillas de proyecLos LanLo para SharePoinL, como para Oce. Si desplega6
mos el (-), enconLramos una sub-seccin especca para las apps, y es aqu donde podemos
seleccionar "AEE ;(% "#$%&'()*+ 2349".
Fs necesario insLalar las MicrosoL Oce Developer 1ools or visual SLudio 202 (requiere la versin
Premium como mnimo). Se puede descargar medianLe la aplicacin Web PlaLorm lnsLaller 4.0, que puedes enconLrar
'/ hLLp.//www.microsoL.com/web/downloads/plaLorm.aspx. O Lambin desde el siguienLe enlace direcLo. *++;=FF
go.microsoL.com/wlink/LinklD=26869
90
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-3. PlanLilla de proyecLo para las SharePoinL Apps.
Q191==:/ML0 9L L0<-:.1=.-0L
Figura 3-4. Conguracin de la App en la planLilla de visual
SLudio 202.
91
Captulo 3: Desarrollo de SharePoint Apps
Llegamos a la panLalla de la imagen, donde debemos seleccionar, en primer lugar, el siLio
SharePoinL donde probar nuesLra app. FsLe siLio SharePoinL, como vimos en la conguracin
del enLorno de desarrollo, debe ser un siLio creado a parLir de la planLilla SiLio del Desarrollador.
1ambin especicamos la arquiLecLura de nuesLra app. Fn nuesLro caso, SharePoinL-hosLed.
%14L2/ ;1 9/2 =/>4/M1M.12 ;19 40/J1=./
Una vez creado el proyecLo, podemos ver que la planLilla de visual SLudio 202 que hemos
uLilizado para crear la SharePoinL-hosLed App, auLomLicamenLe incluye una serie de mdulos
para desplegar los archivos que la componen. ConcreLamenLe Lenemos un mdulo para las
imgenes (lmages), donde por deecLo se encuenLra el logo de la app. 1ambin un mdulo
para las disLinLas pginas (Pages). OLro para archivos CSS (ConLenL). nalmenLe un mdulo
para archivos JavaScripL (ScripLs). Nos debe llamar la aLencin que se incluye en sLe, la librera
de jQuery, LanLo en su versin reducida, como Lambin la ampliada con comenLarios, especial
para desarrollos. Fn el siguienLe capLulo dedicado a la maqueLacin y diseo de apps, esLu6
diaremos en proundidad las parLicularidades de los archivos que componen una SharePoinL-
hosLed App.
Fn deniLiva, el proyecLo que Lenemos se parece mucho al proyecLo que podramos Lener
en una solucin para SharePoinL 200. es que en esencia lo que esLamos haciendo es preci6
samenLe eso, consLruir una solucin de SharePoinL clsica, con sus CaracLersLicas (FeaLures) y
dems componenLes, para desplegarla en el siLio web, mejor dicho, la app web, que conLendr
nuesLra app.
Figura 3-5. PlanLilla de proyecLo de
visual SLudio 200 para una SharePoinL-
hosLed App.
92
Captulo 3: Desarrollo de SharePoint Apps
OM 40:>10 ;1249:1P-1
Fl proyecLo que Lenemos, an sin haber hecho nada, ya Liene una serie de archivos un6
)2"/,&'$ 410 21` que doLan de una uncionalidad por deecLo a la app para Lener un punLo
de parLida a parLir del cual seguir Lrabajando. cul es esa uncionalidad por deecLo Pues
casualmenLe, resulLa que es un "Hola Mundo" J. Por LanLo, hacemos ";149/J" del proyecLo, y si
Loda va bien, visual SLudio 202 nos premiar con un "Q-==12Z-99J :M2.L991; !44 Z/0 Q3L01S/:M.".
Una vez desplegada la app, abrimos nuesLro Q:.:/ ;1 "12L00/99L;/0, y vemos que en la
pgina de inicio hay una seccin !442 :M &12.:MP, bajo la cual aparece nuesLra recin desple6
<,#, ,;;8
Figura 3-6. Apps in 1esLing en el SiLio de Desarrollador.
Si queremos ver a nuesLra app en accin, debemos ir a "ver el ConLenido del SiLio", donde
aparece un lisLado con Lodas las apps insLaladas.
Figura 3-7. LisLado de Apps en el ConLenido de SiLio.
Haciendo clic en nuesLra app, enlazamos con la pgina por deecLo de la App C'- 9:'
Liene el comporLamienLo por deecLo de la app, y que hace las veces de la app de Accin per6
sonalizada que andbamos buscando.
93
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-8. ResulLado de la app Hola Mundo.
ya Lenemos nuesLra primera app para SharePoinL 203. Fcil, verdad ObviamenLe, visual
SLudio 202 lo ha hecho casi Lodo, por no decir Lodo. Fs ahora donde empieza realmenLe nues6
Lro Lrabajo como desarrolladores. Pero una vez que ya Lenemos la app desplegada e insLalada,
resulLa ms cil hacer las modicaciones que Lengamos que hacer, aadir los componenLes
que Lengamos que aadir, y hacer de nuesLra app el producLo que queramos que sea.
94
Captulo 3: Desarrollo de SharePoint Apps
App ParLs
Fl proyecLo que Lenemos hasLa ahora Liene la esLrucLura ms bsica que un proyecLo de
SharePoinL apps puede Lener. 1enemos nicamenLe una pgina ASP.NF1 (adems del resLo de
archivos CSS, JavaScripL, eLc.), con la que consLruimos una app de Accin personalizada8 B"
obsLanLe, denLro del mismo proyecLo, podemos agregar ms apps de los dos Lipos que res6
Lan, App ParLs y de Accin personalizada. Podemos verlos agregando un nuevo elemenLo al
proyecLo.
Figura 3-9. 1ipos de Apps disponibles en SharePoinL 203.
JunLo con elemenLos que ya conocemos como son Wcrljcws, Mdulos, Columnas de siLio,
eLc., Lenemos el elemenLo (9:1M. U1N SL0. ab/2. U1Nc que se corresponde con una App ParL, y
el elemenLo O) (-2./> !=.:/M ab/2. U1Nc.
Como ya hemos visLo anLeriormenLe, una App ParL es bsicamenLe un !"#$%& 9:' $' 2/$'(+,
en una pgina de SharePoinL, del mismo modo que inserLaramos una Web ParL. Fl conLenido
#' '$' !"#$%& es una pgina web que nosoLros especicamos. Fs imporLanLe no conundir una
App ParL con una Web ParL, ya que aunque en apariencia nal puedan ser idnLicos, son con6
cepLos compleLamenLe disLinLos que se apoyan en Lecnologas disLinLas.
Fn un proyecLo de SharePoinL Apps real, por organizacin y limpieza, puede ser ms inLe6
resanLe Lener por cada Lipo de app un proyecLo de visual SLudio 202 disLinLo. Fn nuesLro
95
Captulo 3: Desarrollo de SharePoint Apps
caso, vamos a agregar al proyecLo que ya Lenemos un nuevo elemenLo del Lipo (9:1M. U1N SL0.
ab/2. U1Nc, es decir, una App ParL, de manera que aunque en apariencia Lendremos una nica
app que insLalar, en realidad sern Lres (conLando el O) (-2./> !=.:/M !44 que aadiremos
despus).
As pues, aadimos una (9:1M. U1N SL0. y la llamamos AEE '$%+. Una vez aadido, visual
SLudio 202 nos muesLra auLomLicamenLe el chero C)&%&,+7:Y%) del mismo. Fn realidad,
una App ParL, al igual que una app de Accin personalizada (O) (-2./> !=.:/M), esL com6
puesLa nicamenLe del chero C)&%&,+7:Y%). Fs denLro de esLe chero, donde se hacen las
conguraciones, y se reerencian los archivos necesarios de los que se sirven las apps para su
uncionamienLo.
Fl aspecLo que muesLra el chero C)&%&,+7:Y%) por deecLo es el siguienLe.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[N-#.$\#J&,2$ D,+#L4G- '(( &,2$4 @-$N#L4G- '(( &,2$ @-$N#4
)#032-($-*.L4G- '(( &,2$ )#032-($-*.4
)#R,IN$\-5$<L4]VV4 )#R,IN$^#-H<$L4_VV4X
S[*.$#.$ @A(#L4<$+N4 "23L44 ZX
SZ[N-#.$\#J&,2$X
SZYN#+#.$0X

Con la eLiqueLa 8)!&,+Z&O<$#+ se insLancia la App ParL y se denen las propiedades bsi6
cas de sLa, como son el nombre, LLulo, descripcin y Lambin la anchura y alLura del !"#$%&
que lo conLiene. Para especicar el conLenido de la App ParL, o lo que es lo mismo, qu pgina
web se muesLra en el !"#$%&, esL la eLiqueLa 8(,+&,+8 Fn esLa eLiqueLa Lenemos el aLribuLo 4#*
para especicar el origen de la pgina que se mosLrar en la App ParL, y el aLribuLo 9./&I )"/
el que se dice de qu Lipo es la pgina. FinalmenLe, para dar propiedades de conguracin a
la App ParL, del mismo modo que podemos dar propiedades de conguracin a una Web ParL,
Lenemos las eLiqueLas <#(/&#+!&7F<#(/&#+..

S&2*(#2$-#0X
S&2*(#2$A
D,+#L4.*+J2#4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
96
Captulo 3: Desarrollo de SharePoint Apps
)#R,IN$a,NI#L4GI.5*4
\#J[,$#H*2AL4G-0 &2*(-#5,5#04
\#J)-0(N,AD,+#L4D*+J2#4X
SZ&2*(#2$AX
SZ&2*(#2$-#0X
Fl concepLo es sencillo, la orma de congurar una App ParL, es a Lravs de la 5K&#.4+#!,-.
los parmeLros de conguracin que van en ella, los denimos en el documenLo C)&%&,+7:Y%)
)"/ &,$ '+29:'+,$ <#(/&#+!&7F<#(/&#+.. Podemos aadir LanLas propiedades de conguracin
como queramos. Por cada propiedad, de manera similar a las propiedades de conguracin de una
Web ParL, especicamos un nombre y el Lipo, enLre cuaLro Lipos posibles. cadena de LexLo (7+#!,-),
enLero (2,+), lgico (O(()) y enumerado (C,K%). 1ambin especicamos si se requieren permisos de
diseador para ediLar la propiedad, el valor por deecLo de la misma, y el grupo en el que ubicar la
propiedad denLro del panel de conguracin de la App ParL. , por lLimo, el nombre de la propie6
dad denLro del grupo mencionado.
Una vez Lenemos las propiedades denidas, debemos volver a la eLiqueLa 8(,+&,+, para
agregar las propiedades que hemos denido, en la 5K&#.4+#!,- de la direccin de la pgina
que esLablecimos en el aLribuLo 4#*. Para ello, debemos seguir el siguienLe ormaLo prede6
nido[ \/#(/RP]/#(/R]^$%/_/#(/SP ]/#(/S]^$%/_ /#(/TP]/#(/T]8 Por lo que segn Lodo lo
dicho, el chero C)&%&,+7:Y%) para nuesLra primera App ParL, debe quedar de la siguienLe
manera (podemos subsLiLuir Lodo el conLenido, por el que sigue).

STP+N 6#20-*.L4U1V4 #.3*5-.HL4b@c%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[N-#.$\#J&,2$ @-$N#L4^*N, GI.5*4 D,+#L4^*N, GI.5*4
)#032-($-*.L4G- (2-+#2 '((&,2$d14 X
S[*.$#.$ "23L4e,((\#Jb2NZ&,H#0Z'((&,2$1,0(PT.*+J2#L?.*+J2#?4
@A(#L4<$+N4ZX
S&2*(#2$-#0X
S&2*(#2$A
D,+#L4.*+J2#4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4GI.5*4
\#J[,$#H*2AL4G-0 &2*(-#5,5#04
\#J)-0(N,AD,+#L4D*+J2#4X
SZ&2*(#2$AX
SZ&2*(#2$-#0X
SZ[N-#.$\#J&,2$X
SZYN#+#.$0X
97
Captulo 3: Desarrollo de SharePoint Apps
Si nos jamos, en el aLribuLo 4#* #' &, '+29:'+, 8(,+&,+, esLamos haciendo reerencia a
&, ;.<2/, I//<$#+:$7/Y, que an no hemos creado. Por lo que el siguienLe paso es crear dicha
pgina, denLro del mdulo <$-&7. Fn esLa pgina, lo que haremos es muy sencillo. analizamos la
5K&#.4+#!,- en busca del parmeLro "nombre". Una vez Lenemos el valor del mismo, lo inserLa6
mos en una eLiqueLa B7/$,G al principio de la pgina. Fl resulLado ser que la App ParL, nos dar
un "Hola Mundo!" por deecLo, o bien conguramos la propiedad "nombre" denLro del panel
de conguracin, para obLener un saludo personalizado.

Sfg `#H-0$#2 1agprefx="Webartages"
D,+#0(,3#L4G-32*0*R$1"<,2#&*-.$1\#J&,2$&,H#04
'00#+JNAL4G-32*0*R$1"<,2#&*-.$h a#20-*.LUi1V1V1Vh [IN$I2#L.#I$2,Nh
&IJN-3j#A@*k#.LlU#mJ3#UUU#m7_m34 fX
S\#J&,2$&,H#0Q'NN*;c2,+-.H 9)L4,NN*;R2,+-.H4 2I.,$L40#26#24 ZX

S<$+NX
SJ*5AX
Sd%% [*.$#.#5*2 5# N,0 (2*(-#5,5#0 %%X
S<UXn^*N, S0(,. -5L4.*+J2#4XSZ0(,.XdSZ<UX
Sd%% G#5-,.$# o,6,"32-($h 3*.0IN$,+*0 N*0 6,N*2#0 5# N, pI#2A "$2-.H A
+*0$2,+*0 N*0 6,N*2#0 %%X
S032-($ N,.HL4q,6,032-($4X
6,2 (,2,+0 L 5*3I+#.$1b`r10(N-$B/T4CsUt10(N-$B/u4Cv
6,2 .*+J2#v

ZZ 9$#2,$-6,+#.$# #P$2,#+*0 N*0 6,N*2#0 5# N, pI#2A "$2-.Hh A
ZZ ,N+,3#.*0 0I 6,N*2 #. 6,2-,JN#01
R*2 B6,2 - L Vv - S (,2,+01N#.H$<v - L - w UC=
6,2 (,2,+ L (,2,+0s-t10(N-$B/L4Cv
-R B(,2,+sVt LL /.*+J2#4C .*+J2# L 5#3*5#b`9[*+(*.#.$B(,2,+sUtCv
K

ZZ c-.,N+#.$#h JI03,.5* N, #$-FI#$, 3*22#0(*.5-#.$# , (,2$-2 5# 0I
ZZ 9)h A N# -.0#2$,+*0 #N $#P$* 3*22#0(*.5-#.$#1
5*3I+#.$1H#$YN#+#.$OA95B/.*+J2#4C1-..#2@#P$ L .*+J2#v
SZ032-($X
SZJ*5AX
SZ<$+NX
98
Captulo 3: Desarrollo de SharePoint Apps
Ahora ya lo Lenemos Lodo, por lo que solo nos queda volver a desplegar el proyecLo y
probar nuesLra App ParL. Una vez hecho, vamos a cualquier pgina que Lenga elemenLos de
publicacin. La pgina por deecLo del SiLio de Desarrollador nos vale. FdiLamos la pgina, y
bajo la cinta contextuaI (%:NN/M), nos vamos a la pesLaa "lNSFR1"` y vemos que adems de
;"#'( 2/$'(+,( C'- 5,(+$` como hasLa ahora en las ediciones anLeriores de SharePoinL, Lene6
mos Lambin la opcin de inserLar App ParLs.
Figura 3-20. 8oLn para inserLar App
ParLs desde la cinLa conLexLual (Ribbon)
Fn el lisLado que aparece debemos enconLrar nuesLra recin creada App ParL, con el nom6
bre de "Hola Mundo".
Figura 3-2. LisLado de App ParLs disponibles en un siLio de SharePoinL 203.
Lo aadimos, y auLomLicamenLe lanzamos un cordial saludo al "mundo mundial".
Figura 3-22. ResulLado de nuesLra primera App ParL
Si somos curiosos (y lo somos), podemos indagar un poco en el uncionamienLo inLerno
de la App ParL. MedianLe las herramienLas del desarrollador de lnLerneL Fxplorer (@42 ;,(, &"$
99
Captulo 3: Desarrollo de SharePoint Apps
amigos), podemos comprobar cmo eecLivamenLe, una vez inserLamos la App ParL en la pgina,
lo que realmenLe esLamos inserLado es sencillamenLe un !"#$%& que muesLra el conLenido de
una pgina exLerna.
Figura 3-23. iFrame generado por una App ParL!
Adems, en la URL de la propiedad 4#* #'& !"#$%&, vemos como auLomLicamenLe se
orma la 5K&#.4+#!,- con las propiedades de conguracin que especicamos,
<$$(QZZ,((%JWi]iW5l]_#5lV1,((015#60-$#1N*3,NZ^*N,GI.5*'((Z&,H#0Z'((&,2$1,0(PT.*+J2#LGI.5*
Lo lLimo que nos queda por ver es el panel de conguracin de la App ParL, para com6
probar que los parmeLros de conguracin que especicamos en el chero C)&%&,+7:Y%), eec6
LivamenLe aparecen bajo el grupo y nombre que indicamos. Adems, segn la lgica que
esLablecimos en la pgina que reerenciamos en la App ParL, cambiando la propiedad ,(%O#&,
cambiaremos el desLinaLario del saludo. Para ello, ediLamos la pgina de nuevo y ediLamos la
App ParL, del mismo modo que ediLaramos una Web ParL.
100
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-24. Panel de congura6
cin de la App ParL.
vemos, como a parLe de las propiedades que podemos enconLrar en cualquier Web ParL, y
que son comunes con una App ParL, Lenemos una seccin con el grupo y las propiedades que
denimos en el C)&%&,+7:Y%). Si por ejemplo, cambiamos el valor de la propiedad `(%O#&,
deberamos cambiar el desLinaLario del saludo, segn la lgica que implemenLamos en la
pgina.
Figura 3-25. ResulLado de la App ParL una vez modicadaos los parmeLros de
conguracin.
hasLa aqu llegamos con la conguracin y desarrollo de nuesLra primera App ParL. Como
vemos, es un ejemplo muy sencillo, pero sienLa las bases de uLuros desarrollos ms complejos.
Como se puede vislumbrar, el poLencial de las App ParLs es incrusLar en pginas SharePoinL
101
Captulo 3: Desarrollo de SharePoint Apps
conLenido de cualquier Lipo, desarrollado con prcLicamenLe cualquier Lecnologa, y con la
venLaja de aislar a SharePoinL de Lodo el procesamienLo.
Ul CusLom AcLions Apps
Para Lerminar de ver y "Locar" Lodos los Lipos de apps que hay disponibles, nos alLa hacer
nuesLro parLicular "Hola Mundo" con una Ul Custom Action App. FsLe Lipo de app permiLe
crear boLones personalizados en la cinLa conLexLual, y Lambin en el men desplegable de un
elemenLo de lisLa. Si hemos hecho alguna personalizacin de esLe Lipo para SharePoinL 200,
la orma de proceder es prcLicamenLe la misma. Una vez agregado al proyecLo de SharePoinL
App un elemenLo del Lipo O) (-2./> !=.:/M ab/2. U1Nc, auLomLicamenLe visual SLudio 202
nos muesLra el chero C)&%&,+7:Y%) del mismo, al igual que ocurra con las App ParLs. DenLro
de dicho chero crearemos los boLones personalizados para la cinLa conLexLual, o los enlaces
en el men desplegable, reerenciando siempre sLos a pginas exLernas donde se realiza la
lgica de negocio que queramos. Para implemenLar dicha lgica, podemos usar parmeLros
del elemenLo asociado con el boLn personalizado, como su lD y LLulo, la lisLa o siLio al que
perLenece, eLc. 8ueno, como dira aquel, "no lo explico, lo hago".
volvemos a aadir un elemenLo al proyecLo que Lenemos, esLa vez del Lipo Ul CusLom
AcLion App ab/2. U1Nc. Le damos como nombre 8K7+(%I*+!(,. AuLomLicamenLe se abre el
chero C)&%&,+7:Y%) asociado. Fl aspecLo del mismo es el siguienLe.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
Sd%% '550 ,. Y[O 3I0$*+ ,3$-*. $* , N-0$ -. $<# <*0$ ;#J 0-$#1 %%X
Sd%% [2#,$# , .#; 3I0$*+ N-0$ ,.5 ,55 , .#; -$#+ $* -$1 @<-0 3I0$*+
,3$-*. ;-NN J# *. $<# .#; -$#+x0 Y[O %%X
S[I0$*+'3$-*. 95L4RV53,i5V%#5m5%7W73%,7#7%Vm37RWm#RJ]y1^*0$\#J[I0$*+'3$-*.U4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVV4
r*3,$-*.L4Y5-$[*.$2*NON*3k4
"#FI#.3#L4UVV4
@-$N#L49.6*k# z^*0$\#J[I0$*+'3$-*.Ux ,3$-*.4X
Sd%%
b(5,$# $<# b2N J#N*; $* $<# (,H# A*I ;,.$ $<# 3I0$*+ ,3$-*. $* I0#1
"$,2$ $<# b`r ;-$< $<# $*k#. e2#+*$#'((b2N -R $<# (,H# -0 -. ,
0#(,2,$# ;#J (2*q#3$h I0# e,((\#Jb2N -R (,H# -0 -. $<# ,(( (2*q#3$1
%%X
Sb2N'3$-*. b2NL4e2#+*$#'((b2NZ)#R,IN$1,0(PT="$,.5,25@*k#.0K4 ZX
SZ[I0$*+'3$-*.X
SZYN#+#.$0X
102
Captulo 3: Desarrollo de SharePoint Apps
Por medio de la eLiqueLa 8K7+(%I*+!(, denimos una accin personalizada con sus par6
meLros, del mismo modo que haramos en SharePoinL 200. Por deecLo, Lenemos una Accin
personalizada asociada al men desplegable (CE!+8(,+#()=)(*), para cada elemenLo de una
lisLa genrica. para denir la accin que se lleva a cabo, esL la eLiqueLa L#)I*+!(,, al igual
que en SharePoinL 200. Como vemos, la orma de Lrabajar es idnLica con respecLo a la versin
anLerior de SharePoinL. La novedad en esLe punLo, es que en el aLribuLo L#) podemos ormar
parmeLros en la 5K&#.4+#!,-, cuyo valor provenga de una palabra reservada, que indica inor6
macin sobre el siLio donde esL alojada el boLn. FsLo lo veremos una vez hayamos susLiLuido
el conLenido del chero C)&%&,+7:Y%) ;"( '& 9:' $2<:'=

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[I0$*+'3$-*.
95L47llVW3V,%iVi,%75JU%J7_7%mWm]_WJl,JRJ1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4Y5-$[*.$2*NON*3k4
"#FI#.3#L4UU74
@-$N#L4n^*N, GI.5*d4X
Sb2N'3$-*. b2NL4e,((\#Jb2NZ&,H#0Z[I0$*+'3$-*.1<$+NT^*0$b2NL=^*0$b2NKu,+(v
"*I23#L="*I23#Ku,+(vr-0$b`r)-2L=r-0$b2N)-2Ku,+(v
r-0$9)L=r-0$95K
u,+(v9$#+b`rL=9$#+b2NKu,+(v9$#+9)L=9$#+95K4ZX
SZ[I0$*+'3$-*.X
S[I0$*+'3$-*. 95L4li55_75m%V3Uy%7#Ri%J#V,%Ri_#5V#y_VR,1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4[*++,.5b91`-JJ*.4
"#FI#.3#L4UUi4
@-$N#L49.6*k# 3I0$*+ ,3$-*.4X
S[*++,.5b9YP$#.0-*.X
SCommandu10efntonsX
SCommandu10efnton r*3,$-*. L
/`-JJ*.1)*3I+#.$01G,.,H#1[*.$2*N01?3<-N52#.4X
SOI$$*.
95L4`-JJ*.1r-J2,2A1[*..#3$1&2*(#2$Aa-#;#24
'N$L4n^*N, GI.5*d4
"#FI#.3#L4UVV4
[*++,.5L49.6*k#?[I0$*+'3$-*.4
r,J#N@#P$L4n^*N, GI.5*d4
@#+(N,$#'N-,0L4*U4
103
Captulo 3: Desarrollo de SharePoint Apps
9+,H#]_JA]_L4Z?N,A*I$0ZUiZUV]]Z-+,H#0ZR*2+,$+,(]_P]_1(.H4
9+,H#]_JA]_r#R$L4%U]l4
9+,H#]_JA]_@*(L4%U]l4ZX
SZCommandu10efntonX
SZCommandu10efntonsX
S[*++,.5b9^,.5N#20X
S[*++,.5b9^,.5N#2
[*++,.5L49.6*k#?[I0$*+'3$-*.4
[*++,.5'3$-*.L
/e,((\#Jb2NZ&,H#0Z[I0$*+'3$-*.1<$+NT^*0$b2NL=^*0$b2NK u,+(v
"*I23#L="*I23#Ku,+(vr-0$b`r)-2L=r-0$b2N)-2Ku,+(v
"#N#3$#5r-0$9)L="#N#3$#5r-0$95Ku,+(v
"#N#3$#59$#+9)L="#N#3$#59$#+95K4ZX
SZ[*++,.5b9^,.5N#20X
SZ[*++,.5b9YP$#.0-*.X
SZ[I0$*+'3$-*.X
SZYN#+#.$0X
Denimos dos Acciones personalizadas, una para el men despegable de un elemenLo de
una biblioLeca de documenLos (nLese el N&-!7+#$+!(,23PHRQRH), y oLro para el mismo elemenLo,
pero en esLe caso en orma de boLn en la cinLa conLexLual.
Para ambos casos, la orma de proceder sigue siendo la misma con respecLo a SharePoinL
200. Solo cambia el hecho que comenLbamos anLeriormenLe, de poder enviar parmeLros
reerenLes al elemenLo que desencadena la accin, en la 5K&#.4+#!,- #' &, ;.<2/, 9:' )"/+2'/' &,
lgica. ConcreLamenLe, si nos jamos en el valor del aLribuLo L#) #' &, '+29:'+, L#)I*+!(,, vemos
9:' '/ &, 5K&#.4+#!,- '$+./ &,$ $2<:2'/+'$ ;,&,-(,$ ('$'(0,#,$=
V(7+K#) -> URL del siLio donde esL insLala la app.
4(K#*& -> URL de la pgina desde donde se inicia la Accin personalizada.
6!7+L#)3!# W^ URL relaLiva con respecLo al siLio de la lisLa.
4&)&*+&E6!7+23 W^ lD de la lisLa que conLiene el elemenLo que inicia la Accin.
4&)&*+&E2+&%23 W^ lD del elemenLo que desencadena la Accin personalizada.
FinalmenLe, solo queda crear la pgina que conLiene la lgica, la cual se esL reerenciando
desde el chero C)&%&,+7:Y%), en la ciLada eLiqueLa L#)I*+!(,. Para ello, una vez ms, denLro
del mdulo SLP12 aadimos una pgina, pera esLa vez, de H1ML bsico, en vez de ASP.NF1.
Llamamos a la pgina 8K7+!(,I*+!(,8#+-1, y le damos el siguienLe conLenido.
104
Captulo 3: Desarrollo de SharePoint Apps

Sd){[@|&Y <$+NX
S<$+N P+N.0L4<$$(QZZ;;;1;]1*2HZUmmmZP<$+N4X
S<#,5X
S$-$N#XG- '33-}. &#20*.,N-~,5, B[I0$*+ '3$-*.CSZ$-$N#X
SZ<#,5X
SJ*5AX
S<_X&,2+#$2*0 5# N, pI#2A "$2-.H (,0,5*0 (*2 N, '33-}. (#20*.,N-~,5,
B[I0$*+ '3$-*.CQSZ<_X
Sd%% r-0$,5* 5# (,2+#$2*0 5# N, pI#2A "$2-.H %%X
SIN -5L4F0(,2,+04ZX
S032-($ N,.HL4q,6,032-($4X
6,2 (,2,+0 L 5*3I+#.$1b`r10(N-$B/T4CsUt10(N-$B/u4Cv
6,2 (,2,+0^@Gr L /4v
ZZ YP$2,3$0 $<# (,2,+#$#20 R2*+ $<# FI#2A 0$2-.H1
ZZ &,2,+#$#20 ,2# b`r#.3*5#5h 5#3*5# R*2 2#.5#2-.H
ZZ -. (,H#1
R*2 B6,2 - L Vv - S (,2,+01N#.H$<v - L - w UC
=
(,2,+0s-t L 5#3*5#b`9[*+(*.#.$B(,2,+0s-tCv
(,2,+0^@Gr wL /SN-X4 w (,2,+0s-t w /SZN-X4v
K
ZZ `#.5#2 (,2,+#$#20 -. $<# (N,3#<*N5#21
5*3I+#.$1H#$YN#+#.$OA95B/F0(,2,+04C1-..#2^@Gr L (,2,+0^@Grv
SZ032-($X
SZJ*5AX
SZ<$+NX
Como se ve, esLamos usando H1ML 5 bsico, con Lodo lo que ello supone en cuanLo a
poder uLilizar Lodas sus nuevas eLiqueLas de video, audio, eLc. FxLraemos los parmeLros de la
5K&#.4+#!,-, y medianLe JavaScripL los inserLamos en la pgina con su nombre y valor.
As pues, volvemos a desplegar el proyecLo desde visual SLudio 202, para acLualizar nues6
Lra app. Una vez hecho, nos dirigimos a alguna biblioLeca de documenLos, y ser necesario que
aadamos algn documenLo a la misma. Una vez lo hagamos, podremos ver los siguienLes
elemenLos dese la inLeraz de usuario.
105
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-26. NuesLra App en la cinLa conLexLual.
Fl resulLado nal es que ambos boLones enlazan con la siguienLe pgina, donde se esLn
mosLrando parmeLros de la lisLa en cuesLin.
Figura 3-28. ResulLado de nuesLra app de Accin personalizada.
106
Captulo 3: Desarrollo de SharePoint Apps
MaqueLacin y diseo de apps
lnLroduccin
@/ '& ;(")'$" #' #'$,(("&&" #' :/, ,;; ;,(, SharePoinL 203, as como prcLicamenLe para
cualquier oLra plaLaorma, sucede que muchas veces son Lan imporLanLes los engranajes del
inLerior, como el envolLorio exLerior con el que se presenLa. F incluso dicho envolLorio puede
resulLar LanLo o ms cosLoso de llevar a cabo. Pero no debemos olvidar, que si bien 1*,('5"2/+
203 puede ser muchas cosas, la base es la de una plaLaorma de colaboracin basada en la
Web. Por ello, el desarrollador SharePoinL 203 debe saber hacer LanLo que los engranajes de
su Web ParL no paren de girar, como que la presenLacin luzca bien. Fs la conocida dualidad
desarrollador/diseador (e incluso adminisLrador) con la que el programador SharePoinL debe
saber convivir.
Fn el marco en el que nos enconLramos, a saber, el desarrollo de SharePoinL apps, sLas,
aunque si bien pueden ser orienLadas a un caLlogo inLerno empresarial donde Lal vez se le
presLe menos imporLancia a la presenLacin en lugar de la uncionalidad, lo ms comn es
que cuando se desarrolla una app, se haga pensado en llegar al mayor nmero de usuarios
posibles. Usuarios, que pueden Lener su porLal SharePoinL "de cualquier manera". por ello, se
debe proveer a nuesLra app de mecanismos para permiLir que "encajen" y se adapLen al mayor
nmero de enLornos posibles. Pudiera ser la app que por s misma resolviera los misLerios
del Universo, que si Loda maana al acceder a nuesLro SharePoinL Luviramos la sensacin
de haber insLalado un "parche", esLaramos allando en algo Lan imporLanLe, como es que sea
"apeLecible" (se me ocurre paLenLar "appeLecible") para el usuario.
Adems, para conseguir adapLar y conseguir que nuesLra app encaje con los esLilos del
enLorno que la rodea debemos Lener muy en cuenLa, ya que deLerminar nuesLra orma de
proceder, si nuesLra app va a esLar alojada en el propio SharePoinL (SharePoinL-hosLed), o por
el conLrario, va a esLar alojada en la Nube (Cloud-hosLed). La disLincin se debe a que segn
donde se aloje la app, podremos uLilizar para su desarrollo unas Lecnologas web u oLras. Por
ejemplo, para las SharePoinL-hosLed, como ya hemos visLo en capLulos anLeriores, SharePoinL
203 crea un siLio (un SPWeb) para alojar la app. FsLe siLio se crea a parLir de una nueva plan6
Lilla de siLio especca para apps, la cual aplica por deecLo en el siLio raz, una nueva pgina
maesLra de la que hablaremos ms Larde. Fs decir, Lecnologa ASP.NF1 que ya conocemos de
versiones anLeriores de SharePoinL, por lo que las consideraciones a Lener en cuenLa en cuanLo
a cmo aplicar esLilos, diseos, maqueLado eLc., en su mayora ya las conocemos. Por el con6
Lrario, cuando LraLamos con apps del Lipo Cloud-hosLed, no Lenemos limiLacin en cuanLo qu
Lecnologa usar para maqueLar y disear la app. Podemos usar LanLo PHP, H1ML bsico, ASP.
NF1 como cualquier oLra Lecnologa con la que nos sinLamos cmodos (lo cual amplia enorme6
menLe el rango de desarrolladores capaces para desarrollar apps para SharePoinL 203).
107
Captulo 3: Desarrollo de SharePoint Apps
Por LanLo, las opciones para maqueLar y diseas apps, son prcLicamenLe ilimiLadas. Fn
ambos casos, SharePoinL 203 proporciona herramienLas al desarrollador para conseguir cum6
plir con el objeLivo de que nuesLra app, a parLe de uncional sea boniLa. adems, que sea
boniLa, respeLando lo boniLo que ya es el siLio que la conLiene.
vuelven los iFrames
Fn realidad nunca se ueron. Pero s han recobrado uerza. F incluso pudiera pensar alguno
que es un nuevo invenLo de la empresa de la manzana. Pero no es as. Los !"#$%&7 &&'0,/ '/
el mundo del desarrollo web prcLicamenLe desde los inicios. Pero si bien hace una dcada, se
consideraba una mala prcLica su uso, hoy en da es pieza clave en la arquiLecLura de apps de
SharePoinL 203, as como de oLras arquiLecLuras de apps, como la de Facebook. si lo analiza6
mos, Liene Lodo el senLido del mundo que sea as. Fn el caso de SharePoinL 203, ya sabemos
que las aplicaciones "viven" compleLamenLe aisladas del siLio SharePoinL donde se insLalan.
J/)&:$" &,$ ,;;$ del Lipo SharePoinL-hosLed, Lienen su propio enLorno con un dominio aislado.
De qu oLra orma bamos a poder "incrusLar" el conLenido de un siLio web aislado denLro de
oLro Fs cierLo, Lal vez exisLan oLros mecanismos, mejores o peores, como pudiera ser el uso
de JavaScripL. Pero la curva de aprendizaje con !"#$%&7 es prcLicamenLe nula, ya que es un
elemenLo que en mayor o menor medida Lodo desarrollador conoce.
No obsLanLe, los !"#$%&7 siguen presenLando limiLaciones, LanLo a nivel de seguridad,
como de inLegracin con el enLorno raz a Lener cuenLa. Por ejemplo, Lenemos la problemLica
de redimensionar el Lamao del !"#$%& segn la resolucin de panLalla del usuario. As como
Lambin, la comunicacin enLre el enLorno raz, y el !"#$%&, y los conocidos problemas de
=0/22T;/>L:M. FsLa clase de limiLaciones se han Lenido en cuenLa en SharePoinL 203, y se le
proporcionan al desarrollador mecanismos de manera que la percepcin para el desarrollador
se asemeje (al menos en cuanLo a diseo y experiencia de usuario se reere), a la que podra
ser el desarrollo de un Web ParL para SharePoinL.
Cmo y cundo hace uso SharePoinL 203 de los !"#$%&7 8ien, como ya sabemos, exisLen
bsicamenLe dos ormas de mosLrar el conLenido de una app. La primera de ellas es medianLe el
conocido modo Pgina compleLa. Fn esLe caso, se accede a la app desde un enlace, o una Accin
personalizada, que redirige hacia la app web desde donde se muesLra el conLenido de la app,
ocupando Loda el rea visible del navegador. No debemos olvidar que lo que esLamos haciendo
es navegar hacia oLra aplicacin web compleLamenLe disLinLa, con respecLo a la aplicacin web
desde donde se lanz la app. Por lo LanLo, en esLe caso no Lenemos !"#$%&7. Pero es labor del
diseador conseguir, que de cara al usuario, parezca que nos manLenemos en el mismo siLio,
respeLando los esLilos y maqueLacin del siLio origen. La oLra opcin para mosLrar apps, son
las App ParLs. Las App ParLs, como ya hemos visLo, son en lLima insLancia una pgina denLro
de oLra. Lo cual es, bsicamenLe, la denicin de un !"#$%&. Aunque Lambin es posible, como
veremos, hacer uso de las venLanas modales (Y/;L9 ":L9/P2) que ya conocemos de SharePoinL
108
Captulo 3: Desarrollo de SharePoint Apps
200, para mosLrar el conLenido de una app` usando igualmenLe !"#$%&7, pero "alLerados" por
SharePoinL 203.
As pues, e insisLiendo en lo que considero que es el punLo clave en la maqueLacin y
diseo de apps para SharePoinL 203, el desarrollador de una app para SharePoinL 203 debe
Lener presenLe en Lodo momenLo que el SharePoinL donde vaya a insLalarse nalmenLe su app,
puede variar enormemenLe, con respecLo al de oLros usuarios. Fs su labor conseguir, que su
app se adapLe perecLamenLe, y encaje denLro de los esLilos y maqueLacin, sea cual ueren
esLos, en cualquier escenario. Cmo podemos conseguir esLo sin morir en el inLenLo 8ien, la
cuesLin es adapLar la solucin, segn al Lipo de problema, o mejor dicho, al Lipo de app.
No perder el enoque
A modo de conclusin nal, anLes de meLernos de lleno en el diseo apps, me gusLara
recalcar algo de lo que ya hemos hablado brevemenLe anLes. Fs imporLanLe no conundir cul
es el objeLivo cuando hablamos de maqueLacin y diseo de apps. Habr observado el lecLor,
que en ningn momenLo ha aparecido la palara branding, para reerirnos al diseo y maque6
Lacin de apps. no es casual. Hablamos de N0LM;:MP cuando aplicamos esLilos corporaLivos
(colores, uenLes, logos, eLc.) de una marca para una inLraneL, web pblica, blog, eLc. Fs en esLe
caso, cuando usamos Lodos los recursos que esLn a nuesLra disposicin, (los recursos que
orece SharePoinL en esLe caso) y Lodos los "Lrucos" que podamos. Pero ahora, no esLamos
*,-&,/#" #' N0LM;:MP. FsLamos hablando de cmo puedo hacer que "mi" app encaje con los
esLilos que ya exisLen, o mejor dicho, con el N0LM;:MP que ya exisLe, en la aplicacin web donde
vaya a parar mi app. Fse debe ser nuesLro enoque, y a eso va dedicado esLe capLulo. Fs por
ello, que no Liene senLido que LraLemos de reinvenLar la rueda, haciendo Lrabajos innecesarios.
SharePoinL 203 ya orece mecanismos para el diseo de apps, precisamenLe con ese objeLivo.
Lener una app plenamenLe uncional, con un acabo visual acorde con el resLo de elemenLos de
la pgina, sin Lener que dedicarle ms Liempo a lo segundo que a lo primero. As pues, vamos
a ver cules son esos mecanismos.
1*,('5"2/+6*"$+'# Apps
1al vez, la orma ms rpida de comprender y amiliarizarse con las apps para SharePoinL
203, sea medianLe las SharePoinL-hosLed Apps, en el senLido de que se apoyan en elemenLos
de SharePoinL que podemos conocer de versiones anLeriores. Fn capLulos anLeriores, hemos
hablado ampliamenLe sobre cmo uncionan las SharePoinL-hosLed Apps "por debajo", qu
las disLingue de las Cloud-hosLed Apps, as como sus venLajas e inconvenienLes. Fn esLe caso,
vamos a desmenuzar esLe Lipo de apps, pero para ver cmo podemos sacarles Lodo el jugo en
cuanLo a maqueLacin y diseo se reere.
109
Captulo 3: Desarrollo de SharePoint Apps
Fs cil perderse con LanLa nomenclaLura nueva en SharePoinL 203, sobre Lodo en cuanLo
al nuevo modelo de desarrollo de apps se reere. Pero en realidad hay que Lener el esquema
en la cabeza, y no perder de visLa que exisLen Lres Lipos de apps que podemos alojar de Lres
ormas disLinLas. CenLrndonos en maqueLacin y diseo de apps se reere, nos va a imporLar
si la app se aloja en SharePoinL (SharePoinL-hosLed) o lo hace en la Nube (Provider-hosLed y
AuLohosLed). Si es el primer caso, parLimos con mucho Lrabajo hecho, y adems conLamos con
una base imporLanLe de conocimienLos, si ya hemos Lrabajado con versiones anLeriores de
SharePoinL. es que, simplicando al mximo las SharePoinL-hosLed Apps, sLas no son ms
que pginas (usualmenLe ASP.NF1, pero Lambin puede ser H1ML bsico) denLro de SharePoinL.
La peculiaridad la Liene dicho siLio en s (que programLicamenLe no deja de ser un objeLo
4<Z&O), ya que no es accesible del mismo que el resLo de siLios de SharePoinL, y presenLa una
serie de resLricciones.
Fs probable que el lecLor ya se esL planLeando cuesLiones del Lipo si es un siLio de
SharePoinL normal y corrienLe el que conLiene a la app, qu pagina maesLra se usa Fs posi6
ble modicar dicha pgina maesLra Puedo usar una pgina maesLra propia Puedo crear
diseos de pgina (9LJ/-.2) Qu esLilos CSS y archivos JavaScripL se aplican Fn adelanLe,
LraLaremos de dar respuesLa a esLas y oLras pregunLas con el objeLivo de Lener presenLe cules
son las herramienLas con las que conLamos a la hora de maqueLar SharePoinL-hosLed Apps` '/
cualquiera de sus Lres varianLes y cul es la orma ms ecienLe de hacerlo. el primer paso
para ello es diseccionar un proyecLo de visual SLudio 202 de una SharePoinL-hosLed App, y ver
qu elemenLos lo compone.
$2.0-=.-0L ;1 -M 40/J1=./ Q3L01S/:M.T3/2.1;
As pues, recin creado un proyecLo de SharePoinL-hosLed App en visual SLudio 202, Lene6
mos la siguienLe esLrucLura en el mismo.
110
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-27. NuesLra App en el men desplegable
vemos que se LraLa de un proyecLo muy parecido, por no decir idnLico, al proyecLo Lpico
de una solucin para SharePoinL 200. Nos Liene que llamar la aLencin que el proyecLo cuenLa
con cuaLro mdulos para proveer de archivos al siLio SharePoinL. As pues, Lenemos el mdulo
8(,+&,+, para desplegar la hoja de esLilos I//:*77. Fl mdulo 2%$-&7, donde por deecLo se
ubica a la imagen del icono de la app, pero que pudiramos usar para aadir ms imgenes.
Un mdulo <$-&7 para desplegar pginas, que son en lLima insLancia la app, s. por lLimo,
un mdulo 4*#!/+7 para desplegar archivos JavaScripL (enLre ellos, vemos como hay una ver6
sin de jQuery). Por lo LanLo, el pensamienLo que debemos Lener al ver esLe Lipo de proyecLo,
es que es un proyecLo clsico para desplegar archivos. Archivos que uLilizaremos, nalmenLe,
para maqueLar y disear nuesLra app.
Por ejemplo, si abrimos el archivo de hoja de esLilos I//:*77, solo enconLraremos en l
una lnea a modo de comenLario, inviLndonos a inLroducir nuesLros esLilos personalizados en
dicho archivo. 1ambin podemos, obviamenLe, crear uno o varios archivos de hojas de esLilos
como, y reerenciarlos desde la pgina en cuesLin. De igual modo, para el cdigo JavaScripL
que queramos aadir a nuesLra app, Lenemos el chero App.]s. FsLe chero no esL vaco,
cuenLa con algunas unciones en su inLerior, pero perecLamenLe podemos borrarlas ya que
nicamenLe se usan para el "Hola Mundo", a modo de ejemplo de la app. No obsLanLe, anLes
de borrar a lo loco, vamos a jarnos (y adems viene muy bien comenLado), en que exisLe una
uncin que esL siendo llamada desde un ]guery{document}.ready{} 9:' $' '/):'/+(, '/ &,
pgina deaulL.aspx. La uncin shareointkeady{}.
111
Captulo 3: Desarrollo de SharePoint Apps

ZZ Y0$, RI.3-}. 0# #q#3I$, 3I,.5* #N ){G #0$ N-0$* A N*0 032-($0 5#
ZZ "<,2#&*-.$ 0# <,. 3,2H,5* ',5-2 #. #0$# RI.3-}. #N 3}5-H* FI# 0# FI-#2,
ZZ #q#3I$,2 3I,.5* )#R,IN$1,0(P #0$ N0$* "# 32#, I. *Jq#3$* 5# 3*.$#P$* FI#
ZZ #0 .#3#0,2-* (,2, I$-N-~,2 #N +*5#N* 5# *Jq#3$*0 5# "<,2#&*-.$
RI.3$-*. 0<,2#&*-.$`#,5ABC =
3*.$#P$ L .#; "&1[N-#.$[*.$#P$1H#$?3I22#.$BCv
;#J L 3*.$#P$1H#$?;#JBCv
H#$b0#2D,+#BCv
K
Fs decir, cuando llegamos a esLa uncin, el DOM de la pgina !adems del resLo de 2=0:4.2
#' 1*,('5"2/+! esLn cargados, por lo que podemos usarla para realizar el resLo de llamadas
a las unciones e iniciar nuesLra lgica de JavaScripL. Para ello debemos asegurarnos de Lener
,/+'$ '& $2<:2'/+' 2=0:4.=

Sd%%r* 0-HI-#.$# 0# #q#3I$, 3I,.5* #N ){G #0$ N-0$*1 %%X
Sd%%&2-+#2* 0# 3,2H, #N o" 5# "<,2#&*-.$ 0(1q0h A 5#0(I0 0# #q#3I$, N,
RI.3-}. 0<,2#&*-.$`#,5ABC 5#05# '((1q0 %%X
S032-($ $A(#L4$#P$Zq,6,032-($4X
>B5*3I+#.$C12#,5ABRI.3$-*. BC =
"&1"{)1#P#3I$#cI.3Bz0(1q0xh z"&1[N-#.$[*.$#P$xh
RI.3$-*. BC = 0<,2#&*-.$`#,5ABCv KCv
KCv
SZ032-($X
FinalmenLe, en el mdulo <$-&7 podemos aadir nuevas pginas, y usar sLas para la app
de Pgina compleLa (que como sabemos, es la app "por deecLo" del proyecLo), modicando el
chero I//>$,!M&7+:Y%), o para oLras apps que incluyamos en el proyecLo, ya sean de Accin
personalizada o App ParL. Ms adelanLe, hablaremos ms en deLalle sobre las pginas que
componen una SharePoinL-hosLed App.
Aunque no lo he mencionado explciLamenLe, por que en realidad es el mismo compor6
LamienLo que en SharePoinL 200, debemos jarnos en que, en cuanLo aadimos un nuevo
112
Captulo 3: Desarrollo de SharePoint Apps
archivo a un mdulo, auLomLicamenLe en el chero C)&%&,+7:Y%) asociado se incluye las ree6
rencias al nuevo archivo, indicando hacia dnde debe ser desplegado en SharePoinL.
App.masLer
I//:%$7+&# es una nueva pgina maesLra que Lrae SharePoinL 203, que se aplica al siLio
SharePoinL que se crea para alojar la app. Fs decir, si en una SharePoinL-hosLed App esLamos
LraLando en Lodo momenLo con elemenLos naLurales de SharePoinL (porque insisLo, program6
LicamenLe no deja de ser un objeLo 4<Z&O donde se aloja la app), Lambin es lo "naLural", que
se aplique una pgina maesLra como las habiLuales. Lo cual planLea a su vez oLras pregunLas,
qu Liene de parLicular dicha pgina maesLra Fn realidad no Liene nada de parLicular, solo que
hay cierLos componenLes que desaparecen en comparacin con, por ejemplo, la nueva aRb:
%$7+&#. Por ejemplo, la mayora de elemenLos de la cinLa conLexLual (Ribbon) no esLn, (como
es lgico). Fs decir, es una app, no un porLal. Sobre Lodo, no perdamos ese oco de la cabeza,
en cuanLo a maqueLacin y diseo se reere, LraLando de hacer cosas innecesarias.
Podemos modicar dicha pgina maesLra Como poder, en cuanLo a Lener la capacidad
sica para acceder a la ruLa WRbW9C><6I9CW'6c=I6W y ediLar el archivo $//:%$7+&#, s, podemos.
Ahora bien, auLomLicamenLe hagamos alguna modicacin en dicho chero, debemos ser
conscienLes de Lres cosas. La primera, la Lpica, en cuanLo haya una acLualizacin de SharePoinL,
puede ser que perdamos los cambios que hayamos hecho, la segunda, aun no habiendo encon6
Lrado conrmacin ocial por la documenLacin de MicrosoL, es de suponer, dado lo poco que
les gusLa a los de Redmond que les busquen las cosquillas, que supondra perder el soporLe,
y la Lercera, pero no menos imporLanLe, es que cualquier cambio que hagamos, se aplicar a
Lodas las apps que Lengamos, ya que en Lodas se usa la $//:%$7+&#. Lo cual planLea la siguienLe
pregunLa. podemos usar pginas maesLras propias voy a inLenLar responder a esLa pregunLa
desde dos enoques disLinLos. Fl primero, el del programador SharePoinL que soy. Como Lal,
s que aunque desde la inLeraz de usuario de una app no Lenga modo de cambiar la pgina
maesLra (porque no lo Lengo), Lambin s, que medianLe PowerShell, y dos =>;T91.2, Lodo es
posible. Ahora bien, ese no es para nada el objeLivo. aqu viene el oLro enoque, el enoque
prcLico. Como deca anLeriormenLe, esLamos hablando de desarrollar apps. una app no es
un porLal web, ni una web pblica, ni nada parecido. Fs un "aadido" de uncionalidad que
inserLamos en un siLio SharePoinL, que s puede ser una web pblica, o inLraneL. Por LanLo, no
debemos rompernos la cabeza en ver cmo podemos modicar la pgina maesLra o cosas por
el esLilo. Fn su lugar, debemos pensar !y ese es el objeLivo primordial! en cmo puedo hacer
que mi app "se camue", es decir, se adapte a Ios estiIos de Ia pgina que Ia contiene. para
conseguir eso mismo, como veremos, SharePoinL 203 orece una serie de mecanismos para
que maqueLar y disear apps sea una Larea sencilla y no un desao.
113
Captulo 3: Desarrollo de SharePoint Apps
Diseos de Pginas (page layouLs)
Dado que acabamos de hablar de pginas maesLras, y que somos unos desarrollado6
res/diseadores de SharePoinL realmenLe muy curiosos. Qu hay de diseos de pginas
(4LP1 9LJ/-.2) en una SharePoinL-hosLed App 8ien, como sabemos, las pginas maesLras en
SharePoinL Lrabajan en combinacin con los diseos de pginas. A grandes rasgos, se denen
"huecos" en las pginas maesLras, medianLe los conLroles 8(,+&,+<)$*&V()E&#7, y dichos hue6
cos se "rellenan" despus desde los diseos de pginas
12
. Por lo LanLo, si ya sabemos que Lene6
mos una pgina maesLra para las apps, por algn lado Lienen que esLar los diseos de pgina.
en realidad, ese diseo de pgina (4LP1 9LJ/-.) ha esLado con nosoLros desde que creamos
el proyecLo en visual SLudio 202. Solo Lenemos que examinar el cdigo de la pgina E&M$K)+:
$7/Y que veamos anLeriormenLe, para comprobar que eecLivamenLe es as.

111
111
111
Sf%% @<# +,2kI( ,.5 032-($ -. $<# R*NN*;-.H [*.$#.$ #N#+#.$ ;-NN J# (N,3#5 -.
$<# S<#,5X *R $<# (,H# %%fX
S,0(Q[*.$#.$ [*.$#.$&N,3#^*N5#295L4&N,3#^*N5#2'55-$-*.,N&,H#^#,54
2I.,$L40#26#24X
S032-($ $A(#L4$#P$Zq,6,032-($4 023L411Z"32-($0ZqFI#2A%U1y1_1+-.1q04X
SZ032-($X
<!-- ^dd your CSS sty1es to the 1o11owng f1e -->
SN-.k 2#NL4"$AN#0<##$4 $A(#L4$#P$Z3004 <2#RL411Z[*.$#.$Z'((13004 ZX
<!-- ^dd your JavaScrpt to the 1o11owng f1e -->
S032-($ $A(#L4$#P$Zq,6,032-($4 023L411Z"32-($0Z'((1q04XSZ032-($X
111
111
111
SZ,0(Q[*.$#.$X
Sf%% @<# +,2kI( ,.5 032-($ -. $<# R*NN*;-.H [*.$#.$ #N#+#.$ ;-NN J# (N,3#5 -.
$<# SJ*5AX *R $<# (,H# %%fX
S,0(Q[*.$#.$ [*.$#.$&N,3#^*N5#295L4&N,3#^*N5#2G,-.4 2I.,$L40#26#24X
S5-6X
111
111
12 Para ms informacin sobre el funcionamiento de las pginas maestras, y diseos de pgina, consulte esta document-
acin; http://msdn.microsof.com/en-us/library/wtxbf3hh(v=vs.100).aspx#HowMasterPagesWork
114
Captulo 3: Desarrollo de SharePoint Apps
111
SZ5-6X
SZ,0(Q[*.$#.$X
vemos qu se usan dos 8(,+&,<)$*&V()E&#= <)$*&V()E&#IEE!+!(,$)<$-&V&$E
y <)$*&V()E&#>$!,. Como se dice en los comenLarios que acompaan al cdigo,
<)$*&V()E&#IEE!+!(,$)<$-&V&$E para aadir reerencias en la cabecera de la pgina (eLiqueLa
0&$E), y <)$*&V()E&#>$!, para denir el cuerpo de la pgina (eLiqueLa O(E.). Fs decir, la pgina
E&M$K)+:$7/Y, gracias a Ias referencias que incIuye, puede ser considerada a eecLos de desa6
rrollo, un diseo de pgina (4LP1 9LJ/-.) de SharePoinL normal y corrienLe. De hecho, podra6
mos examinar la $//:%$7+&# '/ -:$), #'& ('$+" #' 8(,+&,+<)$*&V()E&# 9:' $' '$+./ :$,/#"
para la maqueLacin, para as poder "rellenarlos" desde nuesLra pgina.
Figura 3-30. ConLenLPlaceHolders visibles en la app.masLer
@/ (',&2#,# &"$ #"$ 8(,+&,+<)$*&V()E&# que hemos mencionado, son los nicos que real6
menLe necesiLamos para maqueLar y dar esLilos a una SharePoinL-hosLed App. Fs por ello, que
cuando aadimos un nuevo elemenLo al proyecLo, bajo la seccin de Oce/SharePoinL, encon6
Lramos el elemenLo Page (pgina).
115
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-3. Diseos de pgina en las SharePoinL-hosLed Apps
Por LanLo, las pginas que aadimos usando la planLilla de pgina disponible para las apps
de SharePoinL son pginas ASP.NF1 ya preparadas (incluyen las reerencias) para usarse en el
conLexLo de una SharePoinL-hosLed App. Aunque Lambin podemos decirle a nuesLra app que
/" *,<, :$" #' &, $//:%$7+&#, y use una pgina en H1ML bsico, donde nosoLros debemos de
realizar absoluLamenLe Lodo el desarrollo desde cero.
Ahora que hemos visLo cmo se maqueLa una app que se aloja en SharePoinL, podemos
enLender por qu una SharePoinL-hosLed App "limpia", es decir, Lal cual viene con la planLilla
de visual SLudio 202, no se muesLra como una pgina sin esLilos cuando la desplegamos, si
no que visualmenLe se comporLa como cualquier pgina denLro de SharePoinL. FsLo mismo
no sucede, con las Cloud-hosLed Apps, ya que una Cloud-hosLed App no se apoya en pginas
maesLras ni diseos de pgina. Fn una Cloud-hosLed App Lenemos que maqueLar y dar esLilos
parLiendo desde cero.
116
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-32. Comparacin enLre una app "limpia" Cloud-hosLed () y SharePoinL-hosLed
(2)
Fsa es, precisamenLe, una de las venLajas de las SharePoinL-hosLed Apps. Fl objeLivo de que
nuesLra app se adapLe y encaje con los esLilos de SharePoinL, y no parezca un "posLizo", se
consigue ms cilmenLe con esLe Lipo de apps. No obsLanLe, como decamos anLeriormenLe,
Lambin podemos hacer que nuesLra app use una pgina en H1ML sin ninguna reerencia a la
$//:%$7+&#. De esLa orma, parLiramos en las mismas condiciones que con una Cloud-hosLed
App. Cmo podra hacer enLonces, que mi app se adapLara a los esLilos de SharePoinL 203
Acaso no se puede conseguir que una Cloud-hosLed App "herede" los esLilos de SharePoinL
S, claro que se puede. Para ello SharePoinL 203 proporciona el <1)&*+ <#%(-& <(*+%(1, del
cual hablaremos en proundidad cuando hablemos de maqueLacin y diseo para Cloud-
hosLed Apps.
117
Captulo 3: Desarrollo de SharePoint Apps
Apps ParLs
A conLinuacin, vamos a hablar sobre esos mecanismos que mencionbamos anLerior6
menLe que nos van a permiLir adapLar nuesLra app a los esLilos del enLorno donde se muesLra.
ConcreLamenLe, en esLa ocasin vamos a cenLrarnos en las App ParLs que se alojan en SharePoinL
(SharePoinL-hosLed). Aunque lo que vamos a ver a conLinuacin, es igualmenLe vlido para las
Apps ParLs que residen en la Nube (Cloud-hosLed). Fl hecho de hablar ahora sobre la maque6
Lacin y diseo de App ParLs, bajo el conLexLo de las SharePoinL-hosLed Apps, se debe a que,
como ya hemos visLo, las apps de Pgina compleLa en una SharePoinL-hosLed App, al emplear
la pgina maesLra $//:%$7+&#, prcLicamenLe ya esLn en sinLona con los esLilos de SharePoinL.
Por lo que hay poco que aadir en ese senLido en esLe momenLo. Hablaremos en proundidad
de los mecanismos que proporciona SharePoinL para dar esLilos a las apps de Pgina compleLa
en la seccin siguienLe, dedicada al diseo y maqueLacin de Cloud-hosLed Apps. Fn ese caso,
s que esLaremos obligados a "poner de nuesLra parLe", ya que parLiremos de un "lienzo" com6
pleLamenLe en blanco.
Fn el caso de las App ParLs, Lambin conocidas como CIient web Parts, ya hemos visLo
que su uso y visualizacin es muy similar al de los FlemenLos Web (Web ParLs) Lradicionales.
Pero para el caso que nos ocupa, es decir, ver la orma en la que se puede adapLar el diseo y
apariencia de una App ParL con el enLorno que la rodea, debemos Lener presenLe, como vimos
anLeriormenLe, que una App ParL se visualiza medianLe !"#$%&7. Se podra equiparar la uncio6
nalidad de una App ParL, con la del FlemenLo Web Visor de pginas (SLP1 #:1710 U1NSL0.)
presenLe en SharePoinL desde versiones anLeriores. Ambos realizan la Larea de mosLrar el con6
Lenido de una pgina medianLe un !"#$%&. La venLaja de las App ParLs es que permiLen enviar
parmeLros de conguracin a la pgina a visualizar, as como esLablecer un conLexLo con el
siLio SharePoinL anLrin.
Fn adelanLe, veremos cmo podemos "moldear" una App ParL para conseguir esa inLegra6
cin con SharePoinL que venimos buscando. ConcreLamenLe, analizaremos y veremos cmo
('$"&0'( &"$ $2<:2'/+'$ '$)'/,(2"$=
- Usar los esLilos de SharePoinL en App ParLs.
- Acciones personalizadas, usando las venLanas modales de SharePoinL.
118
Captulo 3: Desarrollo de SharePoint Apps
Usar los esLilos de SharePoinL en App ParLs
ParLiendo de la base de que una App ParL es un "Lrozo de pgina" que inserLamos en
SharePoinL, no Lendra senLido que esa pgina que inserLamos Lenga a su vez elemenLos de
SharePoinL, como la cinLa conLexLual, men de navegacin, eLc. Se podra producir una especie
de "eecLo DrosLe
3
".
Figura 3-33. FecLo DrosLe
Por lo que la pgina que usamos para mosLrar en las App ParLs, sern generalmenLe pgi6
nas H1ML bsicas, sin ninguna reerencia a SharePoinL. Fs decir, nos olvidamos de la $//:%$7+&#
y de los 8(,+&,+<)$*&V()E&#. Por lo LanLo, de igual orma que sucede con las apps de Pgina
compleLa que se alojan en la Nube, no vamos a ver una concordancia enLre los esLilos de mi
app y los de SharePoinL del siLio acLual, a no ser que usemos algn mecanismo para Lal n. Fn
el caso de las apps en Pgina compleLa, veremos que Lenemos el (9:1M. (30/>1 (/M.0/9. Fn el
caso de las App ParLs Lenemos que asegurarnos de reerenciar una hoja de esLilos a modo de
"comodn", que a su vez reerencia los esLilos que se esLn uLilizando acLualmenLe. vamos a ver
cmo, paso a paso.
13 http://es.wikipedia.org/wiki/Efecto_Droste
119
Captulo 3: Desarrollo de SharePoint Apps
SL2/ L 4L2/ 4L0L 01Z101M=:L0 9/2 12.:9/2 ;1 Q3L01S/:M. 1M -ML !44 SL0.
'$0( 48 Creamos un nuevo proyecLo de SharePoinL-hosLed Apps, y le aadimos, segn la
nomenclaLura que usa visual SLudio 202, un CIient web Part (b/2. U1N)` 9:' $' )"(('$;"/#'
con una App ParL.
Figura 3-34. Agregamos un App ParL al proyecLo
'$0( 28 Fl siguienLe paso es crear una nueva pgina, que consLiLuir el conLenido de nues6
Lro App ParL. Fs en esLa pgina donde deberemos hacer reerencia a las clases CSS de SharePoinL
que queramos uLilizar, y en donde Lambin, medianLe JavaScripL, haremos reerencia a la hoja
de esLilos "comodn" que nos va a permiLir usar los esLilos del siLio anLrin.
'$0( 98 A conLinuacin, Lenemos que indicar a nuesLro App ParL, de dnde debe coger el
conLenido. Fs decir, hemos de modicar su archivo C)&%&,+7:Y%) )"(('$;"/#2'/+'=

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[N-#.$\#J&,2$ D,+#L4G-'((&,2$4 @-$N#L4G-'((&,2$4
120
Captulo 3: Desarrollo de SharePoint Apps
)#032-($-*.L4G-'((&,2$4 )#R,IN$\-5$<L4UV_74
)#R,IN$^#-H<$L4iVV4X
S[*.$#.$ "23L4e,((\#Jb2NZ&,H#0Z'((&,2$&,H#1,0(PT="$,.5,25@*k#.0K4
@A(#L4<$+N4ZX
SZ[N-#.$\#J&,2$X
SZYN#+#.$0X
Como vemos, no esLamos enviado parmeLros adicionales al App ParL, si no que esLamos
:$,/#" '& >L0=L;/0
14
4+$,E$#9(F&,7, que engloba una serie de parmeLros en la 5K&#.4+#!,-, sobre
el siLio acLual.
Paso 4. Fn esLe paso, vamos a darle conLenido a la pgina que creamos en el paso 2.
La idea es ver, que eecLivamenLe, hay un "anLes y un despus" reerenciando la hoja de
esLilos "comodn" y no hacindolo. Por eso en la pgina, de momenLo, no vamos a aadir
nada de JavaScripL. Lo que s vamos a hacer es usar las clases CSS que uLiliza 1*,('5"2/+
203 para dar esLilos a los disLinLos Lipos de LexLos que podemos Lener en una pgina
denLro de SharePoinL, como son LLulos, subLLulos, secciones, subsecciones, eLc. Por ejem6
plo, SharePoinL 203 uLiliza la clase :%7;*(#&;/$-&9!+)&
1S
, para dar ormaLo al LLulo prin6
cipal de la pgina. Por ejemplo, podemos darle el siguienLe conLenido a la pgina.

Sfg `#H-0$#2 1agprefxL4\#J&,2$&,H#04
D,+#0(,3#L4G-32*0*R$1"<,2#&*-.$1\#J&,2$&,H#04
'00#+JNAL4G-32*0*R$1"<,2#&*-.$h a#20-*.LUi1V1V1Vh
[IN$I2#L.#I$2,Nh &IJN-3j#A@*k#.LlU#mJ3#UUU#m7_m34 fX
S\#J&,2$&,H#0Q'NN*;c2,+-.H 9)L4,NN*;R2,+-.H4 2I.,$L40#26#24 ZX
Sd){[@|&Y <$+NX
S<$+N P+N.0L4<$$(QZZ;;;1;]1*2HZUmmmZP<$+N4X
S<#,5X
S$-$N#XG- '(( &,2$ I0,.5* #0$-N*0 "<,2#&*-.$SZ$-$N#X
SZ<#,5X
SJ*5AX
Sd%% @$IN* (2-.3-(,N 5# N, (H-., %%X
S<U 3N,00L4+0%3*2#%(,H#@-$N#4Xn^*N, GI.5*dSZ<UX
Sd%% "IJ$$IN*0 %%X
S<U 3N,00L4+0%,33#.$@#P$4Xb0,.5* N*0 #0$-N*0 5# "<,2#&*-.$111SZ<UX
Sd%% [*+#.$,2-*0 5# I. 0IJ$$IN* %%X
S<_ 3N,00L4+0%,33#.$@#P$4X111(,2, FI# FI#5#. N,0 '((0 J-#. J*.-$,0
14 Para ms informacin y ver un listado completo de los marcadores que se pueden utilizar, consulte la siguiente pgina:
http://msdn.microsof.com/en-us/library/ms431831(v=ofce.15).aspx
15 En la siguiente documentacin tenemos un listado completo de las clases CSS existentes que se usan en SharePoint, y en
qu casos se deben utilizar: http://msdn.microsof.com/en-us/library/jj220046%28v=ofce.15%29.aspx#UXGuide_CSS
121
Captulo 3: Desarrollo de SharePoint Apps
QCSZ<_XSJ2 ZX
S5-6X
Sd%% c*2+,$* (,2, #N $$IN* 5# I., \#J &,2$%%X
S<_ 3N,00L4+0%;#J(,2$%$-$N#@#P$4Xb0,+*0 #0$, 3N,0# (,2, #N $$IN*
5# I. \#J&,2$SZ<_X
Sd%% c*2+,$* (,2, #N $$IN* 5# I., \#J &,2$%%X
S, 3N,00L4+0%3*++,.5r-.k4 <2#RL44X#0$# R*2+,$* FI#5, J-#. (,2,
N*0 #.N,3#0SZ,X
SJ2 ZX
Sd%% D* I0,+*0 3N,0#0 ["" (,2, 3I,.5* #N 3*.$#.-5* #0 I. $#P$*
.*2+,N %%X
Y para ntrdocr un texto norma1, s somos capaces de defnr 1a
norma1dad, no espefcamos nnguna c1ase CSS.
SZ5-6X
SZJ*5AX
SZ<$+NX
SeguidamenLe, depuramos desde visual SLudio para ver cmo queda nuesLra App ParL.
Figura 3-35. App ParL sin aplicar esLilos SharePoinL
Como vemos, esLo luce muy poco a lo Q3L01S/:M.T2.J91. vamos a ver cmo podemos cam6
biar eso.
122
Captulo 3: Desarrollo de SharePoint Apps
'$0( R8 Para Lerminar, y hacer que nuesLra App ParL uLilice los mismos esLilos que se esLn
uLilizando en la pgina acLual, incluimos el siguienLe cdigo JavaScripL en la cabecera de la pgina.

S032-($ $A(#L4$#P$Zq,6,032-($4X
6,2 <*0$;#JI2Nv
BRI.3$-*. BC =
ZZ8#$ $<# b`9 5#3*5#5 ,(( ;#J b`r1
<*0$;#JI2NL5#3*5#b`9[*+(*.#.$B
H#$pI#2A"$2-.H&,2,+#$#2B/"&^*0$b2N4CCv
ZZr, <*q, 300 /3*+*5-.4 FI# .#3#0-$,+*0h 0# #.3I#.$2, J,q*
ZZ;#J?I2NZN,A*I$0ZUiZ5#R,IN$3001,0<P
6,2 032-($J,0# L <*0$;#JI2N w /Z?N,A*I$0ZUiZ4v
6,2 53N-.k L5*3I+#.$132#,$#YN#+#.$B/N-.k4Cv
53N-.k10#$'$$2-JI$#B/2#N4h /0$AN#0<##$4Cv
53N-.k10#$'$$2-JI$#B/<2#R4h 032-($J,0# w /5#R,IN$3001,0<P4Cv
6,2 <#,5 L 5*3I+#.$1H#$YN#+#.$0OA@,HD,+#B/<#,54Cv
ZZ',5-+*0 N, #$-FI#$, N-.k FI# ,3,J,+*0 5# R*2+,2 , N, 3,J#3#2,
ZZ5# (H-.,1
<#,5sVt1,((#.5[<-N5B53N-.kCv
KCBCv
ZZ cI.3-}. (,2, *J$#.#2 #N 6,N*2 5# I. (,2+#$2* 5# N, pI#2A "$2-.H1
RI.3$-*. H#$pI#2A"$2-.H&,2,+#$#2B(,2,+@*`#$2-#6#C =
6,2 (,2,+0 L 5*3I+#.$1b`r10(N-$B/T4CsUt10(N-$B/u4Cv
6,2 0$2&,2,+0 L /4v
R*2 B6,2 - L Vv - S (,2,+01N#.H$<v - L - w UC
=
6,2 0-.HN#&,2,+ L (,2,+0s-t10(N-$B/L4Cv
-R B0-.HN#&,2,+sVt LL (,2,+@*`#$2-#6#C 2#$I2. 0-.HN#&,2,+sUtv
K
K
SZ032-($X
123
Captulo 3: Desarrollo de SharePoint Apps
K '& ('$:&+,#" '$ '& $2<:2'/+'=
Figura 3-36. NuesLra App ParL una vez incluida la reerencia la os esLilos
Como vemos, con apenas dos unciones JavaScripL, se consigue cambiar y adapLar la
apariencia de nuesLra App ParL compleLamenLe a los esLilos del siLio acLual.
Acciones Personalizadas usando las venLanas modales
Hemos hablado de las apps de Pgina compleLa y de las Apps ParLs, por lo que solo nos
queda ver cmo personalizar el aspecLo visual de las apps de Accin personalizada. Pudiera
pensar el lecLor por lo ledo hasLa el momenLo en esLe libro, que una app del Lipo Accin per6
sonalizada orece poco "juego" en cuanLo a diseo y maqueLacin, ya que como sabemos, a
esLe Lipo de apps se accede desde la cinLa conLexLual de SharePoinL 203, o en los mens de
edicin de elemenLos de lisLas o biblioLecas. Lo cierLo es que esLas apps son en uncionalidad
muy similares a las apps de Pgina compleLa, en el senLido de que son enlaces que envan al
usuario a una pgina que se encuenLra en oLra aplicacin web. Por lo que la personalizacin
de la app, debiera hacerse del mismo modo que para las apps en modo Pgina compleLa. La
salvedad, es que las apps de Accin personalizada, permiLen una varianLe no visLa hasLa ahora,
y es la de visualizar apps denLro de los diIogos modaIes (>/;L9 ;:L9/P2) de SharePoinL.
Si recordamos de SharePoinL 200, un dilogo modal es un mecanismo que se uLiliza para
orecer una mayor inLeraccin con el usuario, permiLiendo mosLrar pginas en el mismo con6
LexLo de la pgina acLual donde se encuenLra el usuario.
124
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-37. Fjemplo de dilogo modal en SharePoinL 200.
Del mismo modo, podemos invocar dilogos modales, desde la app de Accin personali6
zada, con el objeLivo de manLener al usuario en la misma pgina que se encuenLra acLualmenLe,
en vez de redirigirle a oLro conLexLo. ResulLa especialmenLe Lil esLa opcin, para, por ejemplo,
el caso en el que queramos modicar propiedades de elemenLos de lisLas, o por ejemplo, crear
un "ediLor" personalizado con algunas opciones limiLadas, eLc. Las posibilidades son muy
amplias. Pasamos a ver cmo llevar esLo a cabo.
Si recuperamos el proyecLo que creamos en el capLulo anLerior, donde hicimos
un "Hola Mundo" inLroducLorio con Lodos los Lipos de apps, podemos volver a exami6
nar el chero C)&%&,+7:Y%) que acompaa a la app de Accin personalizada, que en
aquel momenLo llamamos, en un acLo Lremendo de originalidad "Accin personalizada".

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[I0$*+'3$-*.
95L47llVW3V,%iVi,%75JU%J7_7%mWm]_WJl,JRJ1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4Y5-$[*.$2*NON*3k4
"#FI#.3#L4UU74
@-$N#L4n^*N, GI.5*d4X
Sb2N'3$-*. b2NL4e,((\#Jb2NZ&,H#0Z[I0$*+'3$-*.1<$+NT^*0$b2NL=^*0$b2NKu,+(v
"*I23#L="*I23#Ku,+(vr-0$b`r)-2L=r-0$b2N)-2Ku,+(v
125
Captulo 3: Desarrollo de SharePoint Apps
r-0$9)L=r-0$95Ku,+(v9$#+b`rL=9$#+b2NKu,+(v9$#+9)L=9$#+95K4ZX
SZ[I0$*+'3$-*.X
S[I0$*+'3$-*. 95L4li55_75m%V3Uy%7#Ri%J#V,%Ri_#5V#y_VR,1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4[*++,.5b91`-JJ*.4
"#FI#.3#L4UUi4
@-$N#L49.6*k# 3I0$*+ ,3$-*.4X
S[*++,.5b9YP$#.0-*.X
SCommandu10efntonsX
SCommandu10efnton r*3,$-*.L4`-JJ*.1)*3I+#.$01G,.,H#1[*.$2*N01
?3<-N52#.4X
SOI$$*.
95L4`-JJ*.1r-J2,2A1[*..#3$1&2*(#2$Aa-#;#24
'N$L4n^*N, GI.5*d4
"#FI#.3#L4UVV4
[*++,.5L49.6*k#?[I0$*+'3$-*.4
r,J#N@#P$L4n^*N, GI.5*d4
@#+(N,$#'N-,0L4*U4
9+,H#]_JA]_L4Z?N,A*I$0ZUiZUV]]Z-+,H#0ZR*2+,$+,(]_P]_1(.H4
9+,H#]_JA]_r#R$L4%U]l4
9+,H#]_JA]_@*(L4%U]l4ZX
SZCommandu10efntonX
SZCommandu10efntonsX
S[*++,.5b9^,.5N#20X
S[*++,.5b9^,.5N#2
[*++,.5L49.6*k#?[I0$*+'3$-*.4
[*++,.5'3$-*.L4e,((\#Jb2NZ&,H#0Z[I0$*+'3$-*.1<$+NT^*0$b2NL
=^*0$b2NKu,+(v "*I23#L="*I23#Ku,+(v
r-0$b`r)-2L=r-0$b2N)-2Ku,+(v"#N#3$#5r-0$9)L="#N#3$#5r-0$95K
u,+(v"#N#3$#59$#+9)L="#N#3$#59$#+95K4ZX
SZ[*++,.5b9^,.5N#20X
SZ[*++,.5b9YP$#.0-*.X
SZ[I0$*+'3$-*.X
SZYN#+#.$0X
vemos, que el chero esL compuesLo por eLiqueLas 8K7+(%I*+!(,, y en las mismas de6
nimos la accin que realizan, con la direccin de la pgina con la que enlazan, y los par6
meLros que se le envan a sLa. Pues bien, para conseguir que la pgina que consLiLuye la
app se abra en el mismo conLexLo de la pgina acLual, solo hemos de aadir una propiedad
ms a la eLiqueLa 8K7+(%I*+!(,= &, ;(";2'#,# V(7+Z&O3!$)(-8 @$+, ;(";2'#,# 2/#2), 9:' &,
accin a realizar la debemos siLuar denLro de un dilogo modal. As de sencillo. Adems, pode6
mos especicar el ancho y alLo del dilogo modal, con las propiedades V(7+Z&O3!$)(-Z!E+0 y
126
Captulo 3: Desarrollo de SharePoint Apps
V(7+Z&O3!$)(-V&!-0+8 Por lo LanLo, la primera accin personalizada del chero C)&%&,+7:Y%)
anLerior, quedara Lal que as.

S[I0$*+'3$-*.
95L47llVW3V,%iVi,%75JU%J7_7%mWm]_WJl,JRJ1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4Y5-$[*.$2*NON*3k4
"#FI#.3#L4UU74
@-$N#L4n^*N, GI.5*d4
^*0$\#J)-,N*HL4@`bY4
^*0$\#J)-,N*H\-5$<L4iVV4
^*0$\#J)-,N*H^#-H<$L4iVV4X
Sb2N'3$-*. b2NL4e,((\#Jb2NZ&,H#0Z[I0$*+'3$-*.1<$+NT
^*0$b2NL=^*0$b2NKu,+(v "*I23#L="*I23#Ku,+(vr-0$b`r)-2L=r-0$b2N)-2K
u,+(vr-0$9)L=r-0$95Ku,+(v
9$#+b`rL=9$#+b2NKu,+(v9$#+9)L=9$#+95K4ZX
SZ[I0$*+'3$-*.X
visLa la Leora, vamos a ir paso a paso consLruyendo una nueva Accin personalizada, para
ver a la misma en accin, y discuLir nalmenLe, qu aspecLos en cuanLo a diseo y maqueLacin
de la app debemos uLilizar, segn los mecanismos visLas hasLa el momenLo.
127
Captulo 3: Desarrollo de SharePoint Apps
Paso a paso para usar venLanas modales en apps
'$0( 48 Aadimos un nuevo elemenLo al proyecLo que Lenemos abierLo en visual SLudio
202, en esLe caso del Lipo Ul Custom Action (HosL Web).
Figura 3-38. Aadimos una app de Accin Personalizada al proyecLo.
'$0( 2. Abrimos el chero C)&%&,+7:Y%) que compone la app de Accin personalizada que
acabamos de crear. Por deecLo, vemos que el chero conLiene las lneas de cdigo necesarias
para crear una accin personalizada asociada al men de edicin de un elemenLo de lisLa.
vamos a subsLiLuir Lodo el conLenido del chero, por el siguienLe:

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[I0$*+'3$-*.
95L47llVW3V,%iVi,%75JU%J7_7%mWm]_WJl,JRJ1[I0$*+'3$-*.4
`#H-0$2,$-*.@A(#L4r-0$4
`#H-0$2,$-*.95L4UVU4
r*3,$-*.L4Y5-$[*.$2*NON*3k4
"#FI#.3#L4UU74
128
Captulo 3: Desarrollo de SharePoint Apps
@-$N#L4n[N-3k ,FId4
^*0$\#J)-,N*HL4@`bY4
^*0$\#J)-,N*H\-5$<L4iVV4
^*0$\#J)-,N*H^#-H<$L4iVV4X
Sb2N'3$-*. b2NL4e,((\#Jb2NZ&,H#0Z'((&,2$&,H#1,0(PT="$,.5,25@*k#.0K4ZX
SZ[I0$*+'3$-*.X
SZYN#+#.$0X
Donde lo que esLamos haciendo es crear nuevamenLe una Accin personalizada asociada
al men desplegable de los elemenLos de una biblioLeca de documenLos. Dicha Accin perso6
nalizada, vemos que Liene asociada como la "URL de accin" (L#)I*+!(,) la misma pgina que
usamos para ormar la App ParL anLerior. nalmenLe, usamos las propiedades que mencion6
bamos anLeriormenLe, para permiLir que la pgina se muesLre denLro de una venLana o dilogo
modal.
Fl hecho de uLilizar la misma pgina que uLilizbamos para la App ParL anLerior no es una
casualidad, si no Lodo lo conLrario. La venLana o dilogo modal con la que se muesLra la app
de Accin personalizada es nuevamenLe un !"#$%&, solo que un !"#$%& )"/ :/"$ '$+2&"$ ;("6
pios que da auLomLicamenLe el propio SharePoinL medianLe JavaScripL y CSS que permiLen
realzarlo. Por lo que siendo un !"#$%& como es, podemos usar los mismos mecanismos que
usamos para las App ParLs, es decir, reerenciar la hoja de esLilos "comodn" E&M$K)+:$70Y, y as
conseguir que la app de Accin personalizada, que se muesLra denLro de un dilogo modal,
herede los esLilos del siLio acLual.
'$0( 98 Solo queda depurar nuevamenLe el proyecLo medianLe visual SLudio, para com6
probar cmo se comporLa la app de Accin personalizada, y ver si eecLivamenLe, como es de
esperar, obLiene los esLilos del siLio acLual, al esLar uLilizando la misma Lcnica que usamos en
la App ParL anLerior para reerenciar la hoja de esLilos "comodn". Para ello, una vez en modo
depuracin, accedemos a una biblioLeca de documenLos de SharePoinL, donde Lengamos al
menos un documenLo, y expandimos el men de edicin de un elemenLo.
129
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-39. Nueva opcin denLro del men de edicin
vemos que eecLivamenLe, conLamos con la nueva opcin denLro del men de edicin del
elemenLo de la biblioLeca de documenLos. vamos a ver a conLinuacin, cul es la accin que
realiza.
Figura 3-40. ResulLado de la accin personalizada
aqu lo Lenemos. vemos que como era de esperar, mosLramos el mismo conLenido (la
misma pgina) que la App ParL que desarrollamos anLeriormenLe. Fn esLa ocasin, esLamos
usando una app de Accin personalizada, apoyndose en las posibilidades que orecen sLas
en SharePoinL 203 de mosLrar el conLenido de las 8K7+(%I*+!(,N en venLanas modales.
130
Captulo 3: Desarrollo de SharePoint Apps
Fjemplo prcLico
A modo de resumen de Lodo lo visLo hasLa ahora, vamos a consLruir desde cero una
SharePoinL-hosLed App, donde veamos cul podra ser el proceso "real" de desarrollar una app
para SharePoinL 203. La idea es desarrollar una App ParL que sirva para consLruir ormularios
a medida. Fs decir, nicamenLe congurando esLa App ParL, podemos aadir LanLos campos
al ormulario como queramos, del Lipo que queramos, y en el orden que queramos. Suena
bien verdad Para esLe ejemplo, y dado que esLamos hablando de maqueLacin y diseo, nos
vamos a cenLrar precisamenLe en eso, en maqueLar y disear la app. Queda a cargo del lecLor,
una vez ledo el capLulo siguienLe donde hablaremos del ModeIo de Objetos de CIiente y eI
APl Rest de 5harePoint 20l3, implemenLar la lgica de la app. Dicha lgica sera sencilla de
implemenLar, ya lo nico que Lendra que hacer sera leer los valores del ormulario y crear un
elemenLo con ellos en una lisLa de SharePoinL. As pues, vamos paso a paso.
SL2/ L 4L2/ 4L0L 3L=10 -ML L44 =/>491.L
'$0( 48 Fl primer paso, y ms sencillo, es crear el proyecLo para una SharePoinL-hosLed
App en visual SLudio 202. AnLes, deberamos haber creado una aplicacin web de SharePoinL
desde la adminisLracin cenLral, usando la planLilla de ")+)( 6&1 >&0$%%(11$6(%, Lal y como
vimos en el capLulo anLerior.
'$0( 28 Fn esLe momenLo ya Lenemos una app de Pgina compleLa plenamenLe uncional.
Fl proyecLo en "limpio" que crea visual SLudio 202 para las SharePoinL-hosLed Apps, conLiene
el cdigo y los archivos necesarios para crear una app a Pgina compleLa con el clsico "Hola
Mundo". Fn nuesLro caso vamos a consLruir una App ParL, por lo que aadimos un nuevo ele6
menLo al proyecLo del Lipo ClienL Web ParL.
'$0( 98 Una vez aadido la App ParL al proyecLo, vamos a aadir en el mdulo Pages una
nueva pgina.
131
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-4. Aadir un elemenLo de Lipo Pgina (Page) al ProyecLo de visual SLudio
202
Paso 4. Fn la pgina que acabamos de aadir al proyecLo, vamos a escribir el cuerpo de la
app. Fs decir, aqu es donde se maqueta Ia app. Fn esLe caso, podemos susLiLuir Lodo el con6
Lenido de la pgina, por el que sigue.

Sfg `#H-0$#2 1agprefxL4\#J&,2$&,H#04
D,+#0(,3#L4G-32*0*R$1"<,2#&*-.$1\#J&,2$&,H#04
'00#+JNAL4G-32*0*R$1"<,2#&*-.$h a#20-*.LUi1V1V1Vh [IN$I2#L.#I$2,Nh
&IJN-3j#A@*k#.LlU#mJ3#UUU#m7_m34 fX
S\#J&,2$&,H#0Q'NN*;c2,+-.H 9)L4,NN*;R2,+-.H4 2I.,$L40#26#24 ZX
Sd){[@|&Y <$+NX
S<$+NX
S<#,5X
S$-$N#XGA [I0$*+ c*2+SZ$-$N#X
Sd%% o" %%X
S032-($ $A(#L4$#P$Zq,6,032-($4 023L411Z032-($0ZqFI#2A%U1y1_1+-.1q04X
SZ032-($X
S032-($ $A(#L4$#P$Zq,6,032-($4 023L411Z032-($0Z'((1q04XSZ032-($X
Sd%% [""%%X
SN-.k $A(#L4$#P$Z3004 2#NL40$AN#0<##$4 <2#RL411Z[*.$#.$Z'((13004 ZX
SZ<#,5X
SJ*5AX
SR*2+X
132
Captulo 3: Desarrollo de SharePoint Apps
S5-6 -5L43*.$,-.#24X
S5-6 3N,00L4$-$N# +0%3*2#%(,H#@-$N#4XSZ5-6X
S5-6 3N,00L4JI$$*.04XSZ5-6X
SZ5-6X
SZR*2+X
SZJ*5AX
SZ<$+NX
Como vemos, usamos H1ML5 bsico para maqueLar la app. Nada exLrao hasLa aqu. Lo
nico que pudiera resulLar "raro" es la lnea cdigo que aparece resalLada. NecesiLamos incluir
'& )"/+("& I))(J"#$%!,- (as como la reerencia a la DLL que lo conLiene), para poder permiLir
9:' &, ;.<2/, $' 02$:,&2)' #'/+(" :/ !"#$%&. De lo conLrario obLendramos un error indicando,
liLeralmenLe. ste contenido no se puede mostrar en un ilrame ad&3:2 =/M.1M./ =LMM/. N1
;:249LJ1; :M L Z0L>1e)8
Por oLro lado, vemos que el cuerpo de la pgina es realmenLe muy sencillo. FsLo es porque
realmenLe el conLenido de la app lo vamos a generar dinmicamenLe medianLe JavaScripL.
'$0( R8 Fn la pgina anLerior Lenemos la reerencia al archivo I//:*778 Fn esLe paso vamos
a ediLar dicho archivo para denir los esLilos que necesiLamos. Por LanLo, abrimos el archivo
I//:*77 que se genera auLomLicamenLe con el proyecLo y se encuenLra vaco, y aadimos el
$2<:2'/+' )"/+'/2#"=

3*.$,-.#2 =
;-5$<:auto, foat:1e1t,
J,3kH2*I.5%3*N*2Q2HJBWmh Um_h yUCvK
3*.$,-.#2 12#H-0$#2 =
+,2H-.QV V UV(P Vv
(,55-.HQUV(P 7V(P _V(P 7V(PvK
3*.$,-.#2 12#H-0$#2 0(,.1+0%3*++,.5r-.k =
;-5$<QiV(Pv
+,2H-.%2-H<$QUi(Pv
5-0(N,AQJN*3kv 3*N*2Qcccv K
3*.$,-.#2 12#H-0$#2 -.(I$s$A(#L$#P$t=
;-5$<Q]VV(Pv
<#-H<$Q_i(Pv
3*N*2Q2HJBWmh Um_h yUCvK
3*.$,-.#2 12#H-0$#2 0#N#3$=
;-5$<Q]VV(PvK
3*.$,-.#2 1JI$$*.0 =
133
Captulo 3: Desarrollo de SharePoint Apps
+,2H-.%N#R$Q]V(Pv
+,2H-.%J*$$*+Q]V(Pv
+,2H-.%$*(Q7V(PvK
3*.$,-.#2 1JI$$*.0 JI$$*.=
;-5$<QUiV(Pv
R*.$%0-~#QUi(Pv
3*N*2Q2HJBWmh Um_h yUCvK
3*.$,-.#2 1$-$N# =
3*N*2Qcccv
+,2H-.%N#R$Q7V(Pv
+,2H-.%J*$$*+QUi(Pv
R*.$%0-~#Q7V($vK
'$0( S8 Ahora le Loca el Lurno al JavaScripL. FdiLamos el archivo App.]s, y susLiLuimos Lodo
su conLenido, por las siguienLes unciones. lremos comenLando sobre la marcha para qu se
usa cada una.

6,2 <*0$;#JI2Nv
BRI.3$-*. BC =
ZZ8#$ $<# b`9 5#3*5#5 ,(( ;#J b`r1
<*0$;#JI2N L 5#3*5#b`9[*+(*.#.$BH#$pI#2A"$2-.H&,2,+#$#2B/"&^*0$b2N4CCv
6,2 032-($J,0# L <*0$;#JI2N w /Z?N,A*I$0ZUiZ4v
6,2 53N-.k L 5*3I+#.$132#,$#YN#+#.$B/N-.k4Cv
53N-.k10#$'$$2-JI$#B/2#N4h /0$AN#0<##$4Cv
53N-.k10#$'$$2-JI$#B/<2#R4h 032-($J,0# w /5#R,IN$3001,0<P4Cv
6,2 <#,5 L 5*3I+#.$1H#$YN#+#.$0OA@,HD,+#B/<#,54Cv
<#,5sVt1,((#.5[<-N5B53N-.kCv
KCBCv
RI.3$-*. 0<,2#&*-.$`#,5ABC =
JI-N5[I0$*+c*2+BCv
R*2+c*3I0BCv
K
Fn primer lugar, usamos el mecanismo que acabamos de ver para reerenciar los esLilos
de SharePoinL en App ParLs. A conLinuacin, en la uncin 40$#&<(!,+N&$E., que como ya vimos,
espera a que esL cargado Lodo el DOM de la pgina, y Lambin resLo de archivos JavaScripL
de SharePoinL, hacemos el resLo de llamadas a las unciones JavaScripL.
134
Captulo 3: Desarrollo de SharePoint Apps

RI.3$-*. JI-N5[I0$*+c*2+BC =
6,2 *25#2 L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz*25#2xCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz*25#2xC10(N-$B/v4C Q /4v
6,2 (N,-. L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz(N,-.xCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz(N,-.xC10(N-$B/v4C Q /4v
6,2 ,2#, L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz,2#,xCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz,2#,xC10(N-$B/v4C Q /4v
6,2 2,5-* L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz2,5-*xCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz2,5-*xC10(N-$B/v4C Q /4v
6,2 3<#3k L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz3<#3kxCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz3<#3kxC10(N-$B/v4C Q /4v
6,2 52*(5*;. L B#P-0$0pI#2A"$2-.H&,2,+#$#2Bz52*(5*;.xCC T
H#$pI#2A"$2-.H&,2,+#$#2Bz52*(5*;.xC10(N-$B/v4C Q /4v
6,2 JI$$*. L B#P-0$0pI#2A"$2-.H&,2,+#$#2BzJI$$*.xCC T
H#$pI#2A"$2-.H&,2,+#$#2BzJI$$*.xC10(N-$B/v4C Q /4v
R*2 B6,2 - L Vv - S *25#21N#.H$<v -wwC =
ZZ[,q,0 5# $#P$* (N,.*
R*2 B6,2 q L Vv q S (N,-.1N#.H$<v qwwC =
6,2 N,J#N L (N,-.sqtv
-R BN,J#N1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
qpI#2AB/3*.$,-.#24C1,((#.5B/S5-6 3N,00Lx2#H-0$#2xX
S0(,. 3N,00Lx+0%3*++,.5r-.kxX4 w
(N,-.sqt w /SZ0(,.XS-.(I$ $A(#Lx$#P$xZXSZ5-6X4Cv
J2#,kv
K
K
ZZ[,q,0 5# ,2#, 5# $#P$*
R*2 B6,2 k L Vv k S ,2#,1N#.H$<v kwwC =
6,2 N,J#N L ,2#,skt10IJ0$2-.HBVh ,2#,skt1-.5#P{RBzszCCv
-R BN,J#N1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
6,2 $#P$'2#, L ,2#,skt10IJ0$2-.HB,2#,skt1-.5#P{RBzszC w Uh
,2#,skt1-.5#P{RBztxCCv
6,2 2*;0 L $#P$'2#,10(N-$B/%4CsVtv
6,2 3*N0 L $#P$'2#,10(N-$B/%4CsUtv
qpI#2AB/3*.$,-.#24C1,((#.5B/S5-6 3N,00Lx2#H-0$#2xX
S0(,. 3N,00Lx+0%3*++,.5r-.kxX4 w
N,J#N w /SZ0(,.XS$#P$,2#, 2*;0Lx4 w 2*;0 w /x 3*N0Lx4 w
3*N0 w /xZXSZ5-6X4Cv
J2#,kv
K
K
ZZ`,5-* JI$$*.0
R*2 B6,2 + L Vv + S 2,5-*1N#.H$<v +wwC =
135
Captulo 3: Desarrollo de SharePoint Apps
6,2 .,+# L 2,5-*s+t10IJ0$2-.HBVh 2,5-*s+t1-.5#P{RBzszCCv
-R B.,+#1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
6,2 3<*-3#0 L 2,5-*s+t10IJ0$2-.HB2,5-*s+t1-.5#P{RBzszC w Uh
2,5-*s+t1-.5#P{RBztxCC10(N-$B/%4Cv
6,2 2#0IN$ L /4v
R*2 B6,2 . L Vv . S 3<*-3#01N#.H$<v .wwC =
-R B3<*-3#0s.t13<,2'$BVC LL /4C =
2#0IN$ wL /S-.(I$ $A(#Lx2,5-*x .,+#Lx4 w
.,+#1$*r*;#2[,0#BC w /x 6,NI#Lx4 w
3<*-3#0s.t12#(N,3#Bzxh zxC1$*r*;#2[,0#BC w /x
[^Y[jY)X4 w $*@-$N#[,0#B3<*-3#0s.t12#(N,3#Bzxh
zxCCv
K
#N0# =
2#0IN$ wL /S-.(I$ $A(#Lx2,5-*x .,+#Lx4 w
.,+#1$*r*;#2[,0#BC w /x 6,NI#Lx4 w
3<*-3#0s.t1$*r*;#2[,0#BC w /xX4 w
$*@-$N#[,0#B3<*-3#0s.tCv
K
K
qpI#2AB/3*.$,-.#24C1,((#.5B/S5-6 3N,00Lx2#H-0$#2xX
S0(,. 3N,00Lx+0%3*++,.5r-.kxX4 w
$*@-$N#[,0#B.,+#C w /SZ0(,.X4 w 2#0IN$ w /SZ5-6X4Cv
J2#,kv
K
K
ZZ3<#3k JI$$*.0
R*2 B6,2 N L Vv N S 3<#3k1N#.H$<v NwwC =
6,2 .,+# L 3<#3ksNt10IJ0$2-.HBVh 3<#3ksNt1-.5#P{RBzszCCv
-R B.,+#1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
6,2 3<*-3#0 L 3<#3ksNt10IJ0$2-.HB3<#3ksNt1-.5#P{RBzszC w Uh
3<#3ksNt1-.5#P{RBztxCC10(N-$B/%4Cv
6,2 2#0IN$ L /4v
R*2 B6,2 * L Vv * S 3<*-3#01N#.H$<v *wwC =
-R B3<*-3#0s*t13<,2'$BVC LL /4C =
2#0IN$ wL /S-.(I$ $A(#Lx3<#3kJ*Px .,+#Lx4 w
.,+#1$*r*;#2[,0#BC w /x 6,NI#Lx4 w
3<*-3#0s*t12#(N,3#Bzxh zxC1$*r*;#2[,0#BC w /x
[^Y[jY)X4 w $*@-$N#[,0#B3<*-3#0s*t12#(N,3#Bzxh
zxCCv
K
#N0# =
2#0IN$ wL /S-.(I$ $A(#Lx3<#3kJ*Px .,+#Lx4 w
.,+#1$*r*;#2[,0#BC w /x 6,NI#Lx4 w
3<*-3#0s*t1$*r*;#2[,0#BC w /xX4 w
$*@-$N#[,0#B3<*-3#0s*tCv
136
Captulo 3: Desarrollo de SharePoint Apps
K
K
qpI#2AB/3*.$,-.#24C1,((#.5B/S5-6 3N,00Lx2#H-0$#2xX
S0(,. 3N,00Lx+0%3*++,.5r-.kxX4 w
$*@-$N#[,0#B.,+#C w /SZ0(,.X4 w 2#0IN$ w /SZ5-6X4Cv
J2#,kv
K
K
ZZ52*( 5*;. N-0$
R*2 B6,2 ( L Vv ( S 52*(5*;.1N#.H$<v (wwC =
6,2 .,+# L 52*(5*;.s(t10IJ0$2-.HBVh 52*(5*;.s(t1-.5#P{RBzszCCv
-R B.,+#1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
6,2 3<*-3#0 L 52*(5*;.s(t10IJ0$2-.HB52*(5*;.s(t1-.5#P{RBzszC
w Uh 52*(5*;.s(t1-.5#P{RBztxCC10(N-$B/%4Cv
6,2 2#0IN$ L /S0#N#3$X4v
R*2 B6,2 F L Vv F S 3<*-3#01N#.H$<v FwwC =
-R B3<*-3#0sFt13<,2'$BVC LL /4C =
2#0IN$ wL /S*($-*. 6,NI#Lx4 w 3<*-3#0sFt12#(N,3#Bzxh
zxC1$*r*;#2[,0#BC w /x
"YrY[@Y)X4 w $*@-$N#[,0#B3<*-3#0sFt12#(N,3#Bzxh
zxCC w /SZ*($-*.X4v
K
#N0# =
2#0IN$ wL /S*($-*. 6,NI#Lx4 w
3<*-3#0sFt1$*r*;#2[,0#BC w /xX4 w
$*@-$N#[,0#B3<*-3#0sFtC w /SZ*($-*.X4v
K
K
2#0IN$ wL /SZ0#N#3$X4v

qpI#2AB/3*.$,-.#24C1,((#.5B/S5-6 3N,00Lx2#H-0$#2xX
S0(,. 3N,00Lx+0%3*++,.5r-.kxX4 w
$*@-$N#[,0#B.,+#C w /SZ0(,.X4 w 2#0IN$ w /SZ5-6X4Cv
J2#,kv
K
K
ZZJI$$*.0
R*2 B6,2 2 L Vv 2 S JI$$*.1N#.H$<v 2wwC =
6,2 .,+# L JI$$*.s2t10IJ0$2-.HBVh JI$$*.s2t1-.5#P{RBzszCCv
-R B.,+#1$*r*;#2[,0#BC LL *25#2s-t1$*r*;#2[,0#BCC =
6,2 $A(# L JI$$*.s2t10IJ0$2-.HBJI$$*.s2t1-.5#P{RBzszC w Uh
JI$$*.s2t1-.5#P{RBztxCC1$*r*;#2[,0#BCv
qpI#2AB/3*.$,-.#2 X 1JI$$*.04C1,((#.5B/SJI$$*. $A(#Lx4 w
$A(# w /xX4 w $*@-$N#[,0#B.,+#C w /SZJI$$*.X4Cv
J2#,kv
K
137
Captulo 3: Desarrollo de SharePoint Apps
K
K
ZZ',5-+*0 #N $-$IN*
qpI#2AB/3*.$,-.#2 X 5-61$-$N#1<$+NB$-$N#12#(N,3#B/f_V4h / /CCv
,,Movemos 1os botones a1 fna1 de1 1ormu1aro
qpI#2AB/3*.$,-.#24C1,((#.5BqpI#2AB/3*.$,-.#2 X 1JI$$*.04CCv
K
Fn esLa uncin recae Lodo el peso de la lgica de la App ParL. Lo que se hace en ella es ni6
camenLe consulLar la 5K&#.4+#!,- en busca de una sera de parmeLros concreLos, y despus
ormar los campos del ormulario a parLir de la inormacin de esLos parmeLros. Cada uno de
esLos parmeLros se corresponde con campos a inserLar dinmicamenLe en el ormulario. La
clave esL en que esLos parmeLros Lienen un valor con un ormaLo especco, de manera que
su inLerpreLacin da inormacin acerca de cmo crear el campo en cuesLin. FsLos son los
nombres de los parmeLros, con el Lipo de campo de ormulario que crean y el ormaLo que
:$,/=
Cajas de texto pIano= /)$!,P8$%/(R_8$%/(S_8$%/(T
Donde los valores /$-E(4 y /$-E(2 indican el nombre de la eLiqueLa que da nombre
a las cajas de LexLo.
Cajas de reas de texto= $#&$P8$%/(RdM;*e_8$%/(SdM;*e_8$%/(TdM;*e
Donde el valor *$%/(R y *$%/(R, indican el nombre de la eLiqueLa que acompaa a la caja
de rea de LexLo, y los valores M y * se corresponden con el numero de las y columnas con los
que crear la caja de LexLo.
Y(+(*&0 +)E( %$6)(_ #$E!(P8$%/(Rda$)(#R;a$)(#Se_8$%/(Sda$)(#R;fa$)(#Se
Donde los valores *$%/(R y *$%/(S, indican el nombre de la eLiqueLa que acompaa a la
boLones de Lipo radio, y los valores a$)(#R y a$)(#S, son los posibles valores. Por ejemplo, un
:$" ;"#(>, $'(= radio=Sexo{Hombre-Mu]er)
Podemos poner el carcLer almohadilla (f) delanLe de un valor, para especicar que sea el
valor por deecLo. Por ejemplo. radio=Color{Amarillo-ko]o-#Azul)
Botones de cajas de vaIidacin (6/%6=8"<%2). *0&*FP8$%/(Rda$)(#R;a$)(#Se_
138
Captulo 3: Desarrollo de SharePoint Apps
Fs el mismo uncionamienLo que en el caso anLerior, solo que el resulLado se muesLra
como boLones de cajas de validacin.
Listas despIegabIes(dropodown Iist). E#(/E(J,P8$%/(Rda$)(#R;a$)(#S;a$)(#Te_
Fs el mismo uncionamienLo que en el caso anLerior, solo que el resulLado se muesLra
como una lisLa desplegable.
Y(+(*&0_ OK++(,P=(+(,Rd4KO%!+e_=(+(,SdN&7&+e
Donde los valores =(+(,R y =(+(,S, indican el LexLo denLro del boLn, y el conLenido denLro
de los corcheLes es la uncin que realizan.
V%6&* 6& 1(0 /$-E(0_ (#E&#P8$%/(R_8$%/(S_8$%/(T_8$%/(U
Por lLimo Lenemos el parmeLro (#E&# para indicar en qu orden queremos que apa6
rezcan los campos en el ormulario. Para ello, simplemenLe se escriben secuencialmenLe los
nombres de los campos que hemos ido poniendo, en el orden que aparezcan. Si el nombre del
algn campo no aparece, esLe no se mosLrar.

RI.3$-*. H#$pI#2A"$2-.H&,2,+#$#2B(,2,+@*`#$2-#6#C =
6,2 (,2,+0 L 5*3I+#.$1b`r10(N-$B/T4CsUt10(N-$B/u4Cv
6,2 0$2&,2,+0 L /4v
R*2 B6,2 - L Vv - S (,2,+01N#.H$<v - L - w UC =
6,2 0-.HN#&,2,+ L (,2,+0s-t10(N-$B/L4Cv
-R B0-.HN#&,2,+sVt LL (,2,+@*`#$2-#6#C 2#$I2. 0-.HN#&,2,+sUtv
K
K
RI.3$-*. exstsqueryStrngarameter{fe1d) {
6,2 I2N L ;-.5*;1N*3,$-*.1<2#Rv
-R BI2N1-.5#P{RBzTx + fe1d + zLxC dL %UC 2#$I2. $2I#v
#N0# -R BI2N1-.5#P{RBzux + fe1d + zLxC dL %UC 2#$I2. $2I#v
2#$I2. R,N0#v
K
RI.3$-*. $*@-$N#[,0#B0$2C =
2#$I2. 0$212#(N,3#BZM;M"ZHh RI.3$-*. B$P$C = 2#$I2.
$P$13<,2'$BVC1$*b((#2[,0#BC w $P$10IJ0$2BUC1$*r*;#2[,0#BCv KCv
K
RI.3$-*. R*2+c*3I0BC =
6,2 -.(I$0 L qpI#2AB/3*.$,-.#2 X 5-612#H-0$#2 X -.(I$s$A(#L$#P$t4Cv
6,2 (2#6[*N*2 L qpI#2AB/3*.$,-.#24C1300B/J,3kH2*I.5%3*N*24Cv
-.(I$01R*3I0BRI.3$-*. BC =
139
Captulo 3: Desarrollo de SharePoint Apps
qpI#2AB$<-0C1(,2#.$B/5-612#H-0$#24C1300B/J,3kH2*I.5%3*N*24h
/2HJBlmhUl_hiiC4Cv
qpI#2AB$<-0C1300B/J,3kH2*I.5%3*N*24h /ccc4Cv
KC1JNI2BRI.3$-*. BC =
qpI#2AB$<-0C1(,2#.$B/5-612#H-0$#24C1300B/J,3kH2*I.5%3*N*24h
(2#6[*N*2Cv
qpI#2AB$<-0C1300B/J,3kH2*I.5%3*N*24h /2HJ,B_iih _iih _iih V1WiC4Cv
KCv
K
Fl resLo de unciones se uLilizan como "herramienLas" para consulLar la 5K&#.4+#!,-, com6
probar si Liene valor algn parmeLro de la 5K&#.4+#!,-, y dejar en minsculas una cadena
de LexLo, excepLo el primer carcLer. La uncin M(#%"(*K7 se uLiliza para resalLar el campo del
ormulario que esL ediLando el usuario.
Paso 7. a Lenemos casi Lodos los componenLes lisLos. 1an solo nos alLa congurar la App
ParL medianLe su chero C)&%&,+7:Y%) asociada, para indicarle qu pgina debe usar, cul es el
Lamao del !"#$%& donde se muesLra, y cules van a ser sus parmeLros de conguracin. Para
ello ediLamos el archivo C)&%&,+7:Y%), y susLiLuimos su conLenido por el siguienLe.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4b@c%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S[N-#.$\#J&,2$ @-$N#L4[I0$*+ c*2+4 D,+#L4[I0$*+ c*2+4
)#032-($-*.L4GA [I0$*+ c*2+d14
)#R,IN$^#-H<$L4yVV4 )#R,IN$\-5$<L4]m_4X
<!-- las propedades de confguracon de1 ^pp art se pasan medante 1a
pI#2A "$2-.H #. #N 0-HI-#.$# R*2+,$*Q ?.*+J2#&2*(-#5,5? #. N,
(2*(-#5,5 z"23x 5#N #N#+#.$* [*.$#.$%%X
S[*.$#.$ "23L4e,((\#Jb2NZ&,H#0Z[I0$*+c*2+'((&,2$&,H#1,0(PT$-$IN*L?$-$IN*?
u,+(v(N,-.L?(N,-.?u,+(v,2#,L?,2#,?u,+(v2,5-*L?2,5-*?u,+(v
3<#3kL?3<#3k?u,+(v 52*(5*;.L?52*(5*;.?u,+(v JI$$*.L?JI$$*.?
u,+(v*25#2L?*25#2?u,+(v="$,.5,25@*k#.0K4
@A(#L4<$+N4ZX
S&2*(#2$-#0X
S&2*(#2$A
D,+#L4$-$IN*4
@A(#L4$-$IN*4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4[*.$,3$ b04
\#J[,$#H*2A="Confguracon"
140
Captulo 3: Desarrollo de SharePoint Apps
\#J)-0(N,AD,+#L4[,q,0 5# $#P$*Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L4(N,-.4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4D*+J2#v'(#NN-5*0vY+,-Nv\#J0-$#4
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4[,q,0 5# $#P$*Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L4,2#,4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4G#.0,q#sUV%7Ut4
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4[,q,0 5# ,2#, 5# $#P$*Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L42,5-*4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4"#P*s^*+J2#%GIq#2t4
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4O*$*.#0 5# $-(* 2,5-*Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L43<#3k4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#="^fconesj0eporte-vaar-Cne-lectura-Iesta"
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4O*$*.#0 5# 3,q,0 5# 6,N-5,3-}.Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L452*(5*;.4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4&,-0s'2H#.$-.,%9$,N-,%c2,.3-,%b"'%{$2*0t4
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4r-0$,0 5#0(N#H,JN#0Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L4JI$$*.4
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
141
Captulo 3: Desarrollo de SharePoint Apps
)#R,IN$a,NI#L4Y.6-,2s0IJ+-$tvr-+(-,2s2#0#$t4
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4O*$*.#0Q4X
SZ&2*(#2$AX
S&2*(#2$A
D,+#L4*25#24
@A(#L40$2-.H4
`#FI-2#0)#0-H.#2&#2+-00-*.L4$2I#4
)#R,IN$a,NI#L4D*+J2#v'(#NN-5*0vY+,-Nv\#J0-$#vr-+(-,2vY.6-,24
\#J[,$#H*2AL4[,+(*04
\#J)-0(N,AD,+#L4{25#. 5# N*0 3,+(*0Q4X
SZ&2*(#2$AX
SZ&2*(#2$-#0X
SZ[N-#.$\#J&,2$X
SZYN#+#.$0X
@& )"/+'/2#" #' '$+' C)&%&,+7:Y%) ya no nos debe pillar por sorpresa. Fn primer lugar
denimos el conLenido del mismo, y en segundo lugar, las propiedades de conguracin, que
&' $'(./ '/02,#,$ , &, AEE '$%+ -&6)$*+& \?&%F"+%)*=. Fs por eso que cuando especicamos
la URL de la pgina que conLiene el cuerpo de la app, anidamos en ella Lodos los parmeLros
#' &, 5K&#.4+#!,- que hemos denido, siguiendo un ormaLo especicado por SharePoinL. Son
esLos parmeLros en la 5K&#.4+#!,-, los que consulLaremos y LraLaremos desde las unciones
JavaScripL que hemos denido anLeriormenLe.
Adems, nos debemos jar que a los parmeLros de conguracin que denimos, pode6
mos ponerle unos valores por deecLo. Fn esLe caso, esLos valores por deecLo esLn esLable6
cidos para crear un ormulario bsico de conLacLo. Aunque Lodos los parmeLros Lienen valor,
jmonos en la propiedad (#E&#, donde solo incluimos algunos de ellos. Fl resLo se quedan a
modo de ejemplo para uLuros usos.
'$0( H8 a solo queda depurar la aplicacin desde visual SLudio 202, y comprobar cul
es el resulLado de nuesLra App ParL. Para ello, como siempre, pulsamos [F5] y esperamos a que
se inicie una insLancia del navegador que Lengamos denido por deecLo. A conLinuacin, se
nos pedir que inLroduzcamos las credenciales. FinalmenLe, accederemos al lisLado de apps
que hay insLaladas en el SiLio del Desarrollador que hayamos especicado. Comprobamos que
eecLivamenLe, aparece nuesLra app enLre ellas.
Como hemos creado una App ParL, para verla en accin, accedemos a alguna pgina cual6
quiera, la ediLamos, y aadimos un Web ParL en la zona que queramos. 8ajo la seccin de Apps,
debemos enconLrar a nuesLra app. Una vez la incluyamos en la pgina, sLa deber de ser el
aspecLo nal.
142
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-42. ResulLado nal de la App ParL

Como vemos, hemos conseguido una app plenamenLe uncional, sin renunciar a un buen
diseo. Fn esLe caso, esLamos aadiendo simplemenLe cuaLro campos de caja de LexLo simples,
y dos boLones, pero gracias a los parmeLros de conguracin que se le envan medianLe
5K&#.4+#!,-, podramos adapLar la App ParL segn los requisiLos del momenLo, LanLo como
quisiramos. Solo sera cuesLin de ediLar la App ParL medianLe su panel de conguracin
(igual que haramos para un elemenLo web $C'- 5,(+! clsico), y aadir nuevos campos
siguiendo los ormaLos que vimos anLeriormenLe.
con esLe ejemplo, damos por Lerminada la seccin dedicada a hablar de cmo maqueLar
y disear SharePoinL-hosLed Apps. Hemos visLo que desarrollar apps desde cero, disLa muy
poco de disear cualquier pgina de una aplicacin web, siendo sLe su principal "reclamo".
Pasamos ahora a ver qu Lenemos que Lener en cuenLa si nos decidimos por las Cloud-hosLed
Apps.
143
Captulo 3: Desarrollo de SharePoint Apps
Cloud-hosLed Apps
lnLroduccin
Una vez explicadas las apps que "viven" en el propio SharePoinL, desde el punLo de visLa
ms esLricLamenLe relacionado con diseo y la maqueLacin, Loca hacer lo propio con las apps
que se encuenLran al oLro lado de la arquiLecLura, es decir, aquellas que Lienen su "casa" en la
Nube.
DenLro de esLa subcaLegorizacin de apps (la de las Cloud-hosLed Apps), Lenemos a su vez
dos opciones. AuLohosLed Apps, y Provider-hosLed Apps. A esLas alLuras de esLe libro, ya sabe6
mos que las AuLohosLed se caracLerizan por usar AJ?%& como servidor en la Nube predenido
(y por LanLo, la opcin recomendada por MicrosoL), mienLras que con las Provider-hosLed no
Lenemos ninguna limiLacin, en cuanLo a qu Lipo de hospedaje en la Nube uLilizar (aunque
Lodo el manLenimienLo, obviamenLe, corre por nuesLra cuenLa). Fn cualquier caso, elijamos un
mecanismo u oLro para ubicar nuesLras apps en la Nube, en ambos casos hay un punLo muy
imporLanLe a Lener en cuenLa. podemos uLilizar cuaIquier tecnoIoga web para desarrollar,
y por LanLo, maqueLar y disear nuesLra SharePoinL app. FsLe es un punLo del que ya hemos
hablado anLeriormenLe, pero que considero que merece la pena reincidir, porque es una de
las premisas en las que MicrosoL ms cona para garanLizar el xiLo de su plaLaorma de apps
para SharePoinL. Dado que 5harePoint 20l3 se basa en tecnoIogas web que son estnW
6$%&0 como H1ML, CSS, JavaScripL, ODaLa, ResL, eLc., desarrollar para SharePoinL deja de ser
exclusivo para los desarrolladores anes a MicrosoL. De hecho, hay una rase en la documen6
Lacin de MSDN de MicrosoL que dene perecLamenLe, de orma muy concisa, el mensaje
que se quiere LransmiLir.
"Las apps son bsicamenLe aplicaciones web. Si sabes hacer una aplicacin web, sabes
hacer una app para SharePoinL."
Por LanLo, las Cloud-hosLed Apps son una gran oporLunidad de negocio, que debemos Lener
muy presenLe, cuando vayamos a decidirnos sobre qu Lipo de app basar nuesLro desarrollo.
CenLrndonos en el asunLo que nos preocupa en esLe capLulo, la maqueLacin y diseo de
apps, es obvio que maqueLar y disear Cloud-hosLed Apps es mucho ms "libre" que en el caso
de las SharePoinL-hosLed Apps. Aqu no Lenemos reglas que seguir, en cuanLo a una pgina
maesLra que se aplica por deecLo, una maqueLacin basada en 8(,+&,+<)$*&V()E&#7, eLc. Aqu,
lo que Lenemos es un lienzo compleLamenLe en blanco. ParLimos de cero. Lo cual Lambin
Liene sus venLajas. Por ejemplo, si ya Lenemos una app de Facebook en PHP, adapLarla para
que se convierLa en una app de SharePoinL, solo sera cuesLin de modicar el acceso a daLos,
ya que la presenLacin nos podra valer la misma. AnLeriormenLe, hemos hablado de cenLrar
nuesLro oco en la maqueLacin y diseo de apps, en conseguir que se adapLen al enLorno que
144
Captulo 3: Desarrollo de SharePoint Apps
las conLiene y parezcan un elemenLo ms de l, en vez de un parche. Cmo conseguimos esLo
con una Cloud-hosLed !44` ;/M;1 M/ .1M1>/2 M:MP-ML =/M1R:\M ;:01=.L =/M Q3L01S/:M.f 8ueno,
a sLa y oLras pregunLas, vamos a LraLar de darle respuesLa en esLa seccin.
FsLrucLura de un proyecLo Cloud-hosLed
Dado que vimos en la seccin anLerior cul es la esLrucLura de un proyecLo SharePoinL-
hosLed, vamos a hacer lo propio con un proyecLo Cloud-hosLed.
Figura 3-43. FsLrucLura de un proyecLo Cloud-hosLed
La esLrucLura de una Cloud-hosLed App que se crea en visual SLudio 202 con las corres6
pondienLes planLillas es la misma para AuLohosLed y Provider-hosLed. Fn ambos casos, Lene6
mos una solucin que conLiene un proyecLo para la denicin de la app, medianLe el archivo
I//>$,!M&7+:Y%). oLro proyecLo con una aplicacin web ASP.NF1 clsica, con la que dar orma
a la app. Hay que Lener claro, que sLe es el proyecLo base que orece visual SLudio 200. Si no
queremos una aplicacin web basada en ASP.NF1, incluso como si no queremos usar visual
SLudio, como ya hemos visLo, no Lenemos ninguna obligacin. Pero resulLa lgico, que usando
visual SLudio como plaLaorma de desarrollo, se proporcione ASP.NF1 como Lecnologa base.
As pues, analizando los componenLes de la Cloud-hosLed App, vemos que sLa se encuen6
Lra compleLamenLe vaca, a dierencia del proyecLo base de visual SLudio para la SharePoinL-
hosLed App. Como vimos para las SharePoinL-hosLed Apps, el proyecLo que crea visual SLudio
202 ya conLiene una serie de archivos por deecLo, a parLir de los cuales iniciar el desarrollo.
Pero en esLe caso, si queremos aadir archivos CSS, JavaScripL o pginas H1ML, Lenemos que
ir a la aplicacin web y aadirlos manualmenLe, y seguidamenLe incluir las reerencias que
Loquen. 1enemos liberLad LoLal para desarrollar y maqueLar, pero esa liberLad Lambin conlleva
un poco de Lrabajo exLra por nuesLra parLe. La "magia" de visual SLudio 202 hace que cuando
145
Captulo 3: Desarrollo de SharePoint Apps
depuramos la app, se lance un ll5 xpress para ejecuLar la aplicacin web, y a donde se dirigen
las soliciLudes desde el siLio SharePoinL "anLrin".
AnLes de conLinuar, resulLa inLeresanLe comenLar que en las Cloud-hosLed Apps, podemos
seguir usando componenLes de SharePoinL como lisLas, mdulos, columnas de siLios, eLc. Fs
decir, en el proyecLo que conLiene la denicin de la app, podramos aadir un nuevo elemenLo
de SharePoinL. La pregunLa enLonces sera, si en esLe caso mi app no se aloja en SharePoinL,
donde se crean esos componenLes Pues la respuesLa es que SharePoinL crea un nuevo siLio,
como el que se crea para una SharePoinL-hosLed App, para alojar dichos componenLes. De esLa
orma, esLaramos anLe un alojamienLo mixLo de apps.
Apps de Pgina compleLa
Fn la seccin anLerior vimos qu mecanismos orece SharePoinL 203 para Lrabajar con las
App ParLs, y emplazbamos a ver los mecanismos que exisLen para Lrabajar con las apps de
Pgina compleLa en la presenLe seccin de Cloud-hosLed Apps. Fs ahora, que sabemos que la
aplicacin web (en la Lecnologa que sea) que consLiLuye una Cloud-hosLed App no presenLa
ninguna conexin con SharePoinL, cuando Liene senLido pregunLarse, cmo puedo conseguir
que una app de Pgina compleLa, no parezca una pgina aislada, si no que realmenLe sea un
elemenLo ms de SharePoinL La respuesLa a esa pregunLa Liene un nombre que ya conocemos.
<1)&*+ <#%(-& <(*+%(1.
ClienL Chrome ConLrol
Fl ClienL Chrome ConLrol es un mecanismo que orece SharePoinL 203 para poder heredar el
aspecLo o la apariencia (el 9//K LM; Z119 que diran los angloparlanLes) del siLio SharePoinL donde
insLalamos la app. Se LraLa de conLrol JavaScripL que aade elemenLos propios de SharePoinL a la
cabecera de la pgina que orma la app como el LLulo, la miga de pan (N01L;=0->N), el logo, eLc.
adems "inyecLa" los esLilos del siLio SharePoinL anLrin para dar el mismo aspecLo en cuanLo
a uenLes, Lamaos, eLc., al resLo de elemenLos de la app. Pero como la mayora de las cosas en
la vida, la mejor manera de enLender un concepLo es aplicndolo uno mismo. As que vamos a
ello con el siguienLe paso a paso.
'$0( 48 Lo primero es crear un nuevo proyecLo en visual SLudio 202, parLiendo de la
planLilla "AEE ;(% "#$%&'()*+ 2349". Fn mi caso, he llamado al nuevo proyecLo, 3&%(R. Cuando
llegamos a la panLalla donde debemos especicar el siLio SharePoinL objeLivo (recordemos
que debe ser un siLio creado con la planLilla "")+)( 6&1 >&0$%%(11$6(%"), nos aseguramos de
seleccionar la opcin "A?+(#(0+&6", como mecanismo para alojar nuesLra app. A esLas alLuras
del parLido, ya sabemos que con esLe mecanismo de aprovisionamienLo de apps, las apps se
alojan en la Nube, concreLamos en Azure.
146
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-44. ProyecLo de visual SLudio para una app en modo AuLohosLed

'$0( 28 Si nos jamos en la aplicacin web ASP.NF1 que se incluye en la solucin (el segundo
proyecLo), conLiene una pgina por deecLo, E&M$K)+:$7/Y. FsLa pgina ser el cuerpo de nuesLra
app de Pgina compleLa. AcLualmenLe, como es de esperar, se encuenLra compleLamenLe vaca,
por lo que en esLe paso es donde debemos dar conLenido a dicha pgina. Por ejemplo, pode6
mos aadir un clsico "Hola Mundo!", para simplemenLe depurar la app y comprobar que
vamos bien hasLa ahora.

Sfg &,H# r,.HI,H#L46J4 'I$*Y6#.$\-2#I(L4R,N0#4 [*5#O#<-.5L4)#R,IN$1,0(P16J4
9.<#2-$0L4)#+*U\#J1?)#R,IN$4 fX
Sd){[@|&Y <$+N &bOr9[ /%ZZ\][ZZ)@) ^@Gr U1V @2,.0-$-*.,NZZYD4
/<$$(QZZ;;;1;]1*2HZ@`ZP<$+NUZ)@)ZP<$+NU%$2,.0-$-*.,N15$54X
S<$+N P+N.0L4<$$(QZZ;;;1;]1*2HZUmmmZP<$+N4X
S<#,5 2I.,$L40#26#24X
S$-$N#XG- '(( #. &H-., [*+(N#$,SZ$-$N#X
SZ<#,5X
SJ*5AX
SR*2+ -5L4R*2+U4 2I.,$L40#26#24X
Sd%% [*.$#.-5* 5# N, '((%%X
S<U 3N,00L4+0%,33#.$@#P$4X^*N, GI.5*dSZ<UX
147
Captulo 3: Desarrollo de SharePoint Apps
SZR*2+X
SZJ*5AX
SZ<$+NX
As pues, si en esLe momenLo depuramos la aplicacin desde visual SLudio ([F5]), vemos
cmo, en primer lugar, se abre una insLancia de lnLerneL Fxplorer y a conLinuacin se nos pide
que inLroduzcamos las credenciales para auLenLicarnos en el siLio web. AcLo seguido, se nos
pregunLa si la app que vamos a desplegar en el siLio es de conanza. Dado que la app la hemos
hecho nosoLros, y somos genLe de ar, decimos que s .).
Figura 3-45. SharePoinL pregunLa si la app que vamos a insLalar es de
conanza

sLe es lo que obLenemos.

Figura 3-46. ConLenido de nuesLra AuLohosLed App, anLes de aplicar el Chrome
ConLrol
148
Captulo 3: Desarrollo de SharePoint Apps
'$0( 98 Una vez denido el conLenido de la pgina, es el momenLo de hacer uso del <1)&*+
<#%(-& <(*+%(1. Para ello, el primer paso y el ms sencillo, es aadir a nuesLra pgina una
'+29:'+, BE!DG a modo de "marcador de posicin". FsLe BE!DG debe ser el primer elemenLo en
la pgina, con un aLribuLo 23 reconocible. FsLa eLiqueLa sirve al ClienL Chrome ConLrol, para,
medianLe JavaScripL, inserLar en la pgina el resulLado del procesamienLo del conLrol8 5"( &"
que el maqueLado de nuesLra pgina queda as.

Sfg &,H# r,.HI,H#L46J4 'I$*Y6#.$\-2#I(L4R,N0#4 [*5#O#<-.5L4)#R,IN$1,0(P16J4
9.<#2-$0L4)#+*U\#J1?)#R,IN$4 fX
Sd){[@|&Y <$+N &bOr9[ /%ZZ\][ZZ)@) ^@Gr U1V @2,.0-$-*.,NZZYD4
/<$$(QZZ;;;1;]1*2HZ@`ZP<$+NUZ)@)ZP<$+NU%$2,.0-$-*.,N15$54X
S<$+N P+N.0L4<$$(QZZ;;;1;]1*2HZUmmmZP<$+N4X
S<#,5 2I.,$L40#26#24X
S$-$N#XG- '(( #. &H-., [*+(N#$,SZ$-$N#X
SZ<#,5X
SJ*5AX
SR*2+ -5L4R*2+U4 2I.,$L40#26#24X
Sd%% G,23,5,5*2 5# (*0-3-*. 5#N [<2*+# 3*.$2*N%%X
S5-6 -5L43<2*+#?3*.$2*N?+,23,5*24XSZ5-6X
Sd%% [*.$#.-5* 5# N, '((%%X
S<U 3N,00L4+0%,33#.$@#P$4X^*N, GI.5*dSZ<UX
SZR*2+X
SZJ*5AX
SZ<$+NX
Paso 4. A conLinuacin, denimos el cdigo JavaScripL necesario para hacer uncionar el
ClienL Chrome ConLrol. Dicho cdigo bien pudiera ir en la propia pgina, pero para seguir las
buenas prcLicas de desarrollo, creamos un chero de1ault.]s aparLe. Fn dicho chero, inserLa6
mos el siguienLe cdigo.

6,2 <*0$;#JI2Nv
ZZ {J$#.#+*0 N*0 2#3I20*0 5# "<,2#&*-.$ .#3#0,2-*01
qpI#2AB5*3I+#.$C12#,5ABRI.3$-*. BC =
,, 0btenemos 1a u8l decodfcada de1 sto S anftron {uost Web), a
ZZ (,2$-2 5# N*0 (,2,+#$2*0 #. N, pI#2A "$2-.H1
<*0$;#JI2N L 5#3*5#b`9[*+(*.#.$BH#$pI#2A"$2-.H&,2,+#$#2B/"&^*0$b2N4CCv
ZZ r*0 ,23<-6*0 q0 0# #.3I#.$2,. $*5*0 , (,2$-2 5# /Z?N,A*I$0ZUiZ4
149
Captulo 3: Desarrollo de SharePoint Apps
6,2 032-($J,0# L <*0$;#JI2N w /Z?N,A*I$0ZUiZ4v
,, Cargamos e1 fchero S.u1.Contro1s.s necesaro, y contnuamos con 1a
ZZ #q#3I,3-*. 3*. #N +,.#q,5*2 5# #P-$* 3*22#0(*.5-#.$#1
qpI#2A1H#$"32-($B032-($J,0# w /"&1b91[*.$2*N01q04h (2#(,2,2[<2*+#C
KCv
,,Ln esta 1uncon se confguran 1as opcones y se eecuta e1 contro1.
RI.3$-*. (2#(,2,2[<2*+#BC =
,,las u8ls que defnmos para 1as pagnas de ^yuda, Cuenta, Contacto, etc
,,1as 1ormamos agregando 1a msma query Strng que 1a u8l de1 sto anftron1
6,2 *($-*.0 L =
/,((93*.b2N4Q /11Z-+,H#0Z0(1q(H4h
/,((@-$N#4Q /@$IN* 5# +- '((4h
/,((^#N(&,H#b2N4Q /'AI5,1<$+NT4 w
5*3I+#.$1b`r10(N-$B/T4CsUth
/0#$$-.H0r-.k04Q s
= /N-.kb2N4Q /3I#.$,1<$+NT4 w
5*3I+#.$1b`r10(N-$B/T4CsUth
/5-0(N,AD,+#4Q /G- [I#.$,4 Kh
= /N-.kb2N4Q /3*.$,3$,.*01<$+NT4 w
5*3I+#.$1b`r10(N-$B/T4CsUth
/5-0(N,AD,+#4Q /[*.$3$,.*04 Kh
= /N-.kb2N4Q confguracones.htm1?" w
5*3I+#.$1b`r10(N-$B/T4CsUth
/5-0(N,AD,+#4Q Confguracones"K
t
Kv
6,2 .,6 L .#; "&1b91[*.$2*N01D,6-H,$-*.B/3<2*+#?3*.$2*N?+,23,5*24h
*($-*.0Cv
.,610#$a-0-JN#B$2I#Cv
K
ZZ cI.3-}. (,2, *J$#.#2 I. 6,N*2 5# N, pI#2A "$2-.H
RI.3$-*. H#$pI#2A"$2-.H&,2,+#$#2B(,2,+@*`#$2-#6#C =
6,2 (,2,+0 L 5*3I+#.$1b`r10(N-$B/T4CsUt10(N-$B/u4Cv
6,2 0$2&,2,+0 L /4v
R*2 B6,2 - L Vv - S (,2,+01N#.H$<v - L - w UC
=
6,2 0-.HN#&,2,+ L (,2,+0s-t10(N-$B/L4Cv
-R B0-.HN#&,2,+sVt LL (,2,+@*`#$2-#6#C 2#$I2. 0-.HN#&,2,+sUtv
K
K
150
Captulo 3: Desarrollo de SharePoint Apps
Analizando el cdigo JavaScripL, vemos que el uncionamienLo del ClienL Chrome ConLrol es
muy sencillo. Fn primer lugar, medianLe jQuery, capLuramos cuando el DOM de la pgina esL com6
pleLamenLe cargado, y acLo seguido cargamos en la pgina el chero JavaScripL S.01.Controls.]s.
Si el ciLado chero, se carga con xiLo en la pgina, pasamos a ejecuLar la uncin /#&/$#$#80#(%&,
9:' *,)' &,$ 0')'$ #' *$))=$*F. Fs en esLa uncin donde llevamos a cabo la conguracin del
ClienL Chrome ConLrol y, nalmenLe, procedemos a su ejecucin.
De las opciones posibles de conguracin nos debe llamar la aLencin las siguienLes.
$//2*(,L#). Fspecicamos la URL del icono de la app.
$//9!+)&. 1Lulo de la app, para mosLrar en la "miga de pan" y en el cuerpo de la app.
$//V&)/<$-&L#)8 Direccin para la pgina de ayuda.
7&++!,-76!,F78 Direccin(es) de la(s) pgina(s) bajo la seccin de conguracin.
" )!,FL#)8 URL de la pgina en cuesLin.
" E!7/)$.`$%&8 Nombre a mosLrar para idenLicar la pgina.
Una vez Lenemos lisLa las conguraciones, ejecuLamos el conLrol, ligando su resulLado con
&, '+29:'+, BE!DG que denimos al principio.
'$0( R. FinalmenLe, incluimos las reerencias en la pgina al chero JavaScripL que acaba6
mos de crear, as como a jQuery y a la librera de Ajax de MicrosoL.

S032-($ 023L4<$$(QZZ,q,P1,0(.#$35.13*+Z,q,PZ71VZUZG-32*0*R$'q,P1q04
$A(#L4$#P$Zq,6,032-($4XSZ032-($X
S032-($ $A(#L4$#P$Zq,6,032-($4
023L4<$$(0QZZ,q,P1,0(.#$35.13*+Z,q,PZqpI#2AZqFI#2A%U1l1_1+-.1q04X
SZ032-($X
S032-($ $A(#L4$#P$Zq,6,032-($4 023L411Zq0Z5#R,IN$1q04XSZ032-($X
Solo queda ver el resulLado del ClienL Chrome ConLrol, para lo que pasamos a depurar
([F5]) nuevamenLe la app.
151
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-47. ConLenido de nuesLra AuLohosLed App, despus de aplicar el Chrome ConLrol
Como vemos, la apariencia de la app ha cambiando por compleLo, adapLndose al diseo
de SharePoinL. Por lo que consLruir aplicaciones en modo Pgina compleLa, no suponen ningn
problema en cuanLo a respeLar los esLilos del siLio anLrin o HosL Web se reere, aun LraLando
con apps del Lipo Cloud-hosLed.
Modelo de objeLos de clienLe y APl RFS1 en SharePoinL
203
Fmpezaremos esLe nuevo capLulo hablando de las novedades que aporLa SharePoinL 203
en cuanLo al modelo de objeLos de clienLe. Seguiremos con una breve exposicin de las disLin6
Las APl disponibles de desarrollo y por lLimo nos cenLraremos principalmenLe en las noveda6
des en cuanLo a la APl RFS1 de la plaLaorma.
ComenLar que ue en la versin 200, cuando se inLrodujo dicho modelo de objeLos de
clienLe el cual permiLa inLeracLuar de orma remoLa con siLios de SharePoinL sin Lener que
recurrir a ningn Lipo de servicio web.
152
Captulo 3: Desarrollo de SharePoint Apps
Pues bien, en la nueva versin de SharePoinL manLenemos el modelo de objeLos de clienLe
y adems lo ampliamos permiLindonos as Lrabajar Lambin con meLadaLos adminisLrados, la
bsqueda, eLc.
RespecLo a la arquiLecLura, se sigue manLeniendo la misma, incluyendo una nueva APl
bauLizada como ]$E) como bien se dijo en el capLulo 2. DenLro del modelo de objeLos de
clienLe, disponemos de varias vas para comunicarnos con SharePoinL, medianLe cdigo .NF1
Framework, SilverlighL, JavaScripL y RFS1. A conLinuacin, un grco explicaLivo de cmo un6
ciona la arquiLecLura del modelo de objeLos en clienLe.
Figura 3-48. ArquiLecLura del modelo de objeLos de clienLe
lnLeraces de desarrollo (APl) disponibles
1endremos varios conjunLos de APl que podremos uLilizar, lo imporLanLe ser saber cul es
la ms apropiada en cada caso. FsLe es un paso muy imporLanLe, ya que elegir una APl equivo6
cada nos hara perder mucho Liempo. Para elegir una APl u oLra, bsicamenLe Lendremos que
Lener en cuenLa 3 acLores.
153
Captulo 3: Desarrollo de SharePoint Apps
,)E( 6& 1$ $E1)/$/)I*. Donde podemos enconLrarnos con aplicaciones para SharePoinL,
elemenLos web de pginas de SharePoinL, aplicaciones ASP.NF1 que se han expuesLo
'/ 1*,('5"2/+ )"/ :/ 2"#$%&, JavaScripL que se ejecuLen en pginas de siLios de
SharePoinL, aplicaciones de consola para adminisLracin de SharePoinL, 1imer Jobs
personalizados, eLc.
HabiIidades deI desarroIIador. Unas habilidades u oLras nos harn decanLarnos por
el Lipo de APl. FnLre esLas habilidades enconLramos JavaScripL, ASP.NF1, RFS1/ODaLa,
.NF1 Framework, SilverlighL, Windows Phone y Windows PowerShell.
I dispositivo en eI que se ejecuta eI cdigo. Servidores de SharePoinL, servidores
exLernos, equipos clienLe, disposiLivos mviles, eLc.
Una vez comenLados esLos acLores, vamos a denir brevemenLe las APl que hay disponi6
bles para SharePoinL comenzando con un grco que nos va a ayudar a agruparlas en conjunLos.
Figura 3-49. ConjunLos de APl de SharePoinL (esLe diagrama ha sido seleccionado de
MSDN)
Modelo de ObjeLos de Servidor
Fs el conjunLo de mayor Lamao, en cuanLo a uncionalidad disponible se reere. Se encuen6
Lra en el modelo de objeLos de servidor. La mayor parLe de esLas clases se encuenLran en el
154
Captulo 3: Desarrollo de SharePoint Apps
espacio de nombre >!*#(7(M+:40$#&<(!,+. Adems, la mayora de los componenLes SharePoinL son
exLensibles al modelo de objeLos de servidor.
LimiLacin para las SharePoinL Apps. No se puede usar el modelo de objeLos de servidor
en una app para SharePoinL, puesLo que la idea es que se ejecuLe en un conLexLo aislado y,
adems, la mayora de las veces quedarn alojadas en servidores exLernos.
Modelo de ObjeLos de clienLe (CSOM "ClienL-side objecL model")
Fn SharePoinL 203 disponemos de varios modelos de objeLos de clienLe para nuesLro
cdigo. .NF1, JavaScripL, SilverlighL y SilverlighL para mviles.
Y/;19/ ;1 /NX1./2 ;1 =9:1M.1 8'$&
FsLe modelo se uLiliza en aplicaciones de .NF1 Framework que se ejecuLan en clienLes de
Windows (que no son Lelonos) como puede ser un equipo de un usuario, un servidor exLerno
a la granja de SharePoinL, eLc. Un ejemplo de esLo es una aplicacin de escriLorio de Windows
que nos permiLa acceder a las lisLas de SharePoinL para ver la inormacin.
Y/;19/ ;1 /NX1./2 ;1 =9:1M.1 ;1 Q:9I109:P3.
Se usa en las aplicaciones de SilverlighL. Fs idnLico al modelo de objeLos de clienLe de
.NF1 Framework. La principal dierencia esL en que en la versin de SilverlighL, Lodos los loLes
de comandos se envan al servidor de orma asncrona, por lo que la lU de la aplicacin per6
manece acLiva.
Los ensamblados del modelo de objeLos de clienLe de SilverlighL suelen guardarse en
<#(-#$%"!)&7W8(%%(, "!)&7W>!*#(7(M+ 40$#&EWJ&O 7&#D&# &Y+&,7!(,7WRbW9C><6I9CW6IgcL94W
8)!&,+=!,. Recuerda que en las apps de SharePoinL no se puede uLilizar el modelo de objeLos
de servidor.
Y/;19/ ;1 /NX1./2 ;1 >\I:912 ;1 Q:9I109:P3.
Para esLe aparLado exisLe una versin especial del modelo de objeLos de clienLe de SilverlighL
disponible para los Lelonos con Windows Phone 7. lncluye algunas APl adicionales que solo
son relevanLes para los Lelonos, como puede ser una APl que permiLe a una aplicacin de
mviles regisLrar las noLicaciones sirvindose del servicio MicrosoL Push NoLicaLion.
155
Captulo 3: Desarrollo de SharePoint Apps
Los ensamblados se pueden guardar en <#(-#$%"!)&7W8(%%(, "!)&7W>!*#(7(M+ 40$#&EW
J&O 7&#D&# &Y+&,7!(,7WRbW9C><6I9CW6IgcL94W8)!&,+=!, y deben ir empaqueLados en el archivo
:Y$/ de la aplicacin.
Y/;19/ ;1 /NX1./2 _LILQ=0:4. a_QWYc
SharePoinL 203 orece un modelo de objeLos de JavaScripL que se puede usar en archi6
vos con exLensin .]s independienLes, e incluye la misma uncionalidad que los modelos de
objeLos de clienLe de .NF1 Framework y SilverlighL. FsLe modelo de objeLos se puede usar para
inLeracLuar con conLenido de SharePoinL desde las SharePoinL apps (ya que no se permiLe usar
cdigo de servidor). La inraesLrucLura del modelo de JavaScripL inLeracLa con los servidores
de orma asncrona. Se soluciona el problema de =0/22T;/>L:M. FsLe problema surge al inLenLar
la comunicacin enLre varios dominios. Fl servidor devuelve los daLos en ormaLo JSON.
APl RFS1/ODaLa
FsLa APl surge de la necesidad de obLener acceso a las enLidades de SharePoinL desde
Lecnologas de clienLe que no usan JavaScripL y no se encuenLran inLegradas en las plaLaormas
.NF1 Framework o SiliverlighL. FsLo quiere decir, que podramos acceder a SharePoinL desde
cualquier lenguaje de programacin como PHP, JSP, AcLion ScripL, Flash, Cocoa, eLc. Por lo
LanLo, ya podis imaginar la gran poLencia de esLa APl R5T, la cual nos permiLe unicar el
acceso a SharePoinL desde cualquier disposiLivo y plaLaorma. Para Lal n, SharePoinL 203
orece la implemenLacin de un servicio web (RFS1 RepresenLaLional SLaLe 1ranser) que usa el
;("+")"&" V>$+$ para realizar las operaciones sobre lisLas SharePoinL.
ODaLa viene de las siglas "Open DaLa ProLocol". PrincipalmenLe se uLiliza para exponer
daLos de una orma genrica, por ejemplo, en nuesLro caso, podra ser una lisLa. Para consulLar
esLos daLos desde la aplicacin clienLe es necesario crear una URl siguiendo el esLndar ODaLa.
Aqu es donde enLra RFS1 como proLocolo de comunicacin enLre los daLos y la aplicacin
clienLe enviando una peLicin H11P RFS1ul con el 1M;4/:M. correspondienLe. La respuesLa
emiLida que recibe la aplicacin clienLe se enconLrar en ormaLo JSON o ALom.
OLra cosa a mencionar es que prcLicamenLe Lodas las APl de los modelos de objeLos de
clienLe cuenLan con su correspondienLe exLremo de RFS1. FsLo nos permiLe inLeracLuar con
SharePoinL a Lravs de cualquier Lecnologa compaLible con las capacidades esLndar de RFS1.
Para usar las capacidades de RFS1 que se encuenLran inLegradas en SharePoinL 203, el cdigo
consLruye una soliciLud H11P RFS1ul para un exLremo correspondienLe a la APl del modelo de
objeLos de clienLe que el usuario especica. Fl servicio web *)!&,+:7D* conLrola la soliciLud H11P
y emiLe una respuesLa en ormaLo ALom o JSON.
156
Captulo 3: Desarrollo de SharePoint Apps
A conLinuacin, un grco explicaLivo, el cual muesLra la relacin exisLenLe enLre las APl de
clienLe y SharePoinL.
Figura 3-50. Aplicaciones en el lado del clienLe y APl de SharePoinL
*+, -./0 12 /3451+6728 9)!)
AnLes de enLrar en maLeria sobre la APl RFS1 en SharePoinL 203, deberamos hablar del
esLado de esLa APl en la versin anLerior del producLo. Fn SharePoinL 200, ya disponamos
de esLa APl, aunque su uncionalidad esLaba muy limiLada. Al igual que en SharePoinL 203, se
serva del proLocolo ODaLa.
Fn SharePoinL 200 se inLrodujo el soporLe para WCF DaLa Services que nos permiLa con6
sulLar de orma sencilla lisLas y biblioLecas, adems de poder realizar operaciones CRUD sobre
las mismas denLro de cualquier plaLaorma que soporLara RFS1, la cual poda ser .NF1 o no.
Para Lal n, se uLilizaba el servicio 6!7+3$+$:7D*. A la hora de acceder a dicho servicio, la URL
9:'#,(>, <$$(QZZ+-0$-*Z?6$-?J-.Zr-0$),$,1063.
157
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-5. APl RFS1 en SharePoinL 200
APl RFS1 SharePoinL 203
Una vez visLo el uncionamienLo de esLa APl bajo SharePoinL 200, ahora es el Lurno de
verlo bajo SharePoinL 203.
Ahora no solo vamos a poder inLeracLuar con lisLas y biblioLecas de siLios, sino que Lambin
podremos inLeracLuar con 0)+)(0 y 0&%.)/)(0. SharePoinL 203 cuenLa con una APl RFS1 que
se bauLiza como ]$E). Ahora las URL sern del Lipo <$$(QZZ+-0-$-*Z?,(-Z111, por ejemplo, para
consulLar el nombre de un siLio medianLe cdigo manejado la URL ser <$$(QZZ+-0-$-*Z?,(-Z
\#JZT>0#N#3$L@-$N#. Fl smbolo "h" es un mecanismo esLndar de ODaLa para lLrar resulLados
sobre una peLicin. 1ambin podramos usar el navegador para consulLar direcLamenLe el nom6
-(' #'& $2+2" 2/+("#:)2'/#" <$$(QZZ+-0$-*Z?,(-Z\#JZ$-$N# Mencionar que _api es un nombre abs6
+(,)+" " $' ;"#(>, #')2( :/, ,-('02,+:(, #' ]D+!]O!,i*)!&,+:7D* ya que las URL Lienen la limiLacin
de 256 caracLeres.
Como hemos comenLado anLeriormenLe, la APl RFS1 nos permiLe inLeracLuar con SharePoinL
usando cualquier Lecnologa que soporLe RFS1. Para usar RFS1, se consLruye una peLicin H11P
usando el proLocolo ODaLa. Fl servicio *)!&,+:7D* maneja la peLicin H11P y emiLe la respuesLa en
ormaLo ALom o JSON. La aplicacin clienLe debe enLonces 4L021L0 la respuesLa. Fn el siguienLe
grco se puede apreciar la arquiLecLura del servicio RFS1.
158
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-52. ArquiLecLura servicio RFS1 de SharePoinL 203
URl del servicio RFS1
La mayora de las APl de modelo de objeLos de clienLe Lienen o esL planicado que
+'/<,/ $: )"(('$;"/#2'/+' 1M;4/:M.. Puedes usar RFS1 1M;4/:M.2 para ejecuLar peLiciones
H11P usando un servicio basado en URl, para recuperar o acLualizar enLidades de SharePoinL.
Podramos decir que cada enLidad de SharePoinL esL expuesLa medianLe un 1M;4/:M. (';('6
senLado en ormaLo XML o JSON. Por lo LanLo, para acceder a dichas enLidades se necesiLa
saber la URL del 1M;4/:M. correspondienLe. FsLo nos permiLe, conociendo los 1M;4/:M.2, realizar
peLiciones H11P en cualquier lenguaje.
Resumiendo, el 1M;4/:M. proporciona a las aplicaciones clienLe acceso a la uncionalidad
del servicio. A conLinuacin, vamos a ver cmo consLruir esLas URl empezando desde lo ms
bsico.
Para empezar, debemos Lener claros los principales punLos de enLrada del servicio RFS1
que corresponden con la coleccin de siLios y el siLio acLual.
CONTEXTO RFS1 SFRvlDOR CLlFN1F
Coleccin de
sitios
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z
0-$#
"&[*.$#P$1[I22#.$1"-$# [N-#.$[*.$#P$1"-$#
Sitio actual <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z
;#J
"&[*.$#$1[I22#.$1\#J [N-#.$[*.$#P$1\#J
A parLir de esLo, que es lo bsico, podremos consLruir el resLo de las URl necesarias para
acceder al modelo de objeLos desde RFS1. Mencionar Lambin que da igual poner maysculas
159
Captulo 3: Desarrollo de SharePoint Apps
y minsculas, por ejemplo, esLa URl. <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#JZN-0$0ZH#$JA$-$N#B/@-$N#4C
que obLiene una deLerminada lisLa, se corresponde con la uncin '&+=.9!+)& del modelo de
objeLos de clienLe y uncionara a la pereccin.
Adems de acceder a la coleccin de siLios y al siLio acLual, Lenemos oLros punLos de acceso.
REA PUN1O DF ACCFSO
Coleccin de sitios <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z0-$#
Sitio actual <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#J
Perfl de usuario http:,,myapp1caton,ste,_ap,S.userrof1es.eop1eManager
Bsqueda <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z0#,23<
Publicacin <$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z(IJN-0<-.H
O.:9:[L0 4L0g>1.0/2 =/M dL9:L2e
A la hora de pasar parmeLros por RFS1, les podemos poner los idenLicadores que queramos,
es decir, les podemos poner un "alias". Fn el siguienLe ejemplo vemos que asigna el alias j+&%;
/)$+& al LLulo y posLeriormenLe le da valor.
<$$(QZZ+A,((N-3,$-*.Z0-$#Z,(-Z;#JZ,((A\#J@#+(N,$#B$-$N#Lg$#+(N,$#CTg$#+(N,$#L4"@"V
SL0g>1.0/2 1M 9L <-10J 2.0:MP
1ambin podemos pasar parmeLros en la <-10J 2.0:MP en la llamada RFS1.
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#JZ,((NA\#J@#+(N,$#T$#+(N,$#L4"@"V4
MetcJcs esecijccs y rcieJcJes
1ambin es posible consLruir URl medianLe mLodos esLLicos o propiedades. FsLas URl Lienen
su equivalencia en mLodos o propiedades esLLicas en las cuales se uLiliza la senLencia equiva6
lenLe del modelo de objeLos FCMAScripL. La pega que Lienen esLas propiedades es que Lienen que
ser accesibles direcLamenLe.
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z"&1b$-N-$-#01b$-N-$A1H#$9+,H#b2NBz-+,H#D,+#xC
160
Captulo 3: Desarrollo de SharePoint Apps
(/M2-9.L0 191>1M./2
Para consulLar elemenLos medianLe llamadas RFS1, Lenemos el parmeLro h7&)&*+. FsLe
parmeLro especica qu campos sern devuelLos. Fl comodn "X" indica que se devuelve Lodo
el conjunLo de campos, por deecLo es la opcin que se ejecuLa.
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#JZN-0$0ZH#$JA$-$N#Bz.*+J2#r-0$,xCT>0#N#3$L@-$N#
^:9.0L0 191>1M./2
Para obLener un conjunLo de elemenLos lLrados uLilizaremos la clusula $lter.
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#JZN-0$0ZH#$JA$-$N#Bz[I0$*+#20xCZ-$#+0T>R-N$#2L
[*I.$2A #F zbjx
W410L;/012 <-1 4/;1>/2 -.:9:[L0
COMPARACIONES NUMRICAS
COMPARAClONFS DF CADFNAS FUNClONFS DF FFCHAS
6+, 6&, '+, '&, Ck, `&
0$,2$0\-5$<, 0IJ0$2-.H*R, YF, D# 5,ABC, +*.$<BC, A#,2BC, ^*I2BC,
+-.I$#BC,
0#3*.5BC
W0;1ML0 191>1M./2
Para ordenar elemenLos que nos ha devuelLo la <-10J uLilizamos la clusula h(#E&#O.. Para
ordenar por varios campos esLos irn separados por "l". 1ambin se puede especicar si que6
remos dicho orden en ascendenLe o descendenLe con "$7*" y "E&7*".
<$$(QZZ+A,((N-3,$-*.Z0-$#Z?,(-Z;#JZN-0$0ZH#$JA$-$N#Bz[I0$*+#20xCZ-$#+0T>*25#2JALD,+#
(9g-2-9L ./4
FsLa opcin permiLe Lraernos los n primeros elemenLos.
http://myapplication/site/_api/web/lists/getbytitle{'Customers'}/items$top=10
161
Captulo 3: Desarrollo de SharePoint Apps
Frrores y excepciones
Fn caso de errores o excepciones, el 1M;4/:M. del servicio RFS1 devuelve el error H11P
correspondienLe, los cuales ciLamos a conLinuacin.
UQQ - PeLiciones mal hechas
UQU 6 $M;4/:M.2 que no exisLen
bQQ 6 @(("('$ 2/+'(/"$ #'& $'(02#"(
Cross-domain library
Fn las apps para SharePoinL es comn acceder a daLos de varios orgenes. Como bien
sabemos, esLe acceso es bloqueado, ya que exisLen mecanismos para prevenir la comunicacin
con ms de un dominio. FsLe problema nos lo soluciona la =0/22T;/>L:M 9:N0L0J. Al uLilizarla las
apps sern capaces de acceder a daLos bajo un dominio remoLo y Lambin al dominio dnde
se encuenLre nuesLro SharePoinL.
FnLrando un poco ms en deLalle, la =0/22T;/>L:M 9:N0L0J es una librera del lado del clienLe.
Para poder uLilizarla necesiLaremos cargar el scripL S.kequest5xecutor.]s 9:' $' '/):'/+(,
almacenado en SharePoinL bajo la ruLa i])$.(K+7iRbim
Fs una muy buena opcin si quieres o necesiLas que Lu cdigo se ejecuLe en el lado del
clienLe. 1ambin nos permiLe esquivar barreras e incluso Lemas como el jrewcll '/+(' 1*,('5"2/+
y un servidor remoLo.
Fn el siguienLe enlace podris enconLrar documenLacin ms deLallada sobre la =0/22T
;/>L:M 9:N0L0J=
http://msdn.microso1t.com/en-us/library/1p179927{v=o1ce.15}.aspx
162
Captulo 3: Desarrollo de SharePoint Apps
Fjemplos de uso de las APl
Fjemplo - Modelo de objeLos clienLe JavaScripL
Fn esLe ejemplo, vamos a inLeracLuar con 2/=:L9 Z11;2 desde una app medianLe el modelo
de objeLos de clienLe JavaScripL. Fn concreLo, publicaremos comenLarios y respuesLas.
. Lo primero de Lodo es Lener congurado :F ")+& bajo el siLio que vamos a que
vamos a desplegar la app.
2. Creamos un proyecLo del Lipo "AEE ;(% "#$%&'()*+ 2349" y elegimos la opcin
SharePoinL-HosLed para alojarla en nuesLro SharePoinL.
3. De la pgina que se crea por deecLo 3&M$K)+:$7/Y borraremos el bloque de cdigo
JavaScripL encargado de llamar a la uncin shareointkeady{}, puesLo que para esLe ejemplo
no haremos uso de ella. DenLro del 8(,+&,+<)$*&V()E&# "<)$*&V()E&#>$!,", borraremos el
conLenido e incluiremos las siguienLes lneas. FsLas cuaLro lneas a incluir, la primera represenLa
el mensaje que muesLra el resulLado de la insercin del comenLario. Las dos siguienLes reeren6
cian a los archivos necesarios para uLilizar el modelo de objeLos de clienLe de JavaScripL para el
Lema de 2/=:L9 Z11;2. La lLima lnea es la encargada de generar un mensaje sobre la seguridad
cuando sea requerido, suele ser usado en operaciones que acLualizan conLenido. Por lo LanLo,
el "<)$*&V()E&#>$!," quedara as.

S,0(Q[*.$#.$ [*.$#.$&N,3#^*N5#295L4&N,3#^*N5#2G,-.4 2I.,$L40#26#24X
S0(,. -5L40(,.G#00,H#4 0$AN#L43*N*2Q ccVVVVv4XSZ0(,.X
S"<,2#&*-.$Q"32-($r-.k 9)L4"32-($r-.kU4 .,+#L4"&1q04 2I.,$L40#26#24
*.5#+,.5L4R,N0#4 N*3,N-~,JN#L4R,N0#4
N*,5,R$#2I-L4$2I#4 ZX
S"<,2#&*-.$Q"32-($r-.k 9)L4"32-($r-.k_4 .,+#="S.userrof1es.s"
2I.,$L40#26#24 *.5#+,.5L4R,N0#4
N*3,N-~,JN#L4R,N0#4 N*,5,R$#2I-L4$2I#4 ZX
S"<,2#&*-.$Qc*2+)-H#0$ -5L4c*2+)-H#0$4 2I.,$L40#26#24ZX
SZ,0(Q[*.$#.$X
4. Fl siguienLe archivo a modicar ser el App.]s, el archivo que se crea por deecLo al
elegir esLe Lipo de proyecLo, en el cual ira el cdigo JavaScripL nuesLro personalizado. Por
lo LanLo, borramos Lodo el conLenido que Liene acLualmenLe para inLroducir nuesLro cdigo.
163
Captulo 3: Desarrollo de SharePoint Apps
5. Lo primero que haremos en el archivo App.]s, ser llamar a la uncin &Y*K+&c#3&;
)$.L,+!)4*#!/+6($E&EN la cual llamar a la uncin <KO)!70<(7+ #'$;:E$ #' *,-'( ),(<,#"
'& ,()*20" S.0serroles.]s.

"&1"{)1#P#3I$#{2)#N,Ab.$-N"32-($r*,5#5B&IJN-0<&*0$h 'S.userrof1es.s'Cv
6. La uncin principal de nuesLra demosLracin es <KO)!70<(7+, en esLa uncin Len6
dremos dierenciados 4 bloques.
Crearemos una insLancia de la clase 4(*!$)"&&E>$,$-&# pasndole el conLexLo acLual.
FsLa clase es la que nos permiLe acceder a los 2/=:L9 Z11;2. Nos proporcionar mLodos
para crear, acLualizar, borrar y leer comenLarios.

3N-#.$[*.$#P$ L "&1[N-#.$[*.$#P$1H#$?3I22#.$BCv
R##5G,.,H#2 L .#; "&1"*3-,N1"*3-,Nc##5G,.,H#2B3N-#.$[*.$#P$Cv
Fn el comenLario que queremos inLroducir, vamos a aadirle un 9:MK. Para ello nece6
siLamos hacer uso de la clase 4<:4(*!$):4(*!$)3$+$2+&% y sus propiedades.
6,2 N-.k),$,9$#+ L .#; "&1"*3-,N1"*3-,N),$,9$#+BCv
N-.k),$,9$#+10#$?-$#+@A(#B"&1"*3-,N1"*3-,N),$,9$#+@A(#1N-.kCv
N-.k),$,9$#+10#$?$#P$BzN-.kxCv
N-.k),$,9$#+10#$?I2-Bz<$$(QZZ;;;10*N-5F13*+xCv
6,2 0*3-,N),$,9$#+0 L sN-.k),$,9$#+tv
Fl siguienLe paso es crear el comenLario, meLerle LexLo y aadirle el 9:MK )(',#"
previamenLe. Para ello, hacemos uso de la clase 4<:4(*!$):4(*!$)<(7+8#&$+!(,3$+$ y sus
propiedades.
164
Captulo 3: Desarrollo de SharePoint Apps

6,2 (*0$[2#,$-*.),$, L .#; "&1"*3-,N1"*3-,N&*0$[2#,$-*.),$,BCv
(*0$[2#,$-*.),$,10#$?3*.$#.$@#P$BzY0$# #0 #N $#P$* 5#N 3*+#.$,2-*h #N
3I,N 3*.$-#.# I. =VK1xCv
(*0$[2#,$-*.),$,10#$?3*.$#.$9$#+0B0*3-,N),$,9$#+0Cv
Publicamos el 4/2., si Lodo va bien ir a la uncin <KO)!70N&/). y si va mal ir
<(7+"$!)&E

2#0IN$@<2#,5 L R##5G,.,H#2132#,$#&*0$B.INNh (*0$[2#,$-*.),$,Cv
3N-#.$[*.$#P$1#P#3I$#pI#2A'0A.3B&IJN-0<`#(NAh &*0$c,-N#5Cv
7. La siguienLe uncin a comenLar es la de <KO)!70N&/).. Si el comenLario se inLrodujo
correcLamenLe, se inLroducir una respuesLa en consecuencia. Para inserLar la respuesLa al
comenLario inLroducido, esLa vez cogemos el :; de dicho comenLario inLroducido y le inser6
Lamos el comenLario respuesLa.

6,2 (*0$[2#,$-*.),$, L .#; "&1"*3-,N1"*3-,N&*0$[2#,$-*.),$,BCv
(*0$[2#,$-*.),$,10#$?3*.$#.$@#P$BzY0$# $#P$* #0 N, 2#0(I#0$,1xCv
2#0IN$@<2#,5 L R##5G,.,H#2132#,$#&*0$B2#0IN$@<2#,51H#$?-5BCh
(*0$[2#,$-*.),$,Cv
3N-#.$[*.$#P$1#P#3I$#pI#2A'0A.3B&*0$"I33##5#5h &*0$c,-N#5Cv
8. Las lLimas dos unciones que nos inorman de si ue bien la operacin o no. FsLas
unciones bsicamenLe rellenan un 7/$, indicando el resulLado de la operacin.
165
Captulo 3: Desarrollo de SharePoint Apps

RI.3$-*. &*0$"I33##5#5B0#.5#2h ,2H0C =
>H#$B/0(,.G#00,H#4C1-..#2@#P$ L
zYN 3*+#.$,2-* A N, 2#0(I#0$, RI#2*. (IJN-3,5*01xv
K
RI.3$-*. &*0$c,-N#5B0#.5#2h ,2H0C =
>H#$B/0(,.G#00,H#4C1-..#2@#P$ L zr, (#$-3-}. R,NN}Q z w
,2H01H#$?+#00,H#BCv
K
9. Fl lLimo paso del desarrollo es doLar a nuesLra app de los permisos necesarios a la
*"(, #' 2/+'(,)+:,( )"/ &"$ 2/=:L9 Z11;2. Para leer y escribir en los 2/=:L9 Z11;2 nos harn alLa
dos Lipos de permisos a nivel de app. Para ello accedemos al I//>$,!M&7+:Y%) y ponemos
los permisos de la siguienLe imagen.
Figura 3-53. Permisos para social eeds a nivel de app
166
Captulo 3: Desarrollo de SharePoint Apps
0. 1an solo nos queda visualizar el resulLado. Fn la siguienLe imagen puedes ver el
comenLario con el 9:MK y la respuesLa al comenLario.
Figura 3-54. ResulLado demosLracin . ComenLario y RespuesLa
Fjemplo 2 - Modelo de objeLos clienLe .NF1
Fn esLe ejemplo, usaremos el servicio de bsqueda de SharePoinL medianLe el modelo de
objeLos de clienLe .NF1.
Con las novedades que ha Lrado consigo el modelo de objeLos de clienLe, ahora desde
el lado del clienLe, vamos a poder hacer uso Lambin del servicio de bsquedas. Para ello,
vamos a realizar una pequea aplicacin de consola que se encargue de buscar la palabra clave
"SolidQ" uLilizando el moLor de bsquedas de SharePoinL 203. PreviamenLe habremos subido
un documenLo llamado "4()!E53(*K%&,+" y realizado un Z-99 (0L79.
. Creamos un proyecLo Lipo "AE1)/$/)I* 6& /(*0(1$".
2. Aadimos las libreras necesarias al proyecLo
>!*#(7(M+:40$#&<(!,+:8)!&,+:E))
>!*#(7(M+:40$#&<(!,+:8)!&,+:NK,+!%&:E))
>!*#(7(M+:40$#&<(!,+:8)!&,+:4&$#*0:E))
3. Aadimos las reerencias al proyecLo.

I0-.H G-32*0*R$1"<,2#&*-.$1[N-#.$v
I0-.H G-32*0*R$1"<,2#&*-.$1[N-#.$1"#,23<v
I0-.H G-32*0*R$1"<,2#&*-.$1[N-#.$1"#,23<1pI#2Av
167
Captulo 3: Desarrollo de SharePoint Apps
4. Fn esLe paso ya nos meLemos a programar. Desde la aplicacin clienLe necesiLare6
mos recuperar el conLexLo, para ello le pasamos la URL de nuesLro siLio.
I0-.H B[N-#.$[*.$#P$ 3N-#.$[*.$#P$ L .#; [N-#.$[*.$#P$B/<$$(QZZ+A5#6#N*(#2%
0-$#4CC
5. 1endremos que declararnos un objeLo ?&.J(#E5K&#. pasndole el conLexLo. FsLe
objeLo ser el encargado de represenLar la consulLa a realizar a SharePoinL. Su parmeLro
5K&#.9&Y+ ser el LexLo a buscar.

M(+$8 Fl lenguaje de consulLas SQL para bsquedas lo han quiLado en
esLa versin, quedando solamenLe el KQL (Keyword Query Language) y
FQL (FAS1 Query Language). ConcreLamenLe en esLe ejemplo uLilizamos
el KQL.

j#A;*25pI#2A k#A;*25pI#2A L .#; j#A;*25pI#2AB3N-#.$[*.$#P$Cv
k#A;*25pI#2A1pI#2A@#P$ L /"*N-5p4v
6. A dierencia del modelo de objeLos de servidor, nos har alLa declararnos oLro
objeLo llamado 4&$#*0CY&*K+(#, encargado de mandar las consulLas al moLor de bsquedas. A
esLe objeLo ser necesario que pasemos Lambin el conLexLo.

"#,23<YP#3I$*2 0#,23<YP#3I$*2 L .#; "#,23<YP#3I$*2B3N-#.$[*.$#P$Cv
7. Para obLener los resulLados de la bsqueda llamaremos a una uncin del
4&$#*0CY&*K+(# llamada CY&*K+&5K&#. pasndole el objeLo ?&.J(#E5K&#. que habamos
168
Captulo 3: Desarrollo de SharePoint Apps
declarado previamenLe. FsLe mLodo devuelve los resulLados del Lipo 8)!&,+N&7K)+BN&7K)+
9$O)&8())&*+!(,G.
[N-#.$`#0IN$S`#0IN$@,JN#[*NN#3$-*.X 2#0IN$,5* L 0#,23<YP#3I$*21
YP#3I$#pI#2ABk#A;*25pI#2ACv
8. FsLe paso es muy imporLanLe, ya que podemos creer que se ha ejecuLado la consulLa
y ya Lenemos el Lrabajo hecho. Pues bien, hasLa que no hagamos el CY&*K+&5K&#. del conLexLo
no Lendr eecLo la consulLa.

3N-#.$[*.$#P$1YP#3I$#pI#2ABCv
9. 1an solo quedara mosLrar el resulLado por panLalla que Lendramos almacenado
'/ #&7K)+$E(. Aqu, podemos apreciar que hemos consulLado el archivo que previamenLe
subimos desde SharePoinL.
0. Fl cdigo al compleLo

.,+#0(,3# "<,2#&*-.$_VU]?]?]?_
=
3N,00 &2*H2,+
=
0$,$-3 6*-5 G,-.B0$2-.Hst ,2H0C
=
I0-.H B[N-#.$[*.$#P$ 3N-#.$[*.$#P$ L .#;
[N-#.$[*.$#P$B/<$$(QZZ+A5#6#N*(#20-$#4CC
=
j#A;*25pI#2A k#A;*25pI#2A L .#;
j#A;*25pI#2AB3N-#.$[*.$#P$Cv
k#A;*25pI#2A1pI#2A@#P$ L /"*N-5p4v
"#,23<YP#3I$*2 0#,23<YP#3I$*2 L .#;
"#,23<YP#3I$*2B3N-#.$[*.$#P$Cv
169
Captulo 3: Desarrollo de SharePoint Apps
[N-#.$`#0IN$S`#0IN$@,JN#[*NN#3$-*.X 2#0IN$,5* L
0#,23<YP#3I$*21YP#3I$#pI#2ABk#A;*25pI#2ACv
3N-#.$[*.$#P$1YP#3I$#pI#2ABCv

R*2#,3< B6,2 2#0IN$`*; -. 2#0IN$,5*1a,NI#sVt1`#0IN$`*;0C
=
[*.0*N#1\2-$#r-.#B2#0IN$`*;s/@-$N#4t w /%4 w
2#0IN$`*;s/&,$<4t w /%4Cv
K
[*.0*N#1`#,5r-.#BCv
K
K
K
K
Fjemplo 3 - Modelo de objeLos clienLe JavaScripL - RFS1
Fn esLe ejemplo accederemos a una lisLa para consulLar los daLos medianLe RFS1 - JavaScripL.
Una vez visLos Lodos los aparLados necesarios para comprender cmo unciona la APl
RFS1, vamos a proceder a realizar una demosLracin. Fl escenario que presenLo LraLa de crear
un SharePoinL-hosLed App, la cual crea y despliega una lisLa cuyos daLos son consulLados va
RFS1. Cuando digo que despliega una lisLa me reero a que crea una lisLa, pero en lugar de
ser una lisLa denLro de un siLio de SharePoinL, crea la lisLa denLro del subsiLio que se crea para
la propia app (vase el capLulo 2 para comprender uncionamienLo inLerno de las apps segn
donde esLn alojadas). Mencionar Lambin, que en esLe ejemplo podramos hacerlo sin pro6
blemas ya que la app esLar alojada en SharePoinL, es decir, en el mismo servidor que nuesLros
daLos. Si hubiramos elegido Provider-hosLed o AuLohosLed Lendramos que haber uLilizado la
=0/22T;/>L:M 9:N0L0J, la cual ha sido explicada anLeriormenLe.
AnLes de empezar con el ejemplo, sera imporLanLe Lener claros cierLos concepLos sobre el
despliegue de la lisLa desde un proyecLo SharePoinL-hosLed.
Para empezar, por el hecho de Lener esLa lisLa en la app web (subsiLio creado para albergar
la app), sLa no ser accesible desde la inLeraz, a menos que pongamos nosoLros la URL ade6
cuada en el navegador o desarrollemos cdigo personalizado que nos permiLa modicar la lisLa.
OLra orma de consulLarla es medianLe PowerShell. Hay que Lener en cuenLa que al desplegar
la lisLa como parLe de nuesLro proyecLo SharePoinL-HosLed dicha lisLa depender de la app, es
decir, cuando se borre la app esLa lisLa desaparecer. A raz de esLo surge la pregunLa, de si es
mejor Lener la lisLa denLro de la app o creada en nuesLro SharePoinL. Pues depende mucho de
nuesLros inLereses, si es una lisLa global en la cual varios recursos o aplicaciones van a Lirar de
ella, enLonces debera esLar en SharePoinL. Fn cambio, si es una lisLa de mbiLo local, uLilizada
170
Captulo 3: Desarrollo de SharePoint Apps
solamenLe por la app que me esLoy insLalando, como la del ejemplo, es decir, que nicamenLe
se usa para dar servicio a la app, lgicamenLe debera esLar embebida en dicha app.
A conLinuacin, vemos un ejemplo del escenario previamenLe comenLado. Fn el primer
bloque vemos una lisLa que se encuenLra en SharePoinL y en el segundo vemos una lisLa que
se despliega medianLe una SharePoinL-hosLed App en la cual, al borrar el siLio que crea consigo
la app, se elimina Lambin la lisLa.
Figura 3-55. AlojamienLo de una lisLa en una
SharePoinL App
Dicho esLo comencemos con el ejemplo.
. Fmpezaremos creando un proyecLo SharePoinL-hosLed App.
2. Aadiremos la lisLa al proyecLo la cual llamaremos "8K7+(%&#7" uLilizando una de las
LanLas planLillas que Lenemos, en concreLo la de "8(,+$*+7"
171
Captulo 3: Desarrollo de SharePoint Apps
Figura 3-56. Aadir lisLa CusLomers a una SharePoinL app
3. Fl siguienLe paso es meLerle conLenido a esLa lisLa. Para ello nos vamos al C)&%&,+7:
Y%) y aadimos los daLos necesarios denLro de a eLiqueLaB6!7+2,7+$,*&G. Fl archivo en
cuesLin quedara de la siguienLe orma.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
Sr-0$9.0$,.3# @-$N#L4[I0$*+#204
{.pI-3kr,I.3<L4@`bY4
@#+(N,$#@A(#L4UVi4
c#,$I2#95L4VVJR#,lU%l#y5%7UWy%mJ,W%3V7l,3liVUVi4
b2NL4r-0$0Z[I0$*+#204
)#032-($-*.L4GA r-0$ 9.0$,.3#4X
S),$,X
S`*;0X
S`*;X
Sc-#N5 D,+#L4c-20$D,+#4Xo*0#SZc-#N5X
Sc-#N5 D,+#L4@-$N#4XpI-.$*SZc-#N5X
Sc-#N5 D,+#L4\*2k&<*.#4XUUUUUSZc-#N5X
SZ`*;X
S`*;X
Sc-#N5 D,+#L4c-20$D,+#4X8I-NN#2+*SZc-#N5X
172
Captulo 3: Desarrollo de SharePoint Apps
Sc-#N5 D,+#L4@-$N#4XO,0SZc-#N5X
Sc-#N5 D,+#L4\*2k&<*.#4X_____SZc-#N5X
SZ`*;X
S`*;X
Sc-#N5 D,+#L4c-20$D,+#4X[2-0$-,.SZc-#N5X
Sc-#N5 D,+#L4@-$N#4X,2,H*~,SZc-#N5X
Sc-#N5 D,+#L4\*2k&<*.#4X]]]]]SZc-#N5X
SZ`*;X
S`*;X
Sc-#N5 D,+#L4c-20$D,+#4X`*J#2$*SZc-#N5X
Sc-#N5 D,+#L4@-$N#4X`,+*.SZc-#N5X
Sc-#N5 D,+#L4\*2k&<*.#4X77777SZc-#N5X
SZ`*;X
SZ`*;0X
SZ),$,X
SZr-0$9.0$,.3#X
SZYN#+#.$0X
4. Una vez consLruida la lisLa a consulLar, necesiLamos aadir el cdigo necesario para
consulLarla medianLe RFS1 y obLener Lodos sus daLos. Para ello, uLilizaremos el archivo I//:
]s, que es el archivo que viene por deecLo bajo la carpeLa Scripts/App.]s y se uLiliza para
meLer cdigo JavaScripL personalizado. Fn esLe archivo vienen inLroducidas unas unciones
las cuales se ejecuLan por deecLo y de las que podemos borrar Lodas menos una, 70$;
reointkeady{}, si borramos sLa nos dar un error JavaScripL. FsLa uncin acLa como
.ready{} de jQuery, es decir, cada vez que se recarga la pgina esLa uncin se lanza.
A conLinuacin, vamos a realizar un esLudio sobre esLe archivo que es el ms imporLanLe,
empezando !como no! por la uncin shareointkeady{}. Fn concreLo, consulLaremos la lisLa
desplegada, seleccionaremos los campos "!#7+`$%&,9!+)&,Z(#F<0(,& y Lerminaremos orde6
/,/#" )"/ "!#7+`$%&,9!+)&. La variable ]7/<$-&8(,+&Y+2,M(:J&OIO7()K+&L#) /"$ ;(";"()2"/,
el conLexLo en el cual se encuenLra nuesLra app, necesario para hacer la llamada RFS1. Una vez
ormada la cadena, llamamos a la uncin -&+n4c` pasndole la direccin y la uncin a la que
accede. Si Lodo ha ido bien, enLra en la uncin (,4K**&77 mandndole por parmeLro los daLos
devuelLos en ormaLo JSON, si no ha ido bien, pasa de lnea y enLra en la uncin (,"$!).

RI.3$-*. 0<,2#&*-.$`#,5ABC =
6,2 2#FI#0$b2- L ?0(&,H#[*.$#P$9.R*1;#J'J0*NI$#b2N w
/Z?,(-Z\#JZr-0$0ZH#$OA@-$N#Bz[I0$*+#20xCZ-$#+0Z4 w
/T>0#N#3$Lc-20$D,+#h@-$N#h\*2k&<*.#4 w
/u>*25#2JALc-20$D,+#h@-$N#4v
173
Captulo 3: Desarrollo de SharePoint Apps
qF<P2 L >1H#$o"{DB2#FI#0$b2-h .INNh *."I33#00Cv
qF<P21#22*2B*.c,-NCv
K
5. La siguienLe uncin a comenLar es (,4K**&77. FsLa recibe por parmeLro los daLos
devuelLos por la llamada RFS1. MedianLe jQuery creamos una planLilla, a los daLos le asigna6
remos esa planLilla y, por lLimo, lo meLeremos Lodo bajo un BK)G de H1ML con !EP#&7K)+7
que Lendramos ya previamenLe denido.

RI.3$-*. *."I33#00B5,$,C =
6,2 *5,$,`#0IN$0 L 5,$,1512#0IN$0v
6,2 +,2kI( L /SN-XSJX>=c-20$D,+#KSZJX SJX>=@-$N#KSZJX
SJX>=\*2k&<*.#KSZJXSZN-X4v
>1$#+(N,$#B/5,$,[I0$*+#204h +,2kI(Cv
>1$+(NB/5,$,[I0$*+#204h *5,$,`#0IN$0C1,((#.5@*B/2#0IN$04Cv
K
6. La lLima uncin del archivo a comenLar ser oniail{}. A sLa llegaremos si la peLi6
cin va RFS1 ha allado. Lo nico que har esLa uncin ser mosLrar el error producido.

RI.3$-*. *.c,-NB#22*2{Jq#3$h #22*2G#00,H#C =
>B/2#0IN$04C1$#P$B/Y22*2Q / w #22*2G#00,H#Cv
K
7. ULilizaremos la pgina que viene por deecLo en SharePoinL, E&M$K)+:$7/Y. Fn esLa
pgina necesiLaremos incluir la cabecera necesaria para aplicar planLillas de jQuery.

S032-($ 023L4<$$(QZZ,q,P1+-32*0*R$13*+Z,q,PZqFI#2A1$#+(N,$#0ZJ#$,UZ
qFI#2A1$+(N1+-.1q04XSZ032-($X
174
Captulo 3: Desarrollo de SharePoint Apps
8. Fl siguienLe cambio a realizar en el archivo E&M$K)+:$7/Y ser en el "<)$*&V()E&#>$!,"
'/ '& 9:' *,-(. 9:' 2/)&:2( '& BK)G )"/ !EP#&7K)+7 en el cual meLamos los daLos, quedando
,$>=

S,0(Q[*.$#.$ [*.$#.$&N,3#^*N5#295L4&N,3#^*N5#2G,-.4 2I.,$L40#26#24X
SIN -5L42#0IN$04XSZINX
SZ,0(Q[*.$#.$X
9. Fl aspecLo nal del proyecLo quedara as.
Figura 3-57. FsLrucLura del pro6
yecLo de una SharePoinL app
175
Captulo 3: Desarrollo de SharePoint Apps
0. Fl resulLado del ejercicio sera el siguienLe.
Figura 3-58. ResulLado APl RFS1 - JavaScripL
176
Captulo 3: Desarrollo de SharePoint Apps
Qu modelo de objeLos usar en cada caso
Fn esLe lLimo aparLado, vamos a represenLar en una Labla, algunos de los escenarios ms
inLeresanLes que podemos enconLrar respecLo a SharePoinL 203 y vamos ha indicar el modelo
de objeLos ms apropiado para cada caso.
N
FSCFNARlO MODFLO DF O8JF1OS
1
Desarrollo de WebParL personalizado Modelo de objeLos de servidor
2
Desarrollo de aplicacin de pginas personalizada Modelo de objeLos de servidor
3
Desarrollo de un conLrol de usuario Modelo de objeLos de servidor
4
Desarrollo de un Workow personalizado Modelo de objeLos de servidor
5
Desarrollo de un 1imer Job personalizado Modelo de objeLos de servidor
6
Desarrollo de manejadores de evenLos
personalizados(FvenLs Receivers)
Modelo de objeLos de servidor
7
Desarrollo de una Windows Phone app para implemen6
Lar operaciones CRUD en SharePoinL
Modelo de objeLos de clienLe en
mvil
8
Desarrollo de una Windows Phone app para imple6
menLar noLicaciones en el mvil producidas por
'0'/+"$ #' 1*,('5"2/+
Modelo de objeLos de clienLe en
mvil
9
Desarrollo de una aplicacin LAMP(Linux-Apache-
MySql-PHP) que realice operaciones CRUD en
1*,('5"2/+
RFS1/ODaLa 1M;4/:M.2
10
Desarrollo de una aplicacin iOS o Android que per6
miLa realizar operaciones CRUD sobre SharePoinL
RFS1/ODaLa 1M;4/:M.2
11
Desarrollo de una aplicacin ASP.NF1 que permiLa
realizar operaciones CRUD sobre SharePoinL uera
#'& jrewcll
Modelo de objeLos de clienLe Ja6
0,1)(2;+
12
Desarrollo de una aplicacin H1ML/JavaScripL que per6
miLa realizar operaciones CRUD sobre SharePoinL
Modelo de objeLos de clienLe Ja6
0,1)(2;+
13
Desarrollo de una aplicacin ASP.NF1 que permiLa realizar
operaciones CRUD denLro del jrewcll
ClienLe .NF1 Framework, clienLe
SilverlighL, RFS1/ODaLa 1M;4/:M.2
14
Desarrollo de una aplicacin .NF1 en clienLe que
permiLa realizar operaciones sobre SharePoinL
ClienLe .NF1 Framework
CapLulo 3. Desarrollo de SharePoinL Apps
!
177
Conclusiones
Hemos empezado esLe capLulo proundizando sobre el desarrollo de las SharePoinL apps.
Hemos visLo que uno de los punLos ms imporLanLes en cuanLo a lo que se preLende conseguir
con las apps es que "vivan" de manera aislada al enLorno donde esL insLalado SharePoinL. De
esLa manera, se consigue que las apps no "roben" recursos a SharePoinL, y por LanLo, eviLar
problemas de rendimienLo. Al mismo Liempo, con esLo mismo se consigue dar liberLad a los
desarrolladores en cuanLo a qu lenguaje uLilizar para desarrollar apps. No esLamos sujeLos a
usar Lecnologas de MicrosoL, si no que es posible uLilizar desde PHP a H1ML bsico.
Por oLro lado, se ha visLo que con las apps uno de los peligros que corremos es dar la
sensacin al usuario de que le esLamos sacando uera del conLexLo de SharePoinL, y esLo es
precisamenLe lo que debemos eviLar a Loda cosLa. Para ello SharePoinL 203 cuenLa con una
serie de mecanismos que permiLen maqueLar y disear apps con el n de que sLas se adapLen
al enLorno donde se muesLran, heredando los esLilos de la pgina o siLio en cuesLin.
Hemos hecho un inLensivo recorrido sobre el conjunLo de las APl disponibles que Liene
para uLilizar el desarrollador. Una vez visLas las disLinLas APl, hemos cenLrado nuesLra aLencin
principalmenLe en aquellas que esLn en el lado del clienLe, bsicamenLe porque en esLe libro
esLamos LraLando Lodo lo relacionado con las apps y desde sLas, recuerda que no esL permi6
Lido uLilizar cdigo de servidor.
1ambin hemos hecho mucho hincapi en las novedades que Lrae consigo la APl RFS1, a
la que se le ampla mucho su uncionalidad en la nueva versin del producLo. Con esLa APl
RFS1 y su exLendida uncionalidad, seremos capaces que acceder a SharePoinL desde cualquier
disposiLivo que soporLe RFS1. Por lo LanLo, acabamos con esLa limiLacin que LanLos dolores de
cabeza haba producido. Para Lrabajar con RFS1 y no Lener problemas del =0/22 ;/>L:M (que
Lengamos nuesLra aplicacin y nuesLro SharePoinL en servidores disLinLos), en esLe capLulo se
explica el uso de la =0/22T;/>L:M 9:N0L0J la cual nos permiLir resolver esLa problemLica. Por lo
LanLo, es undamenLal conocerla y aplicarla, ya que casi siempre necesiLaremos hacer uso de
ella. Desde esLa APl Lambin es posible hacer uso de los servicios disponibles en SharePoinL,
como puede ser por ejemplo el servicio de bsqueda. Por lo LanLo, podemos concluir que la
APl RFS1 es una candidaLa muy rme para ser uLilizada siempre que se pueda en nuesLros
desarrollos, ya que una vez aprendamos a manejarnos con ella, seremos capaces de desarrollar
en disLinLos disposiLivos con la misma base de lo que ya sabemos.
Por lLimo, una vez visLo Lodo esLo, es imporLanLe saber qu modelo de objeLos uLilizar en
cada escenario. Para ello, incluimos una Labla en la que el desarrollador puede orienLarse sobre
qu APl elegir, ya que la eleccin de la misma es el paso ms imporLanLe.
CapLulo 4. lnsLalacin y adminisLracin de SharePoinL Apps
!
178
HasLa esLe punLo de esLe libro nos hemos sumergido en el universo de las SharePoinL apps
desde su concepcin hasLa su desarrollo pasando por un amplio abanico de posibilidades en
lo que se reere a la implemenLacin de las mismas. Sin embargo, nos queda uno de los apar6
Lados ms imporLanLes, la gesLin de las apps en nuesLra granja, desde su insLalacin hasLa la
gesLin de permisos y auLorizacin de las mismas en nuesLros servidores. FsLo es lo que vamos
esLudiar en esLe capLulo, empezaremos por el acceso al Oce SLore y la insLalacin de aplica6
ciones expuesLas pblicamenLe.
lnsLalando aplicaciones desde el Oce SLore
Para revisar el proceso de insLalacin de aplicaciones para SharePoinL desde el Oce SLore,
vamos a uLilizar una cuenLa de Oce 365 Preview en su versin FnLerprise. Fn esLe punLo, cabe
recordar que la plaLaorma de SharePoinL apps esL diseada para que esLas uncionen exacLa6
menLe igual LanLo en SharePoinL Online como en la versin de servidor local. Para esLe proceso
esLoy uLilizando un usuario que Liene el rol de adminisLrador global de la cuenLa de Oce 365,
cuyos permisos equivalenLes en una granja local seran los de adminisLrador de la granja.
Desde nuesLro siLio principal de SharePoinL Online podemos hacer clic sobre los Lres punLos
de la barra de opciones superior y acceder desde ah al Oce SLore pblico ver Figura 4-. 8arra
superior de opciones.
179
Captulo 4: Instalacin y administracin de SharePoint Apps
Figura 4-. 8arra superior de opciones
Fs posible que enconLremos un mensaje similar a esLe d+/ 21M.:>/2` 410/ M/ 3LJ M:MP-ML
clicccicn Je Ojjce c ShcrePcint Jiscnible crc su cis c reicn en este mcmentc. visite el
2:.:/ ;1 $$8OO8 4L0L I10 9L2 h9.:>L2 L49:=L=:/M128e. Dado que esLamos an en una ase Lemprana
de publicacin de SharePoinL apps, acepLaremos la inviLacin de visiLar el Oce SLore de los
FsLados Unidos para nuesLro ejemplo.
Una vez siLuados sobre el Oce SLore de FsLados Unidos podemos acceder a las aplica6
ciones de SharePoinL lLrando desde el men principal donde pone "Apps or SharePoinL" (ver
Figura 4-2. FilLros en el Oce SLore).
Figura 4-2. FilLros en el Oce SLore
All seleccionamos la aplicacin que deseamos insLalar para ver su pgina de descripcin
compleLa. Fn esLe caso, vamos a hacerlo sobre la aplicacin de inLegracin con Facebook de
MicrosoL (Facebook lnLegraLion).
180
Captulo 4: Instalacin y administracin de SharePoint Apps
Una vez lleguemos a la pgina de descripcin de la aplicacin veremos algo parecido a la
Figura 4-3. Pgina de deLalle de la aplicacin Facebook lnLegraLion.
Figura 4-3. Pgina de deLalle de la aplica6
cin Facebook J/+'<(,+2"/
Fn la Figura 4-3 podemos observar cmo se nos presenLa la descripcin de la aplicacin,
una imagen descripLiva de su uncionamienLo y lo ms imporLanLe el boLn verde "Add" (Aadir),
que nos permiLir ver lo que Lenemos que hacer para aadir dicha aplicacin a nuesLro siLio.
As pues hacemos clic en dicho boLn y llegamos a una pgina de insLrucciones en la que se
nos inviLa a copiar un cdigo a Lravs del cual podremos enconLrar y aadir la aplicacin direc6
LamenLe en el siLio que deseemos (ver Figura 4-4. lnsLrucciones para obLener la aplicacin).
181
Captulo 4: Instalacin y administracin de SharePoint Apps
Figura 4-4. lnsLrucciones para obLener la aplicacin
182
Captulo 4: Instalacin y administracin de SharePoint Apps
Siguiendo las insLrucciones, copiamos dicho cdigo y volvemos a nuesLro siLio (aquel en el
que deseemos insLalar la aplicacin), y accedemos al men de agregar aplicaciones a Lravs del
men de conguracin que hay arriba a la derecha en la barra superior de opciones de nuesLro
siLio (ver Figura 4-5. Acceso al men de agregar aplicaciones).
Figura 4-5. Acceso al men de agregar
,;&2),)2"/'$
Una vez esLamos en el siLio donde aparecen Lodas nuesLra aplicaciones disponibles pode6
mos buscar la aplicacin de Facebook lnLegraLion a Lravs del cdigo proporcionado anLerior6
menLe por el Oce SLore, poniendo esLe cdigo en el buscador no enconLrar resulLados
locales para aplicaciones insLaladas pero s nos avisar de que hay un resulLado coincidenLe en
el Oce SLore (ver Figura 4-6. 8squeda de aplicaciones por cdigo.
Figura 4-6. 8squeda de aplicaciones por cdigo
183
Captulo 4: Instalacin y administracin de SharePoint Apps
As pues, hacemos clic en el 9:MK "Almacn de SharePoinL" que nos llevar de nuevo al Oce
SLore, pero esLa vez con un ormaLo dierenLe asociado de alguna orma a nuesLro siLio. Aqu
de nuevo Lendremos que seleccionar la regin como FsLados Unidos para poder acceder a la
aplicacin. FinalmenLe, haremos clic sobre el icono de la aplicacin (ver Figura 4-7. Almacn de
SharePoinL) para acceder de nuevo a su pgina de deLalles.
Figura 4-7. Almacn de SharePoinL
FsLa vez, anLes de hacer clic sobre el boLn "Agregar" observamos que debajo del mismo
Lenemos deLallados los permisos que necesiLa la aplicacin (y que debemos acepLar para ins6
Lalarla) (ver Figura 4-8. Permisos de aplicacin).
Figura 4-8. Permisos de aplicacin
184
Captulo 4: Instalacin y administracin de SharePoint Apps
Una vez revisados los permisos, cerramos la venLana emergenLe y pulsamos sobre el boLn
"Agregar". Fn esLe punLo es posible que nos soliciLe volver a auLenLicarnos con una cuenLa
MicrosoL y no con la cuenLa de la organizacin
6
.
Una vez hecho esLo, nos mosLrar un mensaje en el que nos conrma que hemos obLe6
nido esLa aplicacin para Lodas las personas de nuesLra organizacin y adems nos muesLra
la posibilidad, medianLe una casilla de vericacin, de agregarla direcLamenLe al siLio en el
que esLbamos, en esLe caso, como era un siLio pblico vaco nos muesLra el LLulo "1Lulo de
pgina web" que es el LexLo por deecLo que lleva esLe Lipo de planLilla en el nombre del siLio
(ver Figura 4-9. PanLalla de obLencin de aplicacin).
Figura 4-9. PanLalla de obLencin de aplicacin
!& Esto significa que tenemos que autenticainos con la cuenta ue coiieo a tiavs ue la cual cieamos
esta subsciipcion ue 0ffice S6S y que necesaiiamente est asociaua a Niciosoft (lo que antes eia conociuo como
Live IB).
185
Captulo 4: Instalacin y administracin de SharePoint Apps
Una vez pulsamos el boLn volver al siLio, nos pide conrmacin de los permisos oLorga6
dos a la aplicacin y nos permiLe leer los Lrminos y condiciones (ver Figura 4-0. Conrmacin
de conanza en la aplicacin). Pulsamos en "Conar" y conLinuamos hasLa nuesLro siLio.
Figura 4-0. Conrmacin de conanza en la aplicacin
Una vez hayamos vuelLo a nuesLro siLio ya veremos la aplicacin agregada en el mismo,
junLo con el resLo de aplicaciones exisLenLes (ver Figura 4-. Aplicaciones disponibles en un
siLio).
Figura 4-. Aplicaciones disponibles en un siLio
186
Captulo 4: Instalacin y administracin de SharePoint Apps
Ahora ya podemos hacer uso de la aplicacin haciendo clic en ella. Fn esLe punLo, no vamos
a seguir proundizando en el uncionamienLo de la aplicacin Facebook lnLegraLion ya que a
parLir del momenLo en que hacemos clic en la aplicacin ya agregada a nuesLro siLio, la expe6
riencia depender del desarrollador de la misma, qu opciones haya agregado, qu inLeraz de
usuario, eLc. Pero no por eso hemos Lerminado con la adminisLracin de nuesLra aplicacin.
AdminisLracin de aplicaciones insLaladas
vamos a conLinuar adminisLrando nuesLras aplicaciones insLaladas y viendo qu opciones
Lenemos disponibles para su gesLin una vez las hemos adquirido y agregado a nuesLros siLios.
ConLinuando con el ejemplo anLerior, en el que insLalamos la aplicacin Facebook lnLegraLion
en un siLio pblico, vamos a ver qu inormacin y opciones de adminisLracin nos orece el
sisLema respecLo a esLa aplicacin. Al siLuarnos encima de la aplicacin, arriba a la derecha,
observamos que aparecen Lres punLos que nos indican que hay opciones oculLas, al hacer clic
en los mismos se muesLra un pequeo globo con inormacin y opciones sobre la aplicacin
y de nuevo oLros Lres punLos a la derecha a Lravs de los cuales podemos acceder a oLras Lres
opciones adicionales (ver Figura 4-2. Men conLexLual de aplicacin).
Figura 4-2. Men conLexLual de aplicacin
Aqu las opciones ms inLeresanLes son precisamenLe las lLimas Lres.
- >&+$11&0. FsLa opcin nos lleva a una pgina de deLalles sobre la aplicacin, con inor6
macin muy relevanLe sobre su uLilizacin. esLadsLica de errores, quin insLal la aplicacin,
esLadsLica de uso y oLras opciones muy inLeresanLes de moniLorizacin.
187
Captulo 4: Instalacin y administracin de SharePoint Apps
- '&%-)0(0. Aqu podemos volver a "conar" en la aplicacin reconociendo de nuevo los
permisos que necesiLa la misma, bien sea porque se los hemos denegado en algn momenLo
o por cualquier oLra razn.
- \?)+$%8 Como bien indica el nombre de esLa opcin, nos servir para quiLar la aplicacin
de esLe siLio, con lo que dejar de esLar disponible. Si queremos volver a uLilizarla en el uLuro,
Lendremos que volver a agregarla desde el men "Agregar una aplicacin".
Por lLimo, podemos adminisLrar los permisos de cada aplicacin insLalada LanLo a nivel
de siLio como de coleccin de siLios. Para adminisLrar los permisos de aplicacin a esLe nivel
Lenemos que acceder a la conguracin del siLio desde el men de conguracin de la barra
superior de opciones (ver Figura 4-3. Acceso a conguracin del siLio).Desde la congura6
cin del siLio podemos resLringir el uso de cualquier aplicacin insLalada LanLo a nivel de siLio
"Permisos de aplicaciones del siLio" como a nivel de coleccin de siLios "Permisos de aplicacin
de coleccin de siLios" (ver Figura 4-4. Opciones de conguracin de permisos).

Figura 4-3. Acceso a congu6
racin del siLio

Figura 4-4. Opciones de
conguracin de permisos

188
Captulo 4: Instalacin y administracin de SharePoint Apps
La inLeraz para eliminar los permisos de una aplicacin es muy sencilla e idnLica en
ambos casos, Lan solo aparecer un lisLado de aplicaciones insLaladas y una cruz a la izquierda
para eliminar los permisos de dicha aplicacin (ver Figura 4-5. CesLin de permisos de la
aplicacin).
Figura 4-5. CesLin de permisos de la aplicacin
Fl caLlogo de aplicaciones (App CaLalog)
Fn esLe capLulo solo hemos revisado en proundidad el proceso de insLalacin para
SharePoinL Online en la plaLaorma Oce 365 Preview. Para enLornos de servidor local en nues6
Lra propia red corporaLiva, adems de uLilizar esLe sisLema para insLalar aplicaciones exLernas,
exisLe un caLlogo local de aplicaciones, lo que vendra a ser un Oce SLore local conLrolado
por nosoLros. Las opciones de conguracin del mismo las podemos enconLrar en la adminis6
Lracin cenLral
7
de SharePoinL 203. Fn la Figura 4-6 podemos observar como denLro de la
AdminisLracin CenLral exisLe un rea nueva dedicada a las SharePoinL apps. JusLamenLe desde
esLa rea podremos crear la coleccin de siLios de Lipo CaLalog App HosL que nos permiLir
uLilizar nuesLro SharePoinL como caLlogo de apps (ver Figura 4-7. Creacin y conguracin
del CaLlogo de apps denLro de SharePoinL 203.).
Figura 4-6. Seccin dedi6
),#, , &,$ 1*,('5"2/+ ,;;$
denLro de la AdminisLracin
CenLral de SharePoinL 203.
7 Ms inormacin sobre la conguracin del App CaLalog aqu hLLp.//msdn.microsoL.com/en-us/
library/p23530(v=oce.5).aspx (Fn ingls)
189
Captulo 4: Instalacin y administracin de SharePoint Apps
Figura 4-7. Creacin y conguracin del CaLlogo de apps denLro de SharePoinL 203.
FsLe caLlogo de aplicaciones nos permiLe insLalar aplicaciones creadas por Lerceros sin
pasar por el Oce SLore, de orma que siguiendo las mismas reglas de seguridad y aislamienLo
podamos proveer o conLraLar dependiendo de la siLuacin aplicaciones personalizadas, reali6
zadas por Lerceros.
190
Captulo 4: Instalacin y administracin de SharePoint Apps
Conclusiones
Hemos seguido el ciclo de insLalacin y adminisLracin compleLo de una aplicacin obLe6
nida desde el Oce SLore para un enLorno de SharePoinL Online sobre Oce 365 FnLerprise
Preview.
Fl proceso de insLalacin queda Lodava relaLivamenLe complejo dada la necesidad de
navegar el Oce SLore para obLener el cdigo nico de la aplicacin que deseamos insLalar
anLes de poder enconLrarla con acilidad desde nuesLro enLorno. Suponemos que en prxi6
mas acLualizaciones, quizs la R1M del producLo, esLe proceso ser ms inLuiLivo y sencillo. Fn
cambio, no podemos decir lo mismo del proceso de gesLin de permisos y desinsLalacin de
aplicaciones, ya que se ha demosLrado que es un proceso realmenLe sencillo y que nos pro6
porciona la inormacin necesaria para saber qu uso se esL haciendo de cada aplicacin en
nuesLros siLios con las mLricas de uso del deLalle de las aplicaciones.
Con Lodo esLo, podemos concluir que la adminisLracin del nuevo modelo aplicaciones se
muesLra slido para ser su primera versin y ms que sucienLe para las necesidades de moni6
Lorizacin que acosLumbran a uLilizarse en la mayora de enLornos de 1l empresariales.
CapLulo 5. Novedades inuenciadas por las SharePoinL Apps
!
191
Fl nuevo modelo de desarrollo que concierne a las SharePoinL Apps, ha propiciado una
serie de novedades necesarias que vienen a complemenLar dicho modelo. Fn esLe capLulo Lra6
Laremos Lemas muy inLeresanLes como "Napa" (el enLorno de desarrollo de SharePoinL y Oce
Apps en la Nube), los nuevos evenLos remoLos que pueden complemenLar la uncionalidad
de las apps y un lLimo aparLado reerido a los ujos de Lrabajo donde veremos que Loda la
inraesLrucLura ya no es guardada bajo SharePoinL.
PlaLaorma de desarrollo en la Nube - lnLroduccin a Mi6
crosoL Napa
Una de las grandes bazas de la nueva versin de SharePoinL, y en especial su nuevo modelo
de desarrollo de aplicaciones, es que no haya dierencias enLre lo que se puede hacer en la Nube
y en nuesLros propios servidores locales. Fn esLe conLexLo de empeo por parLe de MicrosoL
de equiparar los servicios en la Nube a los servicios locales, nace una plaLaorma de desarrollo
de SharePoinL y Oce apps cuyo nombre en clave es M$E$. FsLe nombre, para aquellos que no
somos naLurales de FsLados Unidos, nos suena ms bien pinLoresco (a los auLores de esLe libro
personalmenLe nos recuerda a un personaje del mismo nombre en la serie de dibujos Dragon
8all), pero en realidad no Liene mucho misLerio, es el nombre de una regin llamada valle de
Napa (Napa valley) siLuada en el esLado de Caliornia, en los FsLados Unidos, que es amoso
por sus viedos y la produccin de vino (ver Figura 5-. FoLo Lomada por 8rocken lnaglory
(exLrada de Wikipedia.org)).
192
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-. FoLo Lomada por 8rocken lnaglory (exLrada de Wikipedia.org)
Pero ms all de nombres curiosos y paisajes idlicos, Napa es una plaLaorma de desarro6
llo que hace posible el desarrollo de aplicaciones para SharePoinL y Oce desde la Nube, s, lo
mismo que visual SLudio, pero direcLamenLe desde nuesLro navegador sin necesidad de insLa6
lar absoluLamenLe nada en nuesLra mquina local.
Por supuesLo, Napa, en su versin acLual, marcada en el Oce SLore como beLa, no nos
orece Lodas las posibilidades que podemos enconLrar en herramienLas de escriLorio como
visual SLudio. Por eso, a conLinuacin vamos a deLallar qu Lipos de aplicacin nos permiLir
desarrollar Napa y en qu condiciones.
- AE1)/$/)(*&0 E$%$ "#$%&'()*+. Solo podremos desarrollar aplicaciones para SharePoinL
del Lipo SharePoinL-hosLed, *) &,$ 5("02#'(6*"$+'# *) las AuLohosLed esLarn soporLadas.
- AE1)/$/)(*&0 E$%$ 5(%68 Solo podremos crear aplicaciones de Lipo Panel de Lareas
laLeral (&L2K SLM1). Fn esLe caso se requiere Oce 203 para desplegar la aplicacin.
- ApIicaciones para xceI. Podremos crear dos Lipos de aplicaciones para Fxcel, por una
parLe los mismos Paneles de Lareas laLerales (1ask Pane) de Word nos servirn para Fxcel, y por
oLra parLe Lambin podremos desarrollar aplicaciones de conLenido para Fxcel (<(*+&*+ AEE0)
que son aquellas que se despliegan direcLamenLe sobre el conLenido de una hoja de clculo de
193
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Fxcel. Fn esLe segundo caso, s uncionaran sobre la xceI web App direcLamenLe sin necesi6
dad de Lener Fxcel 203 insLalado en el escriLorio.
- AE1)/$/)(*&0 E$%$ V?+1((D8 Podremos crear las Lambin llamadas :$)1 AEE0 $2/
problemas.
Dado el conLexLo del libro en esLe capLulo solo desarrollaremos una pequea aplicacin
para SharePoinL haciendo uso de Napa.
B,0'<,#"('$ $";"(+,#"$
Fl lema principal de Napa es que puedas desarrollar Lus aplicaciones desde cualquier parLe
y en cualquier momenLo, con esLe objeLivo Napa esL soporLado para los Lres navegadores ms
uLilizados en sus versiones ms recienLes, lnLerneL Fxplorer 9 o superior, Fireox 5 o superior
y Coogle Chrome 2 o superior. Adems, como no se uLiliza ningn Lipo de 49-P:M exLerno al
propio navegador, Lambin es compaLible con la versin LcLil de lnLerneL Fxplorer 0 (accesi6
ble desde la parLe MeLro de Windows 8) (ver Figura 5-2. Napa uncionando sobre lF0 versin
meLro)
Figura 5-2. Napa uncionando sobre lF0 versin meLro
Con esLo podemos dar por senLado que uncionar Lambin en LableLas con Windows 8 R1,
lo que resulLa basLanLe impresionanLe.
LamenLablemenLe, no Lodo son buenas noLicias en esLe senLido ya que en esLa ase de desa6
rrollo, Napa no es compaLible con ninguna versin de Saari, ni Windows ni Mac ni iOS, es decir,
194
Captulo 5: Novedades infuenciadas por las SharePoint Apps
no es posible ejecuLarlo desde disposiLivos iPad, por ejemplo. Si lo inLenLamos, obLendremos un
mensaje diciendo que el navegador que esLamos uLilizando no esL soporLado.
lnsLalando y ejecuLando NAPA por primera vez
Para uLilizar Napa necesiLamos obLenerlo e insLalarlo en orma de aplicacin para SharePoinL
desde el Oce SLore. Para la insLalacin de la aplicacin seguiremos los siguienLes pasos.
Fn primer lugar, para poder insLalar Napa vamos a necesiLar una coleccin de siLios creada
a parLir de la planLilla "")+)( 6& 6&0$%%(11$6(%" (ver Figura 5-3. Seleccin de planLilla).
Figura 5-3. Seleccin de planLilla
Una vez creado nuesLro siLio de desarrollador, desde la pgina principal Lenemos un enlace
direcLo a la aplicacin de Napa para insLalarla (ver Figura 5-4. Acceso direcLo a la creacin de
aplicaciones).
Figura 5-4.
Acceso direcLo
a la creacin de
,;&2),)2"/'$
Una vez agregada la aplicacin, solo Lenemos que hacer clic sobre el icono de la misma
para acceder a ella y comenzar un nuevo proyecLo de aplicacin para SharePoinL. Fn la primera
panLalla de la aplicacin, sLa nos orece comenzar un Lipo de aplicacin (de los mencionados
195
Captulo 5: Novedades infuenciadas por las SharePoint Apps
anLeriormenLe en esLe mismo capLulo) y ponerle un nombre al proyecLo (ver Figura 5-5. 1ipos
de aplicacin posibles con Napa). Fn nuesLro caso, vamos a crear la aplicacin ejemplo
40$#&<(!,+]b]R]R.
Figura 5-5. 1ipos de aplicacin posibles con Napa
Una vez le hemos dado nombre a nuesLro proyecLo y pulsamos en el boLn "Crear" ("CreaLe"),
la aplicacin nos Lrasladar direcLamenLe al enLorno inLegrado de desarrollo en el navegador.
FsLe enLorno consLa de cuaLro parLes bien dierenciadas.
196
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Fn la ver Figura 5-6 se presenLan Lodos los componenLes de la inLeraz principal de Napa
eLiqueLados para reerencia del lecLor.
Figura 5-6. La inLeraz de Napa eLiqueLada parLe por parLe
Por un lado, esL la zona de edicin del cdigo uenLe, en la que podemos escribir nuesLro
cdigo y ediLar los disLinLos cheros que componen la aplicacin que esLamos desarrollando,
esLa zona queda siLuada en la zona cenLral de la panLalla a la derecha del navegador de conLe6
nidos del proyecLo. Fn esLa parLe, adems, disponemos de un lnLellisense avanzado, similar al
de visual SLudio (ver Figura 5-7. lnLellisense en Napa).
Figura 5-7. lnLellisense en Napa
Fl navegador de conLenidos queda siLuado en la columna derecha agrupando los Lipos de
chero por Lipos. ConLenido (ConLenL), lmgenes (lmages), Pginas (Pages) y Cdigo (ScripLs).
Adems de mosLrar los cheros que componen nuesLra aplicacin, nos permiLe su adminisLra6
197
Captulo 5: Novedades infuenciadas por las SharePoint Apps
cin a Lravs de un men conLexLual a nivel de grupo (crear o subir nuevos cheros) y a nivel
parLicular de chero (renombrar o eliminar el chero) (ver Figura 5-8. Menu conLexLual para
objeLos).
Figura 5-8. Menu conLexLual
para objeLos
Una de las parLes ms imporLanLes es la barra inerior de opciones. Fn ella podemos enconLrar
las herramienLas para ejecuLar, borrar, congurar y comparLir nuesLra aplicacin y nuesLro cdigo.
Adems, exisLe una opcin muy inLeresanLe para abrir nuesLro cdigo en visual SLudio y no quedar
permanenLemenLe limiLados a esLa inLeraz de desarrollo, pudiendo empezar una aplicacin en
Napa y llegado a un punLo de complejidad en el que necesiLemos una herramienLa ms compleLa
podamos pasar a visual SLudio para conLinuar con el desarrollo.
vale la pena deLenernos a comenLar el men de "Propiedades" ("ProperLies") de la barra inerior.
MedianLe esLe boLn se accede a una venLana de propiedades en la que podemos congurar desde
las propiedades ms imporLanLes del >LM:Z12. de nuesLra aplicacin hasLa los 1M;4/:M.2 y permisos
que necesiLar la misma para llevar a cabo su uncionalidad (ver Figura 5-9. Men de propiedades).
198
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-9. Men de propiedades
OLra de las opciones inLeresanLes que cabe desLacar de la barra inerior de opciones es el
boLn para conLinuar nuesLro desarrollo en visual SLudio. Cuando hacemos clic por primera vez
en esLe boLn nos muesLra una adverLencia de que se lanzar el web PIatform lnstaIIer. Para
asegurarnos de que los componenLes necesarios para el desarrollo de aplicaciones esLn insLa6
lados, obviamenLe, necesiLamos Lener previamenLe insLalado nuesLro propio visual SLudio 202.
Fn la ver Figura 5-0 se puede ver cmo es la apariencia del insLalador.
199
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-0. Proceso de insLalacin de Web PlaLorm lnsLaller
Una vez abierLo el proyecLo en visual SLudio 202, Lendremos Loda la esLrucLura del mismo
disponible y cuando inLenLemos modicar cualquier cosa del proyecLo el propio visual SLudio
nos pedir las credenciales de Oce 365 Preview necesarias para manLener el cdigo conecLado
a la Nube, de orma que se manLenga sincronizado con lo que Lenemos en Napa.
Por lLimo, Lenemos la barra superior en la que podemos enconLrar, por una parLe la miga
de pan conLexLual, que nos muesLra el nombre del proyecLo en el que esLamos y nos permiLe
volver al men principal de Napa, y por oLra parLe, a la derecha enconLramos un men de
opciones que nos da acceso a un perl de conguracin que nos permiLe congurar el Lipo
de proyecLo en caso de abrirlo en visual SLudio (visual 8asic o C#) y la direccin de correo
elecLrnico que uLilizaremos para las pruebas con aplicaciones para OuLlook. Fn nuesLro perl,
Lambin enconLraremos un boLn para eliminar Loda la inormacin de los proyecLos y dejar
de uLilizar la aplicacin compleLamenLe en esLe enLorno, de orma que borremos Lodo rasLro
de su uso (ver Figura 5-. PanLalla de perl de desarrollo).
200
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-. PanLalla de perl de desarrollo
Una vez Lenemos claro Lodo el enLorno de desarrollo de Napa ya esLamos lisLos para eje6
cuLar nuesLra primera aplicacin desde la Nube. Por quedar uera del objeLo de esLe capLulo
no desarrollaremos una aplicacin nueva para probar la uncionalidad de Napa, uLilizaremos el
cdigo base que viene incluido de serie en la planLilla de aplicacin para SharePoinL del mismo
enLorno, que muesLra el nombre del usuario acLual por panLalla al ejecuLar la aplicacin. As
pues, pulsamos sobre el boLn "FjecuLar" ("Run ProjecL") de la barra de opciones inerior y
aparecer una venLana de carga que nos muesLra el proceso de subida, compilacin y desplie6
gue de la aplicacin para Lerminar orecindonos acceder a nuesLra aplicacin en una nueva
venLana.
Una vez salgamos de la ejecucin de la aplicacin y volvamos a nuesLro siLio de desarrollador,
en esLe siLio nos aparecer un lisLado con las aplicaciones que hemos creado bajo el subLLulo
"Aplicaciones en ase de prueba" (ver Figura 5-2. Aplicaciones disponibles).
201
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-2. Aplicaciones disponibles
Desde esLe lisLado podemos ejecuLar las aplicaciones que hemos ejecuLado anLeriormenLe
desde Napa, haciendo muy sencillo el acceso a esLas aplicaciones para las pruebas con usu6
arios en esLe enLorno de desarrollo.
La prxima vez que queramos conLinuar nuesLro desarrollo desde Napa debemos enLrar
de nuevo en nuesLro siLio de desarrollador y desde el mismo men que insLalamos Napa (el de
"Crear una aplicacin" en la pgina principal de nuesLro siLio) ahora accederemos direcLamenLe
a Napa viendo las aplicaciones que Lenemos guardadas de veces anLeriores y pudiendo Lam6
bin comenzar nuevos desarrollos (ver Figura 5-3. Aplicaciones creadas anLeriormenLe).
Figura 5-3. Aplicaciones creadas anLeriormenLe
202
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Conclusiones
La plaLaorma de desarrollo en la Nube para Oce 365 Preview, Napa, ha sido posible6
menLe una de las ms graLas sorpresas que nos ha deparado a los desarrolladores la nueva
plaLaorma de desarrollo de aplicaciones para SharePoinL y Oce. Con Napa MicrosoL llega un
paso ms lejos en la baLalla por llevar Lodo y a Lodos a la Nube iniciando un camino que posi6
blemenLe acabe en un visual SLudio para la Nube mucho ms compleLo en uLuras versiones.
ObviamenLe, en su versin acLual, Napa no remplaza por compleLo, en ningn caso a visual
SLudio 202, pero s lo complemenLa, Lal y como hacen las Ofhce web Apps con el Oce de
escriLorio, exibilizando la edicin y ejecucin de nuesLro cdigo desde prcLicamenLe cual6
quier parLe en la que Lengamos acceso a lnLerneL y a un navegador soporLado. Con Lodo esLo
podemos concluir que Napa es el germen de algo mucho ms grande, adems de enriquecer
la acLual plaLaorma de desarrollo de que disponemos los desarrolladores que hacemos apli6
caciones para SharePoinL y Oce.
FvenLos en SharePoinL 203
Fn esLe capLulo vamos a LraLar Lodo lo relacionado con evenLos que Lrae consigo la nueva
versin de SharePoinL.
Novedades en FvenL Receivers
Para comenzar, vamos a denir qu es un B.&*+ G&/&).&%. Por FvenL Receiver enLendemos
pequeos Lrozos de cdigo que se ejecuLan como reaccin a cierLos acLores desencadenan6
Les que se producen en SharePoinL, como puede ser aadir un nuevo Lem, acLualizar un Lem,
borrar un Lem, eLc. A la hora de enconLrar una similiLud, podramos compararlos con los
evenLos que se producen en C# (8)!*F, 2+&%3$+$=(K,E, eLc.). Resumiendo, el resulLado es que
un usuario realiza una accin que hace que se ejecuLe cierLo bloque de cdigo. FsLe Lipo de
evenLos, en SharePoinL se bauLizan como FvenL Receivers. FxisLe ya una exLensa lisLa de evenLos
para la cual los FvenLs Receivers pueden salLar. Fn SharePoinL 203 esLa lisLa crece para incluir
nuevos evenLos relacionados con grupos, permisos y adminisLracin de roles.
AnLes de nada comenLar la dierencia que exisLe en los evenLos Lerminados con sujo "W!,-"
y "W&E". Los evenLos que Lerminan con el sujo "W!,-" son conocidos Lambin como Y&;(%&
B.&*+0 y son los de Lipo sncrono. Por 8eore FvenLs enLendemos evenLos que se lanzan anLes
de que los daLos sean escriLos en base de daLos. Fn esLe Lipo de evenLos, la operacin Lodava
no ha sido compleLada, por lo LanLo, nos permiLiran cancelar el evenLo. Fn cambio, los evenLos
203
Captulo 5: Novedades infuenciadas por las SharePoint Apps
que Lerminan con el sujo "W&E" son conocidos como A;+&% B.&*+0 y son de Lipo asncrono. Por
ALer FvenLs enLendemos evenLos que se lanzan a la respuesLa de una accin del usuario y *(
son guardadas en base de daLos hasLa que esLa accin ha Lerminado. Fn esLe Lipo de evenLos
no se puede cancelar la operacin la cual provoc el evenLo. A conLinuacin, vamos a ver una
lisLa en la que aparecen Lodos los evenLos disponibles en SharePoinL 203.
NUEVOS EVENTOS EN SHAREPOINT 2013
8eore FvenLs (anLes de la accin) ALer FvenLs (despus de la accin)
82*I('55-.H 82*I('55#5
82*I(b(5,$-.H 82*I(b(5,$#5
82*I()#N#$-.H 82*I()#N#$#5
82*I(b0#2'55-.H 82*I(b0#2'55#5
82*I(b0#2)#N#$-.H 82*I(b0#2)#N#$#5
8o1e0efnton^ddng 8o1e0efnton^dded
8o1e0efntonupdatng 8o1e0efntonupdated
8o1e0efnton0e1etng 8o1e0efnton0e1eted
`*N#'00-H.+#.$'55-.H `*N#'00-H.+#.$'55#5
`*N#'00-H.+#.$)#N#$-.H `*N#'00-H.+#.$)#N#$#5
9.<#2-$,.3#O2#,k-.H 9.<#2-$,.3#O2*k#.
9.<#2-$,.3#`#0$*2-.H 9.<#2-$,.3#`#0$*2#5
9$#+a#20-*.)#N#$#5
Adems de esLos nuevos evenLos, vamos a poder uLilizar B.&*+0 G&/&).&%0 G&-(+(0 ;,(,
las apps de SharePoinL y oLro Lipo de evenLo que quizs es ms peculiar, al que llamaremos
AEE B.&*+ G&/&).&%, Lambin para las apps de SharePoinL. Como podis ver, los dos nuevos
Lipos de evenLos esLn aplicados a las apps.
De esLos dos nuevos Lipos de evenLos, los FvenLs Receivers RemoLos son los ms parecidos
a los evenLos Lradicionales, ya que son evenLos que ocurren sobre un objeLo de SharePoinL,
como puede ser una lisLa, un Lem de la lisLa, un campo de una lisLa, un siLio, eLc. La mayor
dierencia de los FvenLs Receivers RemoLos renLe a los Lradicionales, es que esLe nuevo Lipo
de evenLos pueden Lrabajar con componenLes remoLos de las apps de SharePoinL 203, es
decir, pueden reaccionar anLe los evenLos que se producen, por ejemplo, en una lisLa que esL
alojada en la propia app de SharePoinL. OLra de las venLajas que nos orece es poder ejecuLar
'0'/+"$ $"-(' Listas externas (8CS). Por ejemplo, imaginemos que Lenemos una uenLe de
daLos exLerna, sobre la que nos declaramos una LisLa exLerna, medianLe los FvenLs Receivers
Lradicionales no podramos capLurar los evenLos que se produjeran sobre esLa lisLa, ya que
en SharePoinL 200 no esL soporLado. Fn cambio, en SharePoinL 203, medianLe los FvenLs
Receivers RemoLos ya seremos capaces de capLurar esos evenLos. Fs imporLanLe no conundir
los Lrminos de componenLes SharePoinL (lisLas, wcrljcws, pginas, eLc.) con /(-E(*&*+&0
%&-(+(0 (uenLes de daLos exLernas, lisLa en una SharePoinL-hosLed App, eLc.). Fn el siguienLe
204
Captulo 5: Novedades infuenciadas por las SharePoint Apps
grco podemos apreciar la $//R Lrabajando con componenLes remoLos y la $//S Lrabajando
con componenLes SharePoinL.
Figura 5-4. Dierenciacin enLre componenLes SharePoinL y com6
ponenLes remoLos
A conLinuacin, vamos a enLrar ms en deLalle en cada uno de los nuevos Lipos de evenLos,
permiLiendo as al usuario ser capaz de crearlos y manejarlos.
FvenLs Receivers RemoLos
FsLe es el nuevo Lipo de evenLo ms parecido a lo que ya conocamos. Los FvenLs Receivers
RemoLos pueden ser sncronos o asncronos y sern implemenLados medianLe un servicio web.
Fs decir, el cdigo que se ejecuLar cuando se produzca el evenLo ser servido por un servicio
web. Que sea un servicio web, nos aporLa mucha versaLilidad ya que podramos Lenerlo des6
plegado en un servidor y consumirlo enLre disLinLas aplicaciones. Cuando aadamos un FvenL
Receiver RemoLo, se aade en el proyecLo web un servicio WCF que implemenLe el cdigo
personalizado de nuesLro FvenL Receiver RemoLo. Las dos unciones que aparecern a rellenar
'/ '& $'(02)2" $'(./=
Al aadir un FvenL Receiver RemoLo, nuesLro proyecLo SharePoinL Lambin ser ver aec6
Lado. Fn concreLo, el archivo I//>$,!M&7+:Y%), que ser el encargado de enlazar enLre el pro6
yecLo que dene al FvenL Receiver RemoLo y el proyecLo que almacena el servicio WCF que
implemenLa la lgica del evenLo. A conLinuacin, un ejemplo del archivo I//>$,!M&7+:Y%) ,&
crear un FvenL Receiver RemoLo en el que se ha escogido el evenLo 2+&%IEE!,- ' 2+&%L/E$+!,-.
Fn esLe ejemplo, se especica Lambin el Lipo de planLilla de lisLa para la cual se va a uLilizar, el
205
Captulo 5: Novedades infuenciadas por las SharePoint Apps
nombre del manejador escogido, Lipo de evenLo a conLrolar y la URL del servicio WCF bajo la
cual se encuenLra la lgica.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4TX
SYN#+#.$0 P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z4X
S`#3#-6#20 r-0$@#+(N,$#95L4UVV4X
S`#3#-6#2X
SD,+#X`#+*$#Y6#.$`#3#-6#29$#+'55-.HSZD,+#X
S@A(#X9$#+'55-.HSZ@A(#X
S"#FI#.3#DI+J#2XUVVVVSZ"#FI#.3#DI+J#2X
Sb2NXe2#+*$#'((b2NZ`#+*$#Y6#.$`#3#-6#21063SZb2NX
SZ`#3#-6#2X
S`#3#-6#2X
SD,+#X`#+*$#Y6#.$`#3#-6#29$#+b(5,$-.HSZD,+#X
S@A(#X9$#+b(5,$-.HSZ@A(#X
S"#FI#.3#DI+J#2XUVVVVSZ"#FI#.3#DI+J#2X
Sb2NXe2#+*$#'((b2NZ`#+*$#Y6#.$`#3#-6#21063SZb2NX
SZ`#3#-6#2X
SZ`#3#-6#20X
SZYN#+#.$0X

Una vez visLa la orma de implemenLar la lgica que hay deLrs de un FvenL Receiver
RemoLo, vamos a explicar el ciclo de ejecucin que sigue (para esLe ejemplo usaremos un
evenLo 8eore FvenL, es decir, se lanza anLes de que se guarden los daLos en 8D).
Figura 5-5. Ciclo de ejecucin de un FvenL Receiver RemoLo
206
Captulo 5: Novedades infuenciadas por las SharePoint Apps
AnLes de comenzar a redacLar los punLos visLos en la imagen, es imprescindible enLender
'& )"/)';+" #' A<" (Access ConLrol Service). Por ACS enLendemos un servicio que esL en
la Nube, que nos proporciona una manera cil de auLenLicar y auLorizar usuarios a nuesLras
aplicaciones web.
Una vez enLendido esLo, vamos a pasar a redacLar los punLos ms en deLalle.
. FsLa es la inLeraccin inicial, un usuario acLualiza una lisLa, es decir, aade, ediLa o
borra un Lem, eLc.
2. SharePoinL recibe la orden.
3. SharePoinL realiza peLiciones al ACS para obLener inormacin sobre el conLexLo y
para obLener un cdigo de auLorizacin.
4. Fn esLe paso se genera la respuesLa con dicha inormacin junLo cdigo de auLori6
zacin. FsLa inormacin es secreLa enLre nuesLro SharePoinL y el ACS.
5. Si la respuesLa es posiLiva, el siguienLe paso ser llamar al FvenL Receiver RemoLo
que bsicamenLe ser un servicio WCF, el cual conLendr la lgica del usuario.
6. FsLe es el lLimo paso, en el cual el FvenL Receiver RemoLo aLaca a un sisLema de daLos
exLerno realizando las modicaciones oporLunas con el n que ue programado.
A conLinuacin, la Labla con los evenLos (en ingls) que podemos elegir en la creacin de
un FvenL Receiver RemoLo (sern menos, por ejemplo, no esLn los manejadores de evenLos
para ujos de Lrabajo).
NOMBRE DEL EVENTO 12/)("/>,
Eventos Web
A siting deleted 1>
A site is being deleted 1>
A site is being moved 1>
A site is being provisioned 1>
A site collection was deleted B"
A site was deleted B"
A site was moved B"
207
Captulo 5: Novedades infuenciadas por las SharePoint Apps
A site was provisioned B"
Eventos en listas
A feld was added B"
A feld is being added 1>
A feld was removed B"
A feld is being removed 1>
A feld was updated B"
A feld is being updated 1>
A list is being added 1>
A list is being deleted 1>
A list was added B"
A list was deleted B"
Eventos en elementos de la lista
A fle was moved B"
A fle was converted B"
An attachment is being added to the item 1>
An attachment is being removed from the item 1>
A fle is being moved B"
An item was added B"
An item was updated B"
An item was deleted B"
An item was checked in B"
An item was checked out B"
An item was unchecked out B"
An attachment was added to the item B"
208
Captulo 5: Novedades infuenciadas por las SharePoint Apps
An attachment was removed from the item B"
A fle was moved B"
A fle was converted B"
Para cerrar esLe aparLado, respecLo a casos de usos, podramos decir que uLilizaramos
FvenLs Receivers RemoLos si quieres conLrolar desde Lu app quien aade cierLo elemenLo en
cierLa lisLa. OLro ejemplo de uso sera querer prever que los usuarios no eliminen un elemenLo
de la lisLa desde Lu app.
App FvenL Receivers
FsLe Lipo de evenLos son un LanLo ms peculiares. FsLn dedicados a capLurar los evenLos
que se producen en la propia app de SharePoinL, es decir, cuando es insLalada, acLualizada o
borrada. Como puedes apreciar, pueden llegar a ser muy Liles para auLomaLizar procesos ree6
ridos al despliegue de las apps. Un caso de uso de esLe Lipo de evenLo, sera por ejemplo que
queremos regisLrar en el chero de log al usuario que ha desinsLalado nuesLra app o mandar
email cuando un usuario insLale nuesLra app, con esLe Lipo de evenLo lo podramos llevar a
cabo. OLro ejemplo podra ser que necesiLemos de crear cierLa esLrucLura de lisLas denLro de
un siLio de propio SharePoinL donde esLamos insLalando la app.
A la hora de crear una app, explorando en las propiedades de venLana de la app, nos apa6
recen 3 Lipos de evenLos, los cuales podemos insLanciar a 9#K& " "$)7&. FsLas propiedades son
a nivel de proyecLo de visual SLudio, en concreLo para un proyecLo de una app para SharePoinL,
los evenLos que podemos apreciar son los siguienLes.
-
Figura 5-6. FvenLos en la propia
App
Handle App lnsLalled - FvenLo que se lanzar al insLalar la app.
- Handle App UnisLalling - FvenLo que se lanzar al desinsLalar la app.
- Handle App Upgraded - FvenLo que se lanzar al acLualizar la app.
209
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Al insLanciar el valor de uno de los Lres evenLos a 9#K&, Lambin se aade una nueva
'/+(,#, '/ '& ,;,(+,#" <#(/&#+!&7 #'& ,()*20" I//>$,!M&7+:Y%). FsLa enLrada es la encar6
<,#, #' ('&,)2"/,( '& AEE B.&*+ %&/&).&% con el servicio WCF. Para Lerminar, vamos a ver el
cdigo que conLiene el I//>$,!M&7+:Y%) con los 3 Lipos de evenLos que vimos en el punLo
,/+'(2"( 2/$+,/)2,#"$ , 9#K&. FsLos evenLos se lanzarn al insLalar, acLualizar o borrar una app.

STP+N 6#20-*.L4U1V4 #.3*5-.HL4I$R%W4 TX
S'(( P+N.0L4<$$(QZZ03<#+,01+-32*0*R$13*+Z0<,2#(*-.$Z_VU_Z,((Z+,.-R#0$4
D,+#L4"<,2#&*-.$'((]4
&2*5I3$9)L4=5_553J_#%mJ#_%7V3i%,l77%#,,mi5]5WW#7K4
a#20-*.L4U1V1V1V4
"<,2#&*-.$G-.a#20-*.L4Ui1V1V1V4X
S&2*(#2$-#0X
S@-$N#X"<,2#&*-.$'((]SZ@-$N#X
S"$,2$&,H#Xe2#+*$#'((b2NZ&,H#0Z)#R,IN$1,0(PT="$,.5,25@*k#.0KSZ"$,2$&,H#X
S9.0$,NN#5Y6#.$Y.5(*-.$Xe2#+*$#'((b2NZ'((Y6#.$`#3#-6#21063SZ9.0$,NN#5Y6#.%
$Y.5(*-.$X
Sb.-.0$,NN-.HY6#.$Y.5(*-.$Xe2#+*$#'((b2NZ'((Y6#.$`#3#-6#21063SZb.-.0$,NN-.%
HY6#.$Y.5(*-.$X
Sb(H2,5#5Y6#.$Y.5(*-.$Xe2#+*$#'((b2NZ'((Y6#.$`#3#-6#21063SZb(H2,5#5Y6#.%
$Y.5(*-.$X
SZ&2*(#2$-#0X
S'((&2-.3-(,NX
S`#+*$#\#J'((N-3,$-*. [N-#.$95L44 ZX
SZ'((&2-.3-(,NX
SZ'((X

Conclusiones
Fn esLe capLulo hemos visLo qu novedades Lrae consigo la nueva versin de SharePoinL
en cuanLo a evenLos. PrincipalmenLe, esLa novedad viene deLerminada por los dos nuevos Lipos
de evenLos que nos vamos a enconLrar en cuanLo a apps, los FvenLs Receivers RemoLos y los
App FvenLs Receivers. Con esLos nuevos Lipos de evenLos, no solo podremos ya manejar even6
Los que se produzcan en lisLas exLernas, sino que Lambin podremos Lener conLrolados evenLos
que se produzcan en las propias apps.
210
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Novedades de ujos de Lrabajo para SharePoinL 203
Como habrs ledo hasLa esLe punLo SharePoinL 203 viene cargado de novedades y cam6
bios de losoa en muchos aspecLos. Fn lo que respecLa a ujos de Lrabajo, Lambin se han
hecho cambios signicaLivos y en esLe punLo no se libra nadie, desde el ?0?$%)( 6& *&=(/)(
que disea procesos sencillos, pasando por el 6&0$%%(11$6(% que crea aplicaciones o ujos de
Lrabajo complejos, hasLa el responsabIe de lT encargado de insLalar, congurar y manLener la
granja de SharePoinL.
FsLos cambios y novedades Lambin esLn orienLados a igualar el modelo de ejecucin
de ujos de Lrabajo enLre SharePoinL 203 y SharePoinL Online aciliLando as la migracin o
reuLilizacin de un ujo de Lrabajo enLre los dos enLornos.
Para el diseador
FnLendiendo como diseador a aquellos usuarios de negocio o analisLas de procesos que
parLicipan en el proceso de creacin de ujos de Lrabajo, sLe Lendr a su disposicin un
enLorno inLuiLivo con el que crear ujos de Lrabajo ms poLenLes, de orma ms sencilla y
empleando menos Liempo.
Para conseguir esLa opLimizacin, el diseador Lendr a su disposicin nuevos evenLos,
acciones y esLrucLuras clsicas de programacin. 1ambin podr congurar llamadas a servicios
de orma grca, algo para lo que hasLa el momenLo era necesario acudir a programacin.
Fn cuanLo a las herramienLas a uLilizar por el diseador no habr cambios, esLas sern
L)0)( 2349 para modelado de procesos y "#$%&'()*+ >&0)=*&% para conguracin del ujo de
Lrabajo.
5,(, '& #'$,(("&&,#"(
La novedad ms imporLanLe es que el desarrollador ya no escribir cdigo para programar
sus ujos de Lrabajo ya que esLos pasan a ser puramenLe declaraLivos. DenLro de L)0?$1 "+?6)(
2342, el desarrollador dispone de la herramienLa, workow Designer, con la que crea el ujo
de Lrabajo grcamenLe. lnLernamenLe el ujo de Lrabajo es cdigo XAML que se inLerpreLa en
Liempo de ejecucin.
Adems, el nuevo moLor de ejecucin de ujos de Lrabajo permiLe conLrolar el ciclo de
ejecucin de esLos desde cualquier sisLema exLerno, con el objeLivo de que el desarrollador
pueda inLegrarlos como parLe de la capa de negocio de sus aplicaciones, ya sean aplicaciones
de SharePoinL o cualquier oLro Lipo de aplicacin.
211
Captulo 5: Novedades infuenciadas por las SharePoint Apps
5,(, '& ('$;"/$,-&' #' J!
La novedad ms imporLanLe para el responsable de l1 es que el moLor de ejecucin de
ujos de Lrabajo de SharePoinL 203 es un componenLe exLerno a la plaLaorma y su insLalacin
y conguracin Liene que hacerse por separado. Fl adminisLrador podr crear una granja de
servidores dedicados a esLe propsiLo y asociarlos con su granja de SharePoinL obLeniendo as
una arquiLecLura robusLa y escalable.
ArquiLecLura
workow Manager CIient l.0 es el nombre del nuevo moLor de ejecucin de ujos de Lra6
bajo en SharePoinL 203. Usa como Z0L>17/0K la versin 4 de Windows Workow FoundaLion
y como APl de mensajera Windows CommunicaLion FoundaLion.
Windows Workow FoundaLion 4 dene un ujo de Lrabajo como un conjunLo de acLi6
vidades, represenLando cada una de ellas un componenLe uncional del proceso. SharePoinL
203 inLroduce una capa superior sobre esLe modelo que permiLe crear ujos de Lrabajo no
secuenciales similares a ujos de esLado de mquina (esLe modelo se dene como "sLaLe-gaLe
model").
No debemos de conundir AcLividad con Accin. Una AcLividad represenLa un objeLo admi6
nisLrado (una clase), es lo que ve y maneja el moLor de ejecucin. Una Accin es un conLenedor
que encapsula una acLividad, es lo que se muesLra al usuario en las herramienLas de diseo de
ujos de Lrabajo.
212
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Figura 5-7. Nueva arquiLcLura de los ujos de Lrabajo para SharePoinL 203
Workow Manager ClienL .0
Se encarga de adminisLrar las deniciones de ujos de Lrabajo y Lambin aloja los procesos
de ejecucin de cada insLancia de los mismos.
Workow Manager Service ApplicaLion Proxy
Workow Manager ClienL .0 esL represenLado denLro de SharePoinL como workow
Manager 5ervice AppIication Proxy, componenLe con el que se comunica auLenLicndose
medianLe OAuLh.
Windows Azure Service 8us
@$ '& '/),(<,#" #' '$):)*,( &"$ '0'/+"$ <'/'(,#"$ #'$#' 1*,('5"2/+ ;,(, +(,$&,#.($'&"$
al moLor de ejecucin. Por ejemplo, cuando se crea un nuevo elemenLo en una lisLa que Liene
asociada un ujo de Lrabajo para esLe evenLo, AJ?%& "&%.)/& Y?0 (')"<' '& '0'/+" !+&%8#&$+&E
y lo noLica a Workow Manager ClienL .0 para que inicie una insLancia nueva de ese ujo de
Lrabajo.
213
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Workow Service Manager
Fs la parLe del modelo de objeLos de SharePoinL que proporciona uncionalidad para admi6
nisLrar ujos de Lrabajo y conLrolar su ejecucin. FsLa uncionalidad incluye el despliegue de los
mismos, unciones de mensajera, conLrol de insLancias acLivas y gesLin de ujos de Lrabajo de
SharePoinL 200.
Cuando comenLbamos anLeriormenLe que los desarrolladores podrn Lrasladar uncio6
nalidad de capa de negocio de sus aplicaciones al moLor de ejecucin de ujos de Lrabajo nos
reeramos al uso de esLe componenLe.
SharePoinL 203
SharePoinL 203 se encarga de proporcionar la parLe del Z0L>17/0K 9:' /" +2'/' C2/#"A$
Workow FoundaLion 4 para Lrabajar con objeLos de SharePoinL, es decir, conLenido (lisLas,
usuarios, Lareas, eLc.) y evenLos.
SharePoinL 200 Workow HosL
Se LraLa de un componenLe de inLeroperabilidad que permiLe ejecuLar ujos de Lrabajo
de SharePoinL 200 y llamar a acLividades o usar caracLersLicas Lodava no implemenLadas en
SharePoinL 203.
Si en Lu organizacin acLualmenLe se encuenLran en produccin desarrollos a medida que
incluyen acLividades personalizadas no ser un problema migrar a SharePoinL 203 gracias a
esLe componenLe.
lnsLalacin y conguracin del enLorno
A da de hoy, SharePoinL 203 cuenLa con 3 Lipos de plaLaorma de ujos de Lrabajo.
- SharePoinL 200
- SharePoinL 203 (requiere Workow Manager)
- ProjecL Server 203 (requiere ProjecL Server 203)
Una vez realizada la insLalacin inicial de SharePoinL 203, solamenLe se enconLrar dis6
ponible SharePoinL 200 como plaLaorma de desLino. Como hemos dicho anLeriormenLe, el
214
Captulo 5: Novedades infuenciadas por las SharePoint Apps
moLor de ejecucin de ujos de Lrabajo en SharePoinL 203 es un componenLe exLerno y es
necesario insLalarlo por separado.
Fs imporLanLe Lener que cuenLa que Workow Manager no esL disponible en SharePoinL
FoundaLion 203.
Podemos planear la insLalacin de nuesLra granja de Workow Manager con Lipologas
diversas, pero creemos que no es objeLivo de esLe libro abarcar esLe asunLo. Fn esLa direccin
puedes consulLar Loda la inormacin al respecLo. 0++/[ii+&*0,&+:%!*#(7(M+:*(%i&,;K7i)!O#$#.i
]]658586{v=o1ce.15}.aspx.
Lo que vamos a ver es cmo realizar una conguracin bsica de Workow Manager para
un enLorno de desarrollo. Fn esLe caso, se LraLa de un servidor Windows Server 202 que es
conLrolador de dominio en el que se encuenLra insLalado SQL Server 202 y SharePoinL 203.
Planicacin
A conLinuacin, veremos cules son algunos de los requisiLos necesarios para el Lipo de
insLalacin que nos ocupa. Para ampliar la inormacin al respecLo vlida para el resLo de imple6
menLaciones puede ir a la siguienLe direccin. 0++/[ii+&*0,&+:%!*#(7(M+:*(%i&,;K7i)!O#$#.i
]]193466
Los pre-requisiLos se insLalan auLomLicamenLe desde Web PlaLorm lnsLaller, pero hay
varias conguraciones que Lendremos que realizar anLes de ejecuLar el asisLenLe de congura6
cin de Workow Manager.
SQL Server. habiliLar conexiones 1CP/lP y canalizaciones con nombre
Firewall de Windows. habiliLado
PuerLos 4446 y 52. habiliLados
Adems, dado que esLe servidor es Lambin conLrolador de dominio, el usuario que va a
congurar Workow Manager debe ser adminisLrador de dominio y Lener permisos de 7.7IE;
%!, en SQL Server.
215
Captulo 5: Novedades infuenciadas por las SharePoint Apps
lnsLalacin
La insLalacin se realizar medianLe el asisLenLe de insLalacin de plaLaormas web MicrosoL
Web PlaLorm lnsLaller. Si no se encuenLra insLalado en el servidor se puede descargar desde la
siguienLe direccin. 0++/[iiJJJ:%!*#(7(M+:*(%iJ&OiE(J,)($E7i/)$+M(#%:$7/Y
. Abrir el navegador con la siguienLe direccin.
0++/[ii-(:%!*#(7(M+:*(%iMJ)!,Fi\6!,F23PSbSQoS
2. Abrir el archivo.
3.
Figura 5-8. Descarga del Workow Manager
Web PlaLorm lnsLaller se iniciar mosLrndonos los daLos del componenLe que se
va a insLalar.
Figura 5-9. Descargando el Workow .0 8eLa desde Web PlaLorm
J/$+,&&'(
216
Captulo 5: Novedades infuenciadas por las SharePoint Apps
4. Fn esLe momenLo se inicia la insLalacin de los pre-requisiLos y de Workow Manager
ClienL .0.
Figura 5-20. lnsLalando pre-requisiLos de Workow Manager
ClienL .0
Conguracin
Una vez insLalado, y si no hubo ninguna incidencia, procederemos a iniciar el asisLenLe de
conguracin de Workow Manager. FsLa conguracin consLa de dos pasos, primero con6
guraremos la granja de Workow Manager con el asisLenLe de conguracin y despus asocia6
remos esLa granja a nuesLro servidor de SharePoinL.
Ccnjurcr Wcrljcw Mcncer
. lniciar el asisLenLe de conguracin.
2. Crear una nueva granja. seleccionar "CreaLe a New Farm" - "Using DeaulL SeLLings"
217
Captulo 5: Novedades infuenciadas por las SharePoint Apps
3.
Figura 5-2. Creacin de granja de Workow para SharePoinL 203
lnLroducir los daLos soliciLados y pulsar "SiguienLe".
- 5QL 5erver lnstance. nombre del servidor SQL (probar la conexin).
- U5R lD. nombre del usuario que ejecuLar el proceso. Fs -?F )-E(%+$*+& E(*&%
eI nombre fqnd compIeto si no, el proceso allar (ejemplo. $E%!,!7+#$+(#jE(%!,!(:*(%).
- 'A""5VG>. conLrasea del usuario.
- AIIow workow management over http= ,& +(,+,($' #' :/ '/+"(/" #' #'$,(("&&"
marcamos esLa opcin para no Lener problemas con cerLicados.
- CRTlllCAT GNRATlON KY= '$)(2-2( :/, )&,0' ):,&9:2'(, ;,(, 9:' $' <'/'('
el cerLicado.
4. Fn la pgina siguienLe del asisLenLe vemos los valores de conguracin selecciona6
dos. 1ambin Lenemos la opcin de obLener el cdigo PowerShell para realizar esa congu6
racin, lo que puede ser muy Lil para enLornos de produccin. vericamos para conLinuar.
5. Fsperamos a que se compleLen Lodos los procesos y si Lodo ha ido bien pasamos al
paso siguienLe.
218
Captulo 5: Novedades infuenciadas por las SharePoint Apps
Ccnjurcr ShcrePcint 201J
a Lenemos congurada nuesLra granja de Workow Manager a la que hemos aadido un
servidor. Ahora solamenLe nos queda congurar nuesLra granja de SharePoinL 203 para esLa6
blecer la comunicacin enLre ambas. Para ello, simplemenLe Lenemos que ejecuLar el siguienLe
comando de PowerShell.
kegister-SWorkowService -SSite "http://SSite0kL" -WorkowHost0ri
A0++/[ii4&#D&#`$%&[pppH ;I))(JcIK+0V++/
lnLeraces de programacin
SharePoinL 203 incluye una inLeraz de programacin para que el desarrollador pueda
aprovechar Loda la poLencia del nuevo moLor de ejecucin de ujos de Lrabajo. FsLe nuevo
modelo de objeLos permiLe auLomaLizar el despliegue de ujos de Lrabajo y adminisLrar ins6
Lancias de los mismos. Dependiendo del Lipo de alojamienLo de nuesLra SharePoinL App acce6
deremos a la APl de la orma ms adecuada.
Modelo de objeLos de servidor.
Modelo de objeLos de clienLe (CSOM).
Modelo de objeLos de JavaScripL (JSOM).
RFS1 APl.
Fn la siguienLe direccin, puedes descargar un ejemplo compleLo de cmo inLeracLuar con
la plaLaorma de ujos de Lrabajo desde una SharePoinL App. 0++/[ii*(E&:%7E,:%!*#(7(M+:*(%i
Shareoint-2013-workow-05015211
CapLulo 5. Novedades inuenciadas por las SharePoinL Apps
!
219
AuLores
Jos QuinLo Zamora
H"$E '$ 1*,('5"2/+ ,/# 1',()* 1;')2,&2$+ '/ 1"&2#3. CompleL
sus esLudios de lngeniera lnormLica Superior por la Universidad de
AlicanLe en 2008. Fue galardonado con el premio especial al mejor
expedienLe de su promocin (2003-2008). AcLualmenLe combina su
Lrabajo en SolidQ con la realizacin de su Lesis docLoral en el campo
de "8squeda Fmpresarial y ConLexLual" Lambin en la Universidad
de AlicanLe en el deparLamenLo DLSl. 1iene ms de 4 aos de expe6
riencia en SharePoinL. ConcreLamenLe, ha Lrabajado con SharePoinL
desde su versin 2007, pasando por la versin de 200 y acLualmenLe
esL Lrabajando ya con la versin 203, especializado en las reas.
gesLin, insLalacin, conguracin, N0LM;:MP, inLeligencia de negocios,
bsqueda empresarial, localizacin, inLernacionalizacin y desarrollo.
Adems, ha imparLido varias sesiones Lcnicas para MicrosoL lbrica
y en los evenLos SQLU SummiL 2009, 200, 20 y 202, CFUS 202,
SQLServer2. 1iene publicaciones en dNM- (anLes doLNeLMana),
CodePlex y ComparLiMOSS. Adems, Jos es escriLor habiLual en los
-&"<$ #' 1"&2#3 #' 1*,('5"2/+ y 5"A'(520"+. 1ambin es MCP, MC1S,
MCl1P y MCPD en SharePoinL 200. Fs basLanLe acLivo en las redes
sociales, comparLiendo conocimienLo de SharePoinL, principalmenLe.
12<:' , H"$E '/ !A2++'(= @jquinLozamora
CrisLian Zaragoza
CrisLian cuenLa con ms de dos aos de experiencia de Lrabajo
con SharePoinL. Desde que comenz a Lrabajar en el deparLamenLo
de colaboracin y bsqueda de 1"&2#3, ha esLado presenLe en dis6
LinLos proyecLos de desarrollo para disLinLas empresas, siempre con
SharePoinL como denominador comn. Fs colaborador acLivo en el
blog del equipo de SharePoinL de SolidQ, as como ponenLe habiLual
en las jornadas anuales de ponencias de SolidQ en Madrid, "SolidQ
SummiL Madrid". Por oLro lado, CrisLian cuenLa con un MsLer con6
cluido con xiLo en "Desarrollo de Aplicaciones y Servicios Web" en
la Universidad de AlicanLe, as como diversas cerLicaciones ociales
de MicrosoL. Fn la acLualidad, CrisLian sigue Lrabajando en disLinLos
proyecLos con SharePoinL, habindose especializado en la maqueLa6
cin, diseo y aplicacin de esLilos corporaLivos (V0LM;:MP).
Sigue a CrisLian en 1wiLLer. @cmzaragoza
CapLulo 5. Novedades inuenciadas por las SharePoinL Apps
!
220
Cuillermo 8as
Cuillermo Liene ms de cuaLro aos de experiencia con SharePoinL,
comenz Lrabajando con la versin 2007 en varias empresas y acLual6
menLe Lrabaja con las versiones 200 y 203 en 1"&2#3. Adems
posee los LLulos MC1S en desarrollo para WSS 3.0, AdminisLracin de
SharePoinL 200 y MCPD SharePoinL Developer 200. AcLualmenLe
Lrabaja acLivamenLe con SharePoinL Server 200, 203 y Oce 365
adems de ser colaborador habiLual en los oros de desarrollo de
SharePoinL en MSDN (en ingls) y en el -&"< del SharePoinL 1eam de
SolidQ.
Sigue a Cuillermo en 1wiLLer. @guillebas
RoberLo Ramn
RoberLo Lrabaja en 1"&2#3 como SharePoinL Developer. 1iLulado
en lngeniera 1cnica en lnormLica de SisLemas por la Universidad
de AlicanLe. Al acabar sus esLudios compagin el msLer de
"Desarrollo de Aplicaciones y Servicios Web" con una beca de Lrabajo
en la Universidad de AlicanLe. Miembro del equipo de SharePoinL de
SolidQ, Lrabajando en proyecLos LanLo en la versin online como en
la versin on premise. A su vez, colabora en el -&"< #'& '9:2;" #'
SharePoinL de SolidQ. Fue ponenLe en SolidQ SummiL Madrid 202.
Sigue a RoberLo en 1wiLLer. @Rober_Ramon
J0./ 5,('#'$
lvn cuenLa con un bagaje de 0 aos por varios secLores reali6
zando principalmenLe proyecLos de desarrollo de soLware a medida
sobre Lecnologa MicrosoL. AcLualmenLe Lrabaja como desarrollador
en el deparLamenLo de colaboracin de 1"&2#3. Colabora acLivamenLe
con la comunidad de Oce 365, servicio sobre el que ha desarro6
llado diversos proyecLos de insLalacin y conguracin. 1ambin es
)"&,-"(,#"( *,-2+:,& '/ '& -&"< de SharePoinL de SolidQ.
12<:' , J0./ '/ !A2++'(= @ivanparedes_
SolidQ es el proveedor global conable de servicios de ormacin y soluciones avanzadas
para las aplicaciones de misin crLica, inLeligencia de negocio, alLa disponibilidad, colabora-
cin, bsqueda y soluciones de Lecnologa avanzada para plaLaormas de nube.
SolidQ combina una amplia experiencia Lcnica y de implemenLacin en el mundo real,
con un compromiso rme en la Lranserencia de conocimienLo, dada la combinacin nica
de doLes lecLivas y experiencia proesional que nuesLros menLores orecen. De esLe modo,
no solamenLe ayudamos a nuesLros clienLes a solvenLar sus necesidades Lecnolgicas, sino
que somos capaces de incremenLar la capacidad Lcnica de sus proesionales, dndoles una
venLaja compeLiLiva en el mercado. Por eso llamamos MenLores a nuesLros experLos. por su
compromiso en asegurar el xiLo de su empresa y de sus equipos proesionales a largo pla-zo.
NuesLros experLos son proesionales reconocidos en el mercado, con ms de 00 premios
MvP (MosL valuable Proessional) obLenidos hasLa la echa. Se LraLa de auLores y ponenLes en
las conerencias ms imporLanLes del secLor, con varios cenLenares de ponencias presenLa-das
en conerencias inLernacionales duranLe los lLimos aos. Sirva como ejemplo que nuesLros
experLos han Lenido el honor de imparLir cursos de ormacin a empleados de MicrosoL en
Lodo el mundo. Adems, han parLicipado en ms de 20 libros de MicrosoL Press en Lodas las
reas de las plaLaormas de acceso a daLos de MicrosoL. vase un lisLado compleLo ,9:>
NuesLra misin es la de LransmiLir Lodo el conocimienLo adquirido resolviendo problemas
del mundo real para miles de clienLes, escribiendo arLculos y libros, publicando whiLepapers,
creando conLenidos educaLivos y ormando a decenas de miles de Lrabajadores de 1l en Lodo
el mundo, para que los proyecLos de nuesLros clienLes obLengan los mayores xiLos. FsLa Lrans6
erencia de conocimienLo la realizamos undamenLalmenLe con dos Lipos de servicios.
- @(%-$/)I*8 Oreciendo cursos privados presenciales y online, sesiones Lcnicas, web6
casLs, y los recienLes MasLers en SharePoinL, en lnLeligencia de Negocio y en Relacional.
- :&*+(%)*= F /(*0?1+(%X$08 Servicios de consulLora de alLo valor y corLa duracin.
- 5oIidQ JournaI y BIogs. Oreciendo a Lravs de nuesLra web una revisLa digiLal LoLal6
menLe graLuiLa llamada "!*' 1"&2#3 H":(/,&", as como ms de 000 posL en nuesLros -&"<$.
Fn SolidQ, Lodos los experLos Lienen en menLe esLe lema. "comparte Io que sepas, aprende
Io que no conozcas".
Mster en BI
http://www.soIidq.com/es/MasterBI
Da un giro a tu carrera profesional.
Es tiempo de oportunidades.
Para ms informacin llama al 800.300.800 o +34 91 414 8950 o bien manda un e-mail a: ventasib@solidq.com
Infrmate Ya!
Mster SQL Server DBA
http://www.soIidq.com/es/MasterSQLServerDBA
Mster en SharePoint
http://www.soIidq.com/es/MasterSharePoint
M
A
S
T
E
R
S

C
E
R
T
I
F
I
C
A
D
O
S
P
O
R

S
o
I
i
d
Q
Convirtete en un profesional altamente
especializado
en tecnologas Microsoft.

También podría gustarte