{"id":1174,"date":"2014-01-21T11:00:41","date_gmt":"2014-01-21T10:00:41","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1174"},"modified":"2014-06-30T11:22:16","modified_gmt":"2014-06-30T10:22:16","slug":"sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/","title":{"rendered":"[SharePoint] C\u00f3mo utilizar \u00abcorrectamente\u00bb el modelo de Objetos Servidor I"},"content":{"rendered":"<p>Uno de los grandes males con los que nos enfrentamos a la hora de desarrollar cualquier aplicaci\u00f3n de SharePoint, es la perdida de memoria o la lentitud en nuestros desarrollos. Estos problemas, muchas veces son producidos porque son nuestros primeros pasos en la plataforma o bien, porque tenemos malos h\u00e1bitos en nuestra forma de programar. Doy por supuesto que tenemos las infraestructuras adecuadas \ud83d\ude42<\/p>\n<p>Muchas veces hacemos hincapi\u00e9 en hacer <a href=\"http:\/\/geeks.ms\/blogs\/adiazcervera\/archive\/2014\/01\/13\/sharepoint-utilidades-imprescindible-en-nuestro-desarrollo.aspx\" target=\"_blank\">uso de determinados plugins\/herramientas<\/a> que nos hacen la vida m\u00e1s f\u00e1cil, pero si nosotros no cambiamos nuestra forma de programar o pensar, tendremos trabajo doble. Adem\u00e1s, en alg\u00fan momento en el que esta herramienta proponga algo que no es conveniente nosotros, lo cambiaremos creyendo que es la mejor opci\u00f3n. Estas herramientas est\u00e1n muy bien pero debemos entender el funcionamiento de las mismas para poder decidir si o no a lo que nos proponen, porque si algo falla en el desarrollo no le vamos a echar la culpa al plugin que nos hemos instalado no?<br \/>\n<!--more--><\/p>\n<h2>Aspectos b\u00e1sicos: SPQuery<\/h2>\n<p>Lo primero es que tenemos que saber c\u00f3mo hacer las consultas sobre las listas de SharePoint. Para ello, tenemos que conocer todas las utilidades que tenemos que poner en el <strong>SPQuery<\/strong>: una muy mala practica es crear este componente y solamente indicarle la consulta que queremos realizar. Esto puede funcionar bien siempre que tengamos un avi\u00f3n de servidor o una lista con pocos datos, pero a todos los efectos estamos cargando el servidor con una petici\u00f3n innecesaria.<\/p>\n<p>El modo \u00abcorrecto\u00bb y m\u00e1s eficiente es, por un lado, indicar el n\u00famero de campos que queremos visualizar y, por otra parte, indicar el n\u00famero de elementos que queremos que nos devuelva la consulta. \u00bfPor qu\u00e9 es mejor? Imaginaros que estamos haciendo una consulta sobre una tabla de 1000 campos y 1000000 de registros, queremos traer el primer registro y consultar el campo nombre y el campo apellidos. \u00bfA que la consulta SQL que hac\u00e9is no es \u00abSELECT * FROM Tabla\u00bb?<\/p>\n<p>El c\u00f3digo que deberiamos de poner es el siguiente:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n var query= new SPQuery\r\n            {\r\n                Query   = &quot;&lt;Where&gt;...&lt;\/Where&gt;&quot;,\r\n                RowLimit = 100,\r\n                ViewFields = &quot;&lt;FieldRef Name='Title' \/&gt;&lt;FieldRef Name='Apellidos' \/&gt;&quot;\r\n            };\r\n<\/pre>\n<p>Dentro del objeto SPQuery tambi\u00e9n hay otra propiedad \u00abinteresante\u00bb y que debemos de conocer que es \u00abQueryThrottleMode\u00bb. Esta propiedad la podemos modificar en algunas circunstancias para poder permitir hacer consultas sobre listas que tienen m\u00e1s de 8.000 items (siendo 8.000 el valor que tiene por defecto). Por lo general, una mala pr\u00e1ctica es elevar los permisos sobre la lista, y posteriormente hacer la consulta. A nivel de \u00abeficiencia\u00bb sera lo mismo, pero no a nivel de seguridad. El hacer uso del RunWithElevatePrivilegies debe de ser en circunstancias excepcionales porque si un usuario no es Administrador es por algo, \u00bfno?<\/p>\n<p>Otra forma de acceder a listas con un gran volumen de datos es haciendo uso del <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.office.server.utilities.contentiterator.aspx\" target=\"_blank\">ContentItereator<\/a>, una utilidad que salio en SharePoint 2010, con la finalidad de que se puedan consultar elementos de listas grandes.<\/p>\n<p>Otro aspecto a comentar, es c\u00f3mo podemos acceder a los siguientes 100 elementos. De una forma muy sencilla: cuando lanzamos la consulta, nos devuelve un SPListItemPosition que lo que hace es darnos la posici\u00f3n de los siguientes elementos. Estos valores nos lo debemos guardar y pasarlos en la siguiente consulta. De esta forma, estaremos paginando y consultando eficientemente sobre la lista de SharePoint.<\/p>\n<h2>Entendiendo el acceso\/consulta y dispose\/no dispose de los SPSite,SPWeb y SPContext<\/h2>\n<p>Otro de los t\u00edpicos fallos que cometemos es que, cuando vamos a realizar cualquier consulta a SharePoint, empezamos a utilizar new SPSite(&#8216;&#8230;&#8217;). Esto lo que hace es crearnos una nueva conexi\u00f3n, y si ademas, despu\u00e9s no disposamos la conexi\u00f3n, dejamos una conexi\u00f3n sin cerrar en el servidor. Esto por cada desarrollo va creciendo hasta que decimos SharePoint no vale para nada \u00bfno? Y el problema no es de SharePoint, el problema es que nos estamos equivocando nosotros en la forma de desarrollar. Os pongo un s\u00edmil: \u00bfa que no conducir\u00edais un coche que fuera perdiendo gasolina? Seguro que dir\u00edamos que este coche consume una barbaridad, pues con SharePoint es algo parecido.<br \/>\nTras esta primera reflexi\u00f3n, no es que no tengamos que utilizar un new SPSite (quiz\u00e1s s\u00ed) pero debemos de reflexionar cu\u00e1ndo utilizarlo. Por ejemplo, si yo quiero sacar los usuarios que tiene el Site donde estoy, pues lo mejor de todo es utilizar el SPContext. El SPContext nos muestra informaci\u00f3n que ya tiene del sitio y como ya la ha solicitado a la base de datos pues su acceso es m\u00e1s r\u00e1pido. Pero eso no es todo: cuando accedemos al SPContext no podemos ni debemos disposar este elemento. \u00bfPorqu\u00e9? Porque si eliminamos el contexto sencillamente nos cargamos la Web de ah\u00ed su peligrosidad. Pero es como todo un gran poder, que conlleva una gran responsabilidad.<\/p>\n<p>Otro aspecto que cuando utilizamos los objetos es que debemos de disposarlo, bien explicitamente o bien haciendo uso de los using. Ejemplo:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n using (var spSite = new SPSite(SPContext.Current.Site.ID))\r\n            {\r\n                using (var spWeb = spSite.OpenWeb())\r\n                {\r\n                   ................\r\n                }\r\n            }\r\n<\/pre>\n<p>Un <a href=\"http:\/\/geeks.ms\/blogs\/davidmartos\/archive\/2011\/01\/26\/spcontext-using-runwithelevatedprivileges-y-dem-225-s.aspx\" target=\"_blank\">post de obligada lectura<\/a> es el del Maestro <a href=\"https:\/\/twitter.com\/davidmartos\" target=\"_blank\">David Martos<\/a> en el que todos estos aspectos los deja bastante bien resueltos.<\/p>\n<h2>Cachear la informaci\u00f3n<\/h2>\n<p>Uno de los aspectos que m\u00e1s penaliza el rendimiento es cada vez que SharePoint debe consultar a la Base de Datos. Por este motivo, una de las buenas practicas que indica Microsoft es cachear las consultas realizas. Pod\u00e9is consultar estas buenas practicas en este <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb687949(v=office.12).aspx\" target=\"_blank\">link<\/a><br \/>\nYo considero que es una buena practica cachear la informaci\u00f3n, pero siempre en su justa medida, por ejemplo, si yo tengo una pantalla que muestra informaci\u00f3n dependiendo del usuario, me parece una tonter\u00eda tenerla cacheada ya que con mucha probabilidad la siguiente persona que me solicite esta informaci\u00f3n no sera el usuario, con lo cual tenemos doble perdida (la inserci\u00f3n en la cache + la consulta al SQL). Mi consejo a la hora de cachear la informaci\u00f3n es ver cu\u00e1l es la informaci\u00f3n que menos cambia y m\u00e1s se consulta, o por ejemplo, tengo una lista de Clientes que se usa mucho en muchas partes de mi desarrollo, pues esa tiene todas las papeletas para almacenarla en cache.<\/p>\n<p>Otro aspecto que tenemos que tener en cuenta es la duraci\u00f3n que va a tener esta cache, el intervalo que mostremos va a ser muy importante porque dependiendo de esta informaci\u00f3n es posible que no se est\u00e9 visualizando la informaci\u00f3n correcta.<br \/>\nCachear es muy buena opci\u00f3n, pero un mal uso de la cache quiz\u00e1s sea perjudicial.<\/p>\n<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1317 size-large\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha-1024x204.png\" alt=\"\" width=\"1024\" height=\"204\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha-1024x204.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha-300x60.png 300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Uno de los grandes males con los que nos enfrentamos a la hora de desarrollar cualquier aplicaci\u00f3n de SharePoint, es la perdida de memoria o la lentitud en nuestros desarrollos. Estos problemas, muchas veces son producidos porque son nuestros primeros &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[146,148,26],"class_list":["post-1174","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-buenas-practicas","tag-desarrollo","tag-sharepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>[SharePoint] C\u00f3mo utilizar &quot;correctamente&quot; el modelo de Objetos Servidor I - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"[SharePoint] C\u00f3mo utilizar &quot;correctamente&quot; el modelo de Objetos Servidor I - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Uno de los grandes males con los que nos enfrentamos a la hora de desarrollar cualquier aplicaci\u00f3n de SharePoint, es la perdida de memoria o la lentitud en nuestros desarrollos. Estos problemas, muchas veces son producidos porque son nuestros primeros &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"[SharePoint] C\u00f3mo utilizar \u00abcorrectamente\u00bb el modelo de Objetos Servidor I\",\"datePublished\":\"2014-01-21T10:00:41+00:00\",\"dateModified\":\"2014-06-30T10:22:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/\"},\"wordCount\":1147,\"commentCount\":1,\"keywords\":[\"buenas practicas\",\"desarrollo\",\"sharepoint\"],\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/\",\"name\":\"[SharePoint] C\u00f3mo utilizar \\\"correctamente\\\" el modelo de Objetos Servidor I - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"datePublished\":\"2014-01-21T10:00:41+00:00\",\"dateModified\":\"2014-06-30T10:22:16+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"[SharePoint] C\u00f3mo utilizar \"correctamente\" el modelo de Objetos Servidor I - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/","twitter_card":"summary_large_image","twitter_title":"[SharePoint] C\u00f3mo utilizar \"correctamente\" el modelo de Objetos Servidor I - Desarrollando sobre SharePoint","twitter_description":"Uno de los grandes males con los que nos enfrentamos a la hora de desarrollar cualquier aplicaci\u00f3n de SharePoint, es la perdida de memoria o la lentitud en nuestros desarrollos. Estos problemas, muchas veces son producidos porque son nuestros primeros &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/01\/an\u00e1lisis-de-la-salud-banner-derecha.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"[SharePoint] C\u00f3mo utilizar \u00abcorrectamente\u00bb el modelo de Objetos Servidor I","datePublished":"2014-01-21T10:00:41+00:00","dateModified":"2014-06-30T10:22:16+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/"},"wordCount":1147,"commentCount":1,"keywords":["buenas practicas","desarrollo","sharepoint"],"articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/","name":"[SharePoint] C\u00f3mo utilizar \"correctamente\" el modelo de Objetos Servidor I - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"datePublished":"2014-01-21T10:00:41+00:00","dateModified":"2014-06-30T10:22:16+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/sharepoint-como-utilizar-correctamente-el-modelo-de-objetos-servidor\/"]}]},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1174"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1174\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}