{"id":1534,"date":"2015-04-28T10:00:29","date_gmt":"2015-04-28T09:00:29","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1534"},"modified":"2015-04-29T11:48:26","modified_gmt":"2015-04-29T10:48:26","slug":"buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/","title":{"rendered":"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"buenas practicas\" src=\"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg\" alt=\"buenas practicas\" width=\"400\" height=\"265\" \/>Uno de los grandes problemas que tenemos los desarrolladores de SharePoint es el buen\/mal uso que se realiza con diversos objetos como SPSite y SPWeb. La diferencia entre utilizar estos elementos correctamente o de forma err\u00f3nea, hace que tu desarrollo funcione bien o mal. <strong>En este post vamos a analizar estos fallos y como poder solucionarlos<\/strong>.<\/p>\n<p><!--more--><\/p>\n<h1>\u00bfCu\u00e1l es el problema con el uso de SPSite?<\/h1>\n<p>La clase SPSite la podemos definir como el <strong>objeto que tiene toda la informaci\u00f3n relativa a nuestro sitio Web.\u00a0<\/strong>Este objeto tiene multitud de propiedades (Usuarios, Subsitios, Tipos de Contenido, Columnas de Sitio, etc). Cada vez que declaramos una variable de este tipo y la instanciamos a un proceso en el IIS, \u00a0se queda a la escucha de utilizarlo. <strong>El problema radica en que si no eliminamos esta variable de memoria, se queda permanentemente en el IIS<\/strong> (hasta que este se reinicia). El resultado es que la navegaci\u00f3n sobre la p\u00e1gina cada vez va peor hasta que el sitio Web cae.<\/p>\n<p>Miremos un caso gr\u00e1fico a modo de ejemplo: implemento un men\u00fa de SharePoint, en este men\u00fa no he eliminado el SPSite de la consulta sobre el nodo de navegaci\u00f3n. \u00bfSab\u00e9is qu\u00e9 ocurre si tenemos m\u00e1s de 500 visitas concurrente? No hay que ser muy lince para saber que el sistema se caer\u00e1.<\/p>\n<p><strong>Cuando utilizamos el SPSite tenemos principalmente dos problemas<\/strong>:<\/p>\n<ul>\n<li>Cuando utilizamos el elemento del contexto SPContext: motivo hacemos el dispose de forma incorrecta y eliminamos lo que esta viendo el usuario<\/li>\n<li>Cuando definimos la variable: motivo no hacemos el dispose y ocurre el problema mencionado anteriormente<\/li>\n<\/ul>\n<h1>\u00bfC\u00f3mo utilizar el SPContext?<\/h1>\n<p>Cuando utilizamos el SPContext tenemos que ser conscientes de que no lo podemos Disposar y tambi\u00e9n no Disposar una variable a la que hemos asignado el contexto.<\/p>\n<p><strong>Mala pr\u00e1ctica<\/strong><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nSPSite spSite= SPContext.Current.Site;\r\n...\r\n...\r\nspSite.Dispose();\r\n<\/pre>\n<p>Hay <strong>dos motivos<\/strong> por los que est\u00e1 mal:<\/p>\n<ol>\n<li>Hemos asignado una referencia al contexto en una variable, con lo cual al liberar\/disposar la varible eliminamos el contexto y por lo tanto la p\u00e1gina Web.<\/li>\n<li>La opci\u00f3n no es quitar el Dispose porque estamos utilizando el Contexto, motivo de esta forma dejamos una variable SPSite sin liberar y que puede producir el caso mencionando anteriormente.<\/li>\n<\/ol>\n<p><strong>Buena pr\u00e1ctica:<\/strong><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nSPSite spSite= new SPSite(SPContext.Current.Site.ID);\r\n....\r\n....\r\nspSite.Dispose();\r\n<\/pre>\n<p>Mejor a\u00fan es utilizarla haciendo uso del Using:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nusing(SPSite spSite=new SPSite(SPContext.Curre.Site.ID))\r\n{\r\n...\r\n...\r\n}\r\n<\/pre>\n<blockquote><p><strong>\u00bf Cu\u00e1ndo utilizar el SPContext\/cu\u00e1ndo definir una variable nueva?<\/strong><\/p>\n<p>Por regla general siempre que se pueda utilizamos el SPContext, principalmente porque es mucho m\u00e1s r\u00e1pido e impacta menos en el performance del desarrollo.<\/p><\/blockquote>\n<h1>Otros problemas que tenemos al utilizar el SPSite<\/h1>\n<p>Cuando utilizamos el Foreach, por regla general no solemos hacer el dispose de la variable que esta dentro del Foreach. Motivo: si vemos la definici\u00f3n que tiene el lenguaje C# es que todos los elemento que implementen el IEnumerable se ejecuta el m\u00e9todo Dispose antes de pasar al siguiente elemento. \u00bfQu\u00e9 ocurre en SharePoint? Que las colecciones de SPSite no implementan este m\u00e9todo por lo que cuando las recorremos en un foreach no hace el dispose. Con lo cual se puede imaginar el problema que podemos tener.<\/p>\n<p><strong> Mala pr\u00e1ctica:<\/strong><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n using (SPSite siteCollectionOuter = new SPSite(&quot;http:\/\/moss&quot;))\r\n    {\r\n        SPWebApplication webApp = siteCollectionOuter.WebApplication;\r\n        SPSiteCollection siteCollections = webApp.Sites;\r\n\r\n        foreach (SPSite siteCollectionInner in siteCollections)\r\n        {\r\n                  }\r\n    } \/\/\r\n<\/pre>\n<p><strong>Buena pr\u00e1ctica:<\/strong><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n using (SPSite siteCollectionOuter = new SPSite(&quot;http:\/\/moss&quot;))\r\n    {\r\n        SPWebApplication webApp = siteCollectionOuter.WebApplication;\r\n        SPSiteCollection siteCollections = webApp.Sites;\r\n\r\n        foreach (SPSite siteCollectionInner in siteCollections)\r\n        {\r\n            try\r\n            {\r\n                \/\/ ...\r\n            }\r\n            finally\r\n            {\r\n                if(siteCollectionInner != null)\r\n                    siteCollectionInner.Dispose();\r\n            }\r\n        }\r\n    } \/\/ SPSite object siteCollectionOuter.Dispose() automatically called.\r\n\r\n<\/pre>\n<h2>Resumen<\/h2>\n<p>Muchas veces acusamos a un producto de un mal funcionamiento en lugar de comprobar o verificar lo que estamos haciendo. <strong>SharePoint, como todo producto\/lenguaje, tiene sus reglas y debemos cumplirlas si queremos que nuestros desarrollos funcionen a la perfecci\u00f3n<\/strong>. SharePoint en algunos aspectos es un poco diferente a otros lenguajes, esto no lo hace ni mejor ni peor producto, pero debemos conocerlo si queremos hacer desarrollos de calidad.<\/p>\n<p><strong>Referencias<\/strong><\/p>\n<p><a href=\"http:\/\/david-martos.blogspot.com.es\/2011\/01\/spcontext-using-runwithelevatedprivileg.html\" target=\"_blank\">http:\/\/david-martos.blogspot.com.es\/2011\/01\/spcontext-using-runwithelevatedprivileg.html<\/a><\/p>\n<p><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/aa973248.aspx#sharepointobjmodel__spsiteobjects\" target=\"_blank\">https:\/\/msdn.microsoft.com\/en-us\/library\/aa973248.aspx#sharepointobjmodel__spsiteobjects<\/a><\/p>\n<p><a href=\"http:\/\/www.csharphelp.com\/2007\/09\/the-internals-of-c-foreach\/\" target=\"_blank\">http:\/\/www.csharphelp.com\/2007\/09\/the-internals-of-c-foreach\/<\/a><\/p>\n<span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Uno de los grandes problemas que tenemos los desarrolladores de SharePoint es el buen\/mal uso que se realiza con diversos objetos como SPSite y SPWeb. La diferencia entre utilizar estos elementos correctamente o de forma err\u00f3nea, hace que tu desarrollo &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/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":[26,140],"class_list":["post-1534","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas","tag-sharepoint","tag-spsite"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint<\/title>\n<meta name=\"description\" content=\"En este articulo vamos a ver buenas y malas practicas en el desarrollo con SharePoint\" \/>\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\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"En este articulo vamos a ver buenas y malas practicas en el desarrollo con SharePoint\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg\" \/>\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=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint\",\"datePublished\":\"2015-04-28T09:00:29+00:00\",\"dateModified\":\"2015-04-29T10:48:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/\"},\"wordCount\":735,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/-9DPRchjgOWQ\\\/TWlmGijIwYI\\\/AAAAAAAAAP4\\\/VhijVHo_GaI\\\/s1600\\\/Analisis-Dise%25C3%25B1o-software.jpg\",\"keywords\":[\"sharepoint\",\"spsite\"],\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/\",\"name\":\"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/-9DPRchjgOWQ\\\/TWlmGijIwYI\\\/AAAAAAAAAP4\\\/VhijVHo_GaI\\\/s1600\\\/Analisis-Dise%25C3%25B1o-software.jpg\",\"datePublished\":\"2015-04-28T09:00:29+00:00\",\"dateModified\":\"2015-04-29T10:48:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"En este articulo vamos a ver buenas y malas practicas en el desarrollo con SharePoint\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/-9DPRchjgOWQ\\\/TWlmGijIwYI\\\/AAAAAAAAAP4\\\/VhijVHo_GaI\\\/s1600\\\/Analisis-Dise%25C3%25B1o-software.jpg\",\"contentUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/-9DPRchjgOWQ\\\/TWlmGijIwYI\\\/AAAAAAAAAP4\\\/VhijVHo_GaI\\\/s1600\\\/Analisis-Dise%25C3%25B1o-software.jpg\"},{\"@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":"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint","description":"En este articulo vamos a ver buenas y malas practicas en el desarrollo con 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\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/","twitter_card":"summary_large_image","twitter_title":"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint","twitter_description":"En este articulo vamos a ver buenas y malas practicas en el desarrollo con SharePoint","twitter_image":"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint","datePublished":"2015-04-28T09:00:29+00:00","dateModified":"2015-04-29T10:48:26+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/"},"wordCount":735,"commentCount":1,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#primaryimage"},"thumbnailUrl":"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg","keywords":["sharepoint","spsite"],"articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/","name":"Buenas y malas pr\u00e1cticas en el desarrollo con SharePoint - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#primaryimage"},"thumbnailUrl":"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg","datePublished":"2015-04-28T09:00:29+00:00","dateModified":"2015-04-29T10:48:26+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"En este articulo vamos a ver buenas y malas practicas en el desarrollo con SharePoint","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/buenas-y-malas-practicas-en-el-desarrollo-con-sharepoint\/#primaryimage","url":"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg","contentUrl":"https:\/\/lh4.googleusercontent.com\/-9DPRchjgOWQ\/TWlmGijIwYI\/AAAAAAAAAP4\/VhijVHo_GaI\/s1600\/Analisis-Dise%25C3%25B1o-software.jpg"},{"@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\/1534","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=1534"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1534\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}