Thinking in SharePoint

Blog sobre desarrollo en la plataforma .Net, centrado en Silverlight y SharePoint

SharePoint en sus versiones de 2007 crea formularios de entrada de datos basándose en los Tipos de Contenido (Content Types) de las listas. Lo hace de forma dinámica de modo que si por ejemplo añadimos una nueva columna de tipo texto, el formulario presentará una nueva caja de texto para que el usuario rellene ese nuevo metadato.

También se pueden crear formularios personalizados con InfoPath, y los podremos publicar en web en la versión de MOSS 2007, pero en esta ocasión me voy a referir a los formularios que proporciona SharePoint por defecto, siendo válido tanto para WSS 3.0 como para MOSS 2007.

Estos formularios muestran las entradas de datos, es decir las cajas de texto, los desplegables, etc... en el orden definido para las columnas en la lista, y uno detrás de otro, por lo que, en el momento en que tengamos más de diez campos, deberemos usar el scroll para desplazarnos por la página, con consecuencias en la usabilidad del mismo: El usuario se verá agobiado ante la obligación de rellenar tantos campos, y si puede pronto dejará de utilizarlo.

Sin embargo, si customizamos estos formularios con SharePoint Designer, podemos dar otro aspecto a esta entrada de datos de forma muy rápida.

Os pongo un ejemplo real de un formulario realizado para un cliente. Siento las manchas negras pero no me permiten revelar datos importantes :)

Untitled

Si os fijáis hemos metido unos títulos diferenciando las distintas secciones de entrada de datos del formulario, y no sólo eso, en las dos primeras mostramos datos no editables (Nombre y apellidos, NIF del cliente, etc…) provenientes de una búsqueda previa, evitando que los tenga que volver a rellenar y los posibles fallos que se producirían en ese proceso.

Pero las posibilidades de personalización no acaban aquí, fijaos en el siguiente formulario:

Untitled2

Esta vez se trata de otro cliente que solicitaba una gestión de reclamaciones en diferentes fases, esto es, las reclamaciones primero entraban en un área en la que se rellenaban ciertos datos, después pasaba a otro departamento que rellenaba otra parte, etc…

La solución propuesta fue poner una serie de pestañas (con un pequeño javascript), que simbolizaran las distintas situaciones en las que se encontraban las reclamaciones, y cuando abres el formulario, se sitúa en la pestaña que debes rellenar. Siento otra vez las manchas negras, pero es mi obligación.

Por supuesto, la mayor ventaja de todo es que al editar este formulario no perdemos la lógica que se encuentra tras él, es decir, SharePoint seguirá almacenando los valores introducidos en las columnas o metadatos de nuestro ítem (o documento).

En la próxima entrada veremos cómo es posible hacer estas modificaciones a los formularios de forma rápida y sin morir en el intento.

Otro año más se acerca el evento de SharePoint más importante de España, la Conferencia Española de Usuarios de SharePoint, esta vez en su quinta edición, y en la que raona vuelve a participar como patrocinador oro.

El evento se realizará el día 17 de Noviembre, y como en otras ocasiones, en el Hotel Eurobuilding.

También repetimos con la estructura de las charlas, una sesión por la mañana común para todo el mundo con las charlas más importantes, y por la tarde diferentes conferencias sobre varios temas divididas en 8 salas diferentes para optar por las que más nos interese. Como novedad de 17.30 a 18.15 habrá una sesión de cierre en la que se hablará sobre SharePoint 2010.

Esta es la planificación común de la mañana:

10:00 – 10:15

Introducción a CEUS 2009

10:15 – 10:45

Caso de Cliente: Caja Castilla la Mancha

10:45 – 11:15

Caso de Cliente: Diasa Informática

Descanso

11:30 – 12:00

Caso de Cliente: Complejo Hospitalario Universitario de A Coruña

12:00 – 12:30

Caso de Cliente: Ecoembes

12:30 – 13:00

Caso de Cliente: SUGES – Un año después

13:00 – 13:15

Novedades SharePoint

13:15 – 13:30

Servicios On-line Complementarios

13:30 – 13:45

¿Por qué Exchange 2010?

13:45 – 14:00

Anticipo Office 2010

Destaco la charla sobre Ecoembes, uno de los clientes más importantes de raona, en la que hablarán Francisco Ariza (Subdirector de Organización y Sistemas de Ecoembes) y Pablo Peris (director de proyectos en raona).

Para las charlas de la tarde y si aceptáis mi sugerencia, os recomiendo El adiós al BI tradicional con Microsoft en la que hablarán Samuel Casanova y Christian Montenegro, y Gestión de proyectos en un entorno industrial en la que hablará Jorge Ramo.

El programa completo y el registro los podéis ver pulsando en la invitación:

Por último tengo que decir que me será imposible asistir al evento, muy a mi pesar, pero estaré disfrutando del primer curso de desarrollo sobre SharePoint 2010 que se realiza en Europa, por lo que esa semana me encontraré en Berlín. Cuando vuelva me pondré al día con todas las novedades del evento.

Por supuesto os iré contando todo lo que vaya aprendiendo sobre esta nueva versión de SharePoint aquí en el blog, ¡manteneos atentos!

Como sabéis soy usuario de Twitter desde hace mucho tiempo (aquí en el blog tenéis mi perfil en el menú de la derecha), y hace poco que se ha incorporado una nueva funcionalidad, la de creación de listas.

Esta funcionalidad nos permite clasificar a la gente que seguimos (following) para recibir información relacionada directamente con esos temas, pero también incluye una posibilidad a mi juicio muy interesante: hacer públicas estas listas de usuarios.

Ya nadie duda de la capacidad de Twitter para mostrar la información de forma casi instantánea al momento en que sucede, si quieres enterarte de una noticia, seguir un evento, etc… lo mejor es consultar en twitter, y la herramienta cada día cobra más fuerza como nos demuestra la última funcionalidad del buscador Bing, la búsqueda en Twitter, o la próxima actualización de xBox 360, que añade twitter a nuestra consola.

Pues sin más quiero compartir con vosotros mis listas de usuarios de SharePoint y de Silverlight, con gente que creo que merece la pena seguir si se quiere estar al día en estos temas que evolucionan tan rápidamente:

http://twitter.com/ocana/sharepoint

http://twitter.com/ocana/silverlight

¡Espero que os sean de utilidad!

Estas semanas las novedades llevan un ritmo imparable, por un lado aparecen millones de Post sobre la nueva versión de SharePoint, SharePoint 2010, presentada en la SharePoint Conference de Las Vegas. Desde entonces la información no ha parado de fluir: tutoriales, primeros ejemplos con versiones a las que no todo el mundo tiene acceso, etc..

logo_vstudio

Pero por otra parte ha habido otro gran anuncio, la liberación de la Beta 2 de Visual Studio 2010, con un montón de novedades, mucha mejor optimización, y que podéis descargar desde aquí. Me permito aconsejaros que sigáis el tutorial que publica mi amigo Rodrigo Díaz Concha en su blog para que no tengáis sorpresas desagradables sobre todo con Silverlight 3, y es que es lo que tienen las versiones beta, que nos encontramos con problemas inesperados como el que me he encontrado esta tarde al intentar arrancar la aplicación:

The application cannot start

Ni más ni menos…  así que me dispuse a reparar la instalación… Sin éxito. después de dos reinicios incluidos todo seguía igual.

Por suerte no he sido el único que ha tenido este problema y Aquí encontré la solución:

Desde consola ir a la ruta: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

desde ahí ejecutar devenv /resetuserdata

¡Espero haber podido ahorraros algún susto! :)

Dado que en el próximo evento, tal y como comentaba en el post anterior, hablaré sobre Silverlight, Víctor y yo hemos decidido que el movimiento se demuestra andando, así que nuestra presentación la hemos realizado íntegramente en Silverlight.

Por supuesto el valor está en el contenido de nuestra charla, ¡así que no os la perdáis!



Si estáis intersados en cómo se hizo esta presentación, podemos poner el código o hacer algunos tutoriales al respecto, sólo tenéis que pedirlo :)

Actualización: El modo pantalla completa de la presentación no funciona correctamente en la versión puesta en el blog, ya que lo estoy introduciendo como un iframe con un tamaño fijo. He optado por deshabilitar el botón.
Para ver la versión redimensionable, accede directamente a la presentación desde este link.

El próximo 21 de Octubre en Barcelona se celebra un evento sobre Experiencia de Usuario con Silverlight y tecnología Microsoft en el que tengo una ponencia sobre la integración de Silverlight con SharePoint, allí hablaremos no sólo sobre estas tecnologías en concreto, sino sobre cuál es el modelo de trabajo habitual entre el diseñador y el desarrollador.


Si os interesa estáis invitados : )


Registro Gratuito - Plazas Limitadas

10 may 2009

Sharepoint Day

Microsoft y raona organizan otro año más el evento SharePoint Day, esta vez con el subtítulo Sácale partido, invierte en productividad, os dejo con la descripción:

Microsoft Office SharePoint Server 2007 es ya un producto consolidado y extendido en el tejido empresarial. Sin embargo, no siempre es bien conocido, explotado o amortizado. Durante el SharePoint Day de este año, los ingenieros de raona nos invitan a rebajar costes aumentando nuestra productividad. Soluciones empaquetadas, fáciles y baratas de implantar, combinaciones de productos sobre las que la mayoría de las empresas ya tienen derecho de uso, y los servicios “en la nube” son algunas de las aproximaciones para lograr nuestra meta."

Para los asistentes al evento, que se celebrará tanto en Madrid como en Barcelona, en las respectivas sedes de Microsoft, yo seré uno de los ponentes de la charla, donde os presentaremos nuestros casos de éxito en integraciones de SharePoint y Silverlight.

¡No dudéis en asistir! ¡y ya sabéis que responderé cualquier duda del evento tanto en los comentarios como por email!

Tras un parón en el blog sobre todo por motivos de tiempo, vuelvo a la carga con Moonlight otra vez.

En mi entrada anterior hablábamos de esta versión de Silverlight 1.0 para Linux, y ayer, 4 de mayo, apenas dos meses y medio después, se ha presentado la versión 2.0 de Silverlight para sistemas Unix, por ahora en preview, en la que podemos ver los tremendos avances que han hecho los chicos del proyecto Mono.

Lo más destacable de esta versión, es que REALMENTE están lanzando un plugin para el navegador que incorpora una máquina virtual de Mono (Mono VM), a diferencia de la versión 1.0, que estaba basada en Javascript.

Esta Mono VM interpreta el mismo código que el CoreCLR, por lo que se obtendrá el mismo resultado que obtendríamos en una máquina Windows (o al menos así será con el tiempo, ya que esta versión Preview aún no pasa todos los test de Microsoft).

Esto a su vez significa por ejemplo que podemos contar con todos los controles Silverlight incluidos en el sdk, ya que se visualizarán correctamente todos los botones, listbox, etc... sin tener que reimplementarlos :)

Pero ahí no se acaban las novedades, esta versión 2.0 incluye streaming adaptativo (que soporta seeking y elección de la calidad), DeepZoom (del que hablamos en una entrada anterior), e incluso se han adelantado y ya han incluido características de la próxima versión que aún se encuentra en beta para Windows.

Estas características de la versión 3.0 incluyen:

  • Soporte de aplicaciones fuera del navegador.
  • Funciones de easing para animaciones.
  • La clase WriteableBitmap.
  • Un SaveFileDialog.
  • Api extendida del DeepZoom.
Ya sólo queda felicitar a la gente de Mono, que como vemos han hecho unos avances increíbles en apenas dos meses, y animarles para que sigan a ese ritmo.

Para los que quieran probar esta versión éste es el enlace de descarga.
Para los que quieran ir un paso más allá y echarle un ojo al código fuente, el enlace de descarga es éste otro.

Nota: La versión Preview aún ocupa 8.8 megas, y no los 3.9 que debería, esto es debido a que se incluyen puntos de interrupción para facilitar la depuración y el envío de bugs a la gente de Mono, ya que su intención es sacar actualizaciones del plugin cada semana.

Fuentes:
http://tirania.org/blog/archive/2009/May-04.html
http://www.squeedlyspooch.com/blog/

Continuando con la explicación de "¿qué es Silverlight?" que comencé en mi anterior post, hoy vamos a hablar sobre otras de sus características:

Silverlight es un plugin multinavegador y multiplataforma.
¿Cómo se consigue esto? se consigue gracias a que el plugin de Silverlight incluye una versión reducida del CLR (la máquina virtual de .Net), también llamada CoreCLR, así como un subconjunto de clases de la BCL (Base Class Library), todo ello en apenas 4,5MB, un peso realmente pequeño y que sorprende al ver todo lo que incluye.

Bien, ahora ya sabemos que para que funcione en otras plataformas, sólo es necesaria una implementación de la máquina virtual, pero... ¿Ahí termina el soporte de Microsoft?

La respuesta es no, Microsoft está apostando realmente fuerte por esta tecnología, y actualmente Silverlight es soportado en los navegadores IE, Firefox, Chrome, Safari, y Opera, por otra parte, si hablamos de plataformas, Silverlight es soportado también en Linux y Mac OS (tanto en PPC como en Intel).

Microsoft se encuentra actualmente involucrado colaborando en el desarrollo de la implementación de Silverlight para Linux (y para otros sistemas operativos basados en Unix), llamada Moonlight.

Moonlight forma parte del proyecto Mono, una implementación multiplataforma y open source del framework .Net.

Como fruto de este trabajo, desde hace dos semanas se encuentra disponible la versión 1.0 de Moonlight, y ya se encuentran trabajando en la próxima versión.

También se encuentran disponible desde este mismo viernes las Eclipse Tools for Silverlight, un plugin de código abierto para Eclipse, que podemos descargar desde aquí,

Vemos que los avances en esta tecnología se suceden muy rápidamente, así que intentaré traeros desde aquí todas las novedades para que sigamos aprendiendo sobre esta nueva e interesante teconología.

Esta semana entrada rapidita, que aún estoy recuperándome del Silverlight Tour, y del aniversario de la empresa, visita express a Barcelona incluida.

Por eso sólo quiero recordaros que mañana día 3 de Marzo se celebra el evento online Windows Day - Tecnologías para derribar paredes, para América latina y España.

Esta es la descripción que encontramos en Microsoft:

Descubre novedades acerca de las tecnologías de implementación, administración y de desarrollo de aplicaciones en desktops con Windows Vista y con Windows 7: cómo mejorar el rendimiento, cuándo virtualizar, cómo optimizar los escritorios, incrementar la seguridad, resolver el acceso a datos y cómo crear las mejores interfaces de usuario. Demos y expertos en vivo respondiendo tus preguntas.


Sin duda una oportunidad interesante para aprender cosas nuevas, yo me quedaré con toda la parte de wpf y desarrollo de aplicaciones RIA, pero echadle un ojo a la agenda, y no dudéis en apuntaros desde la web oficial.

Aunque muchos de nosotros ya miramos hacia la futura versión de nuestra herramienta de trabajo, Visual Studio 2010, y sus prometidas mejoras que incluirá para el desarrollo en SharePoint, aún se puede mejorar mucho más la versión 2008, como nos demuestra la gente de Microsoft en esta nueva versión CTP (Community Technology Preview) de las Visual Studio 2008 extensions for Windows SharePoint Services 3.0, v1.3 (VSeWSS 1.3 para los amigos).

Veamos qué nos ofrece esta versión:

  • Soporte para desarrollo y despliegue en 64 bit (x64)
  • Nuevos menús para Visual Studio: Package, Retract y Quick Deploy, que nos permitirán empaquetar la solución sin desplegarla, desactivar y eliminar una solución activa en SharePoint, y desplegar rápidamente una solución.
  • Nuevos comandos para realizar lo anterior por consola.
  • Mejoras al crear nuevas características (Features):
    • Permitiendo definir el alcance (Web, Site, Web Application, Farm).
    • Permitiendo crear Feature Receivers (que permiten ejecutar código propio cuando se instala, desinstala, activa o desactiva una característica).
    • Opcionalmente creando elements.xml para nuestras características.
    • Permitiendo hacer "Drag & Drop" de elements entre características.
  • Se permite renombrar WebParts. Desde mi punto de vista algo realmente útil, que había que hacer cambios en bastantes sitios).
  • Soporte para despliegue automático de otros ensamblados (assemblies) de los que dependa nuestra solución.
  • Resolución de conflictos al desplegar soluciones desde Visual Studio, como por ejemplo los típicos errores de WebParts duplicadas.
  • ¡Muchas más!
Sin duda se trata de una gran cantidad de mejoras, ¡sólo nos queda esperar la versión de lanzamiento!

Os dejo con la descarga:

Mucha gente aún se pregunta qué es SilverLight, desde la web de Microsoft obtenemos esta definición:

Microsoft Silverlight es un plug-in multinavegador, multiplataforma y multidispositivo para la distribución de la nueva generación de experiencias multimedia basadas en .NET, y de aplicaciones interactivas "ricas" para la Web.
A través del soporte de .NET, de vídeo en HD, de streaming avanzado y efectivo en coste, y la incomparable interactividad que ofrece la tecnología Deep Zoom, empresas y negocios podrán alcanzar nuevos mercados a través de la Web, escritorio, y dispositivos.
Es una definición con una clara orientación comercial, pero cumple con su función, por lo que en estos momentos todo el mundo habrá hecho la asociación: "Silverlight es como Flash, pero de Microsoft".

Sin duda ese es el gran reto de Microsoft, introducir Silverlight en un mercado donde la competencia es muy fuerte, donde la penetración de Flash llega al 95% de los navegadores, o donde JavaFX ya cuenta con la base de mercado de su máquina virtual.

Por suerte Microsoft está apostando fuerte por esta tecnología, y ya ha llegado a conseguir un 25% de cuota de mercado (50% en algunos países), gracias a iniciativas como la retransmisión de las últimas olimpiadas, o la retransmisión de la toma de posesión de Barack Obama.

Pero bueno, dejándonos de números, podríamos destacar de Silverlight sobre todo la facilidad de programación, el uso de la plataforma .NET implica poder utilizar cualquiera de los lenguajes a los que estemos acostumbrados a programar, como C#, VB.NET, u otros lenguajes como Python o Ruby, así como la ventaja de disponer de herramientas muy buenas, como Visual Studio o Expression Blend 2.

La separación en dos productos también nos permite separar el trabajo gráfico del diseñador, de la lógica de negocio de la aplicación, normalmente trabajo del desarrollador.

Otra de las ventajas que destacan de Silverlight es su rendimiento, debido en gran parte al uso de aceleración por hardware vía DirectX.


Pasemos ahora a la acción, y veamos algunos de los ejemplos de Silverlight, para observar cuál es el verdadero potencial de esta tecnología:
Tras este primer acercamiento (creo que necesario) a Silverlight, en próximos posts me extenderé más en la parte de "multinavegador, multiplataforma y multidispositivo" que encontábamos en la definición.

Actualización:
Edito para añadir el siguiente ejemplo, también muy impresionante:

Silverlight PhotoSynth Viewer

Se trata de un visor Silverlight para PhotoSynth, otra tecnología de Microsoft que permite hacer recreaciones en 3D a partir de fotos, y que se también se usó para inmortalizar en 3D la toma de posesión de Obama.

El visor es sólo una demostración, pero hace un buen uso del DeepZoom.

Hay ocasiones en las que tenemos que leer información que se nos proporciona a través de un XML, los motivos pueden ser muy diversos, pero siempre se nos plantea un problema: ¿Cómo asegurarnos de que el archivo que leemos tiene la estructura deseada?

La respuesta es clara: validando el documento contra una DTD.

La plataforma .Net nos proporciona métodos sencillos para ello, siempre que la DTD se encuentre incluida en el mismo, o que al menos el documento incluya la cabecera

<DOCTYPE NombreDoc SYSTEM "NombreDTD.dtd">

donde se referencia al archivo que contiene la dtd. Por ejemplo, aquí nos dice Microsoft cómo hacerlo.

Pero en ocasiones estos xml deben ser proporcionados o modificados por usuarios o personal técnico no experto.

Máxima de la programación:
No podemos fiarnos de que los datos proporcionados por el usuario sean correctos
Así que vamos a facilitarles la vida, ellos modificarán o escribirán el xml, y nosotros nos encargamos de validarlo contra una dtd propia.

Si nuestra dtd se encontrara en un archivo externo, podríamos optar por la opción de añadir la linea DOCTYPE en la cabecera si no la tiene, y volver a leer el documento.

Yo propongo un método que valida un documento a partir de una dtd dada en un string devolviendo el XmlDocument resultante.

Es un método que uso frecuentemente en el desarrollo web (Ya sabéis que hacemos las mejores intranets con SharePoint), por lo que la ubicación del archivo a validar se introduce como una url relativa al servidor.

El código de la función tendría el siguiente aspecto (lo comento sobre la marcha):

private
XmlDocument LoadAndValidateXML(string dtd, string urlXML)
{
//Devolveremos null si no existe
XmlDocument
xmlDoc
= null;

if (File.Exists(MapPathSecure(urlXML)))
{
//Leemos el archivo como una cadena a la que añadimos nuestra dtd
StreamReader sr = new StreamReader(MapPathSecure(urlXML));
string xmlString = sr.ReadToEnd();
xmlString = dtd + xmlString;

//Preparamos las opciones necesarias para la validación
XmlReaderSettings xmlSettings = new XmlReaderSettings();
xmlSettings.ValidationType = ValidationType.DTD;
xmlSettings.ProhibitDtd = false;
xmlSettings.NameTable = new NameTable();

//Preparamos la lectura del string como xml con las opciones anteriores
StringReader
input = new StringReader(xmlString);
XmlTextReader reader = new XmlTextReader(input);
XmlReader xmlReader = XmlReader.Create(reader, xmlSettings);

//Creamos el XmlDocument que contendrá el resultado en caso positivo
xmlDoc
= new XmlDocument();

try
{
//Intentamos validar
xmlDoc.Load(xmlReader);
}
catch (Exception ex)
{
//Devolveremos null si algo ha ido mal
xmlDoc = null;

//Tratar aquí la excepción
}
finally
{
//Siempre cerramos el stream
xmlReader.Close();
}

}
return xmlDoc;

}


Por último sólo me queda recordaros que este método sólo valida que el documento tenga la estructura que nosotros queremos, pero NO valida los datos incluidos, por lo que siempre deberemos tomar las medidas de seguridad adecuadas para tratar la entrada de datos del usuario.

Bienvenidos a Microsoft Semblio!

Hace apenas unos días Microsoft comunicaba la aparición de una nueva tecnología: Microsoft Semblio, hoy tenemos la oportunidad de probarlo por nosotros mismos

Microsoft Semblio nos proporciona una serie de herramientas especialmente dirigidas a la comunidad educativa para crear material de aprendizaje, fácilmente distribuible, interactivo y visualmente muy atractivo debido a que está basado en WPF.

Estas interfaces ricas nos permiten por ejemplo:

  • Experimentar los conceptos que se van explicando textualmente, consiguiendo así una mayor asimilación.
  • Hacer anotaciones sobre el libro electrónico.
  • Realizar preguntas al lector para asegurarnos de que ha entendido lo explicado anteriormente.
Todo ello intentando hacer la experiencia lo más interesante posible para el estudiante.

Si aún no os hacéis una idea de lo que se puede conseguir con estas herramientas, os remito al vídeo que aparece en la web de Semblio, aunque será mucho mejor que lo experimentemos nosotros mismos en nuestro ordenador:

Prueba la demo de Microsoft Semblio

Esta demo nos permitirá estudiar cómo afecta el calor y la presión a las partículas de un gas, para ello seguiremos estos pasos:
  1. Descarga la demostración desde este link
  2. Descomprímela
  3. Ejecuta la aplicación Player.exe. Ésta nos va a permitir cargar y ejecutar nuestros archivos .semblio
  4. Haz click en Load from File y selecciona el archivo GasLab.semblio (se encuentra en la misma carpeta que el player). Tras esto aparecerá en la lista de archivos Semblio que podemos ejecutar.
  5. Selecciona la demostración GasLab.semblio de la lista y haz click en uno de los 3 botones de abajo (apenas hay diferencias entre los 3 players disponibles)
  6. Disfruta de la demo!


Nota importante: Para el funcionamiento de la demo es necesario disponer de la última versión del .Net framework, que puedes descargar desde aquí: .Net framework 3.5 SP1

Como vemos la aplicación visor carga archivos .semblio, archivos comprimidos en zip (podemos renombrarlo a .zip para abrirlo) que contienen las dlls y los xaml que son utilizados.

Si queremos seguir experimentando el sdk ya está disponible para su descarga, aquí os dejo el enlace: descargar Semblio SDK

Por último quiero decir que una de las cosas que caracteriza a raona es su apuesta por las nuevas tecnologías, como SharePoint o Silverlight, o la mezcla de ambas para conseguir resultados de calidad como en el desarrollo de intranets colaborativas, área en la que trabajo, así que nos encargaremos de profundizar en estas nuevas herramientas que nos proporciona Microsoft para evolucionar y adelantarnos a las necesidades de nuestros clientes.

Así que seguiremos atentos a las noticias referentes a Semblio desde el blog oficial!

Hace un par de semanas me encontré con un problema, esta vez no relacionado con SharePoint, sino directamente con el desarrollo web en ASP.Net.

Uno de esos problemas tontos que pueden retrasar tu trabajo, y cuya solución es una auténtica chorrada, pero que en el momento que sucede puede llegar a desesperarte y volverte loco.

Situación:
Estoy testeando una webpart de reciente creación, y en una de las muchas modificaciones, sucede algo extraño.... tras pulsar un botón, el servidor parece que no detecta dicho postback, y decide mostrar el webpart como si se acabara de iniciar por primera vez. Lo peor de todo, parece que sucede aleatoriamente en alguna pulsación del botón.

Acto seguido, depuración:
Y es aquí cuando encuentras que, aleatoriamente, tras algún postback vuelve a surgir un Refresco Fantasma, haciendo que la página se recargue como si fuera la primera vez que se visualizara.

Siguiente paso, Google MSN Live Search:
Como buen profesional, el siguiente paso a pensar es: "Seguro que a alguien ya le ha pasado, vamos a buscar esto en internet y no perdamos tiempo", pero entonces es cuando te das cuenta de lo difícil que es buscar el problema... Doble postback? Postback fantasma? Difícil, ya que el problema es que la segunda vez no se trata de un postback. Refresco fantasma quizá?

Solución:
Viendo que lo anterior no ha funcionado, hacemos una depuración más exhaustiva, y es entonces cuando nos echamos las manos a la cabeza al descubrir que el único problema es... que no habíamos puesto ninguna ruta a la imagen de un ImageButton.

Increíble pero cierto, ASP.net hace una petición para descargar la imagen correspondiente al botón en la ruta indicada, y al no indicarse ninguna ruta (en este caso porque estaba testeando la aplicación y no lo creí importante), se toma como ruta la página actual, provocando un refresco, que evidentemente, NO es un postback.

Es algo que todos deberíamos haber sabido, pero pasa. Con esta entrada intentaremos recordar qué hacer para no perder tiempo la próxima vez que se produzca esta situación.

Alguien más al que le ha pasado: David Klein's Corner

30 ene 2009

SPDisposeCheck

Desde el blog del CIIN me entero de esta noticia rápida pero importante, sobre todo por su utilidad.

Microsoft acaba de liberar en MSDN Code Gallery la utilidad SPDisposeCheck. Esta utilidad permite revisar las soluciones que hayamos implementado en SharePoint para asegurar que se está haciendo de manera correcta el disposado de objetos y evitar de esta forma que se consuma más memoria de la necesaria. Sin duda, una herramienta imprescindible que evitará más de un quebradero de cabeza
Pues aquí tenéis el enlace directo a la descarga.

Uno de los aspectos más importantes a la hora del desarrollo de WebParts para SharePoint es conocer su ciclo de vida.

Esto nos afecta sobre todo a la hora de saber en qué método o en qué evento debemos añadir nuestro código, como veremos a continuación:

  • Constructor, OnInit, OnLoad: Se suceden en este orden, pueden servir para inicializar variables.
  • CreateChildControls: Lo sobrescribimos para añadir y rellenar los controles ASP.NET que mostremos, también es el momento de conectar dichos controles a los posibles eventos (onClick, etc..).
  • LoadViewState (Sólo si PostBack): Este paso es el más importante, ya que solemos olvidarnos de que hasta este preciso momento, no tenemos a nuestra disposición los valores seleccionados en los controles antes del PostBack.
  • Eventos OnClick: Otro momento importante, ya que solemos pensar que nuestros manejadores de eventos se ejecutarán lo primero, pero en realidad se producen en este momento.
  • ConnectionConsumer: Si nuestra WebPart es conectable a otras (implementando las interfaces adecuadas), la llamada al método se produce en este lugar.
  • OnPreRender: Nuestra última oportunidad para añadir lógica a nuestra webpart antes de que se rendericen los controles. Se usa mucho, ya que en este momento se dispone del ViewState.
  • Render: Lo modificaremos sólo si queremos escribir nosotros mismos el html, o si queremos dibujar nuestros controles en pantalla de forma diferente.
Y esto es todo, la mayoría de las veces haremos uso sólo de CreateChildControls y OnPreRender, pero es necesario saber de qué información podemos disponer en qué momentos.

Próximamente contaré algún error típico en el que podemos caer, y cómo solventar alguno de los problemas que a priori pueden aparecer debido a este ciclo de vida.

Fuentes: sharepointdiary's blog, platinumdogs, Sundar Narasiman's Blog, The site doctor (Tim Gaunt), I Remote

Bienvenidos a Thinking in SharePoint, un nuevo blog en el que intentaré transmitir mis conocimientos sobre la plataforma .Net, centrándome sobre todo en el desarrollo tanto para SharePoint como para Silverlight, áreas en las que trabajo, pero sin descuidar los últimos avances relacionados con las demás tecnologías Microsoft.

Mi propósito no es otro más que ser útil a mis lectores, y devolver aunque sea mínimamente la ayuda que yo he recibido de la comunidad SharePoint, así como aportar mi granito de arena al cada vez más grande grupo de gente que trabaja con Silverlight.

Dicho esto, sólo queda empezar a andar.

ThinkingInSharePointBlog.Start();

14 ene 2009

Nuevo SPBlog

SPBlog ThinkingInSharePointBlog = SPContext.Current.Internet.Blogs.add("Thinking in SharePoint");