Sharepoint 2010 (II)

Después de mucho tiempo sin escribir en el blog (principalment por motivos profesionales y falta de tiempo), continuo con la serie de articulos que hacen referencia a las novedades de Sharepoint 2010.

Como bien se comenta en el blog oficial del producto, Sharepoint es la Plataforma de colaboración de negocio en entornos empresariales y web. Vamos a presentar algunas de las novedades:

  • Sitios:
    • La experiencia web se ha mejorado mediante el uso de la tecnología AJAX, y la presencia del Office Ribbon. Así mismo, se ha mejorado la accesibilidad (normas WCAG 2.0) y renderizado de las páginas (cumpliendo con las normas XHTML).
    • Sharepoint Workspace, una aplicación  mediante la cuál se podrá trabajar con sitios y listas de forma centralizada y local, sin que sea necesaria una conexión continuada con el servidor.
    • Office Web Apps, o lo que es lo mismo, usar Office mediante una interfaz web sin necesidad de instalar una aplicación en nuestra máquina local.
    • Acceso mediante dispositivos móviles, mejorando la visualización de los contendios y la velocidad de renderización de las páginas. 
  • Comunidades:
    • Mejoras en la producción de contenido colaborativo, como son los calendarios, discusiones, tareas, fotos, vídeos, etc. Así mismo, se han incorporado mejoras en los sitios de Blog y Wiki.
    • Mejoras en la organización de la información. Ahora es posible añadir favoritos (bookmark), evaluar la calidad de un contenido (rating) o bien etiquetarlo (tagging).
    • Mejoras en los sitios personales, integrandose con Outlook u Office Live Communicator.

  • Contenido:
    • Mayor capacidad de listas y bibliotecas de documentos, de forma que se rompen algunas limitaciones de MOSS 2007 (5 millones de documentos por librería, o de 2.000 elementos por lista).
    • Tratamiento de conjuntos de documentos como un único elemento, de forma que se puedan aplicar flujos a todos ellos o los mismos metadatos.
    • Facilidad para traspasar contenido de un entorno de desarrollo/autoría, a un entorno de producción.
  • Búsqueda:
    • Se han añadido nuevas capacidades que aumentan la flexibilidad y refinamiento del buscador.La incorporación del producto Fast Search ha mejorado de forma notable la experiencia de búsqueda de información.
    • Nuevos orígenes de contenido, como son Lotus Notes, Documentum o FileNet, a parte de los que ya se incluían en MOSS 2007 (Exchange, servidores de ficheros, sitios de Sharepoint, sitios web).

  • Business Intelligence
    • Mejoras en el rendimiento de Excel Services, gracias al uso de REST.
    • Introducción de Performance Point Services, o lo que es lo mismo, posibilidad de visualizar y tratar con cuadros de mando o indicadores clave de rendimiento, e integrarlos en cualquier interfaz web.
    • Mayor facilidad para integrar Sharepoint y Excel con SQL Server Analysis Services y SQL Server Reporting Services.
    • Incorporacion de SQL Server PowerPivot (también llamado Gemini), nombre que se le da a una base de datos en memoria con una capacidad de calculo ciertamente elevada, y que permite acceder a grandes volumenes de información sin necesidad de construir cubos OLAP.
    • Creación y visualización de diagramas mediante Visio Services, dotando de mayor calidad a la información presentada en la web.

Aún me queda presentar algunas novedades (herramientas alrededor de Sharepoint, así como la Administración y el desarrollo de soluciones), que presentaré en el próximo post.

¡Enjoy MOSS!

Tags: , , ,

Sharepoint 2010 (I)

Recientemente se ha celebrado la Microsoft Sharepoint Conference 2009, en la que se han presentado algunas de las novedades que traerá consigo la nueva versión de Sharepoint, que se llamará Microsoft Office Sharepoint Server 2010 (aunque previamente se comentaba que podría haber un cambio de nombre).

La versión Beta del producto estará disponible para el público general a partir del próximo mes de Noviembre, y se espera que la versión final esté disponible a mediados del año 2010, tal y como se anuncia en esta nota de prensa. Para descargarla, sólo hace falta iros a este sitio.

MOSS_2010 

También podéis ver algunas demostraciones en este video (introducción de Steve Ballmer, Microsoft CEO), y este otro de Jeff Teper (vicepresidente del Grupo Microsoft Office Sharepoint). No os perdáis esta última, ¡ya que es muy interesante!.

En próximos posts presentaré las novedades, tanto desde un punto de vista funcional, así como técnico (desarrollo y sistemas).

¡Enjoy MOSS!

Tags: ,

EnableEventValidation en GridView

Escribo rápidamente este post para explicaros un problema que me he encontrado hoy desarrollando una aplicación web ASP.NET 2.0 con AJAX. Resulta que tengo GridView que muestra una lista de ficheros, y donde al lado de cada uno de ellos aparece un icono para eliminarlos. Al hacer click sobre el icono, se debe eliminar el fichero asociado, y se debe volver a cargar el GridView con la lista actualizada.

Ficheros

Pues ejecutando la acción de borrado, me aparece el siguiente mensaje de error:

“Argumento de devolución o de devolución de llamadas no válido. La validación de eventos se habilita usando <pages enableEventValidation="true"/> en la configuración o <%@ Page EnableEventValidation="true" %> en una página. Por motivos de seguridad, esta característica comprueba que los argumentos pasados a eventos de devolución o de devolución de llamadas se origina desde el control del servidor que inicialmente los procesó. Si los datos son válidos y son los que se esperaba, utilice el método ClientScriptManager.RegisterForEventValidation para registrar los datos de devolución o de devolución de llamadas para su validación.”

Buscando en la web encontré múltiples soluciones, sin que ninguna sea suficientemente clara. De hecho, en muchos casos se comenta que la mejor opción es modificar la página o el fichero web.config y asignar el valor true al atributo enableEventValidation. Nada más lejos de la realidad…

El problema se produce porqué el GridView se intenta cargar de nuevo con los datos provenientes de la consulta en el evento Page_Load, sin contemplar la posibilidad de si se proviene o no de un PostBack. En definitiva, la solución consiste en cargar los datos del GridView sólo si es la primera vez que accedemos a la página:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
If Not Page.IsPostBack Then
MostrarResultadoBusquedaFicheros()
End If
End Sub

Así que nos os compliquéis con soluciones difíciles si tenéis este problema con el GridView.
 
¡Espero que os sirva!

Tags: , , , ,

Microsoft DevLabs

Actualmente estoy finalizando un proyecto desarrollado con ASP.NET 2.0 y AJAX, en el que me he encontrado multitud de problemas, pero sobre todo, me ha ayudado a comprender la tecnología AJAX, como aplicarla y qué ventajas e inconvenientes presenta. De hecho, la aplicación empezó cubriendo unas necesidades, que a medida que avanzaba el proyecto, se fueron ampliando. En definitiva, la aplicación se ha convertido en un conjunto de páginas con algunos de los controles presentes en el AJAX Control Toolkit (conjunto de controles con funciones predefinidas y que ayudan a mejorar la usabilidad de las aplicaciones web), pero que se cargan demasiado lentamente.

Investigando un poco descubrí Doloto, o lo que es lo mismo, Download time optimizer for Web 2.0 applications. Doloto es una aplicación desarrollada por Microsoft que permite reducir el código de las aplicaciones que usan AJAX hasta un 40%, permitiendo que la página inicial de la aplicación se cargue entre un 30% y un 40% más rápido de lo que lo hace actualmente, y en definitiva, mejorando el rendimiento de la aplicación.

Doloto 

A partir de la web del producto (totalmente gratuïto), descubrí la página DevLabs de Microsoft, donde se presentan productos para mejorar los procesos de desarrollo de software basados en su tecnología. Además de Doloto presentan otros proyectos interesantes como Small Basic (un versión muy reducida de Visual Basic destinada a aquellos que quieran empezar a programar), o PEX (herramienta de automatización de pruebas).

¡Espero que os sirva!

Tags: , , , , ,

DTS vs Integration Services (no me lo puedo creer…)

Esta es la frase que me pasó por la cabeza despúes de estar trabajando unas cuántas horas en un proyecto de migración de los antiguos DTS (Data Transformation Services) de SQL Server 2000, a los nuevos paquetes de Integration Services de SQL Server 2008. La razón es muy simple… Los procesos de extracción, transformación y carga (también conocidos como procesos ETL) funcionan mucho más rápido en la primera plataforma que en la segunda.

¿Cómo puede ser que un producto realizado hace más de 9 años funcione mejor que un producto nuevo? ¡Pregunten a Microsoft! Ciertamente el diseño y la productividad en la creación de paquetes ha mejorado mucho respecto a la versión del 2000, con nuevas herramientas de desarrollo y depuración, que facilitan enormemente estas tareas. ¿Pero qué pasa con el rendimiento de los paquetes?

En el caso concreto que nos ocupó, los paquetes extraían datos de Oracle y de un DB2 (sobre un AS400), sobre los que se aplican algunas transformaciones y cálculos agregados, y que finalmente se guardan en una base de datos en SQL Server 2008. El proceso de extracción de datos del DB2 (6M de registros) pasó de 3 minutos a 1 hora. No comment…

Investigando un poco, descubrí que este es un problema conocido del producto, y que ya existen productos de terceros que mejoran el rendimiento en cuanto a la conectividad y extracción de datos de otras plataformas. Algunos productos que podemos destacar son:

logo_attunity

  • DataDirect Connect64 for SSIS: Un poco complicado para configurar, pero puede ser muy útil si tenéis plataformas de 64 bits. Desconozco el precio.

progress_dd_logo

  • SSIS Oracle Bulk Load Connectors: Una opción interesante (mirad las comparativas de rendimiento) si trabajáis con Oracle. Tampoco se informa del precio en la web.

Persistent

Para finalizar este post, solo comentaros que mi compañero José Antonio encontró una solución salomónica para mejorar el rendimiento del paquete que se conectaba a DB2. Consistió en crear un fichero Access, vincular las tablas del DB2, y crear las consultas necesarias sobre ellas. Posteriormente, creamos un paquete que se conecta al fichero Access, y usa las consultas creadas para seleccionar los datos que se desean importar. ¿Increíble, verdad? De esta manera el paquete es más rápido que extrayendo los datos directamente del DB2.

Pasan los años, aparecen nuevos productos, y resulta que los antiguos tienen mejor rendimiento que los nuevos. De nuevo, no me lo puedo creer…

¡Alguien tiene experiencias similares? ¡No dudéis en compartirlas!

¡Espero que os sirva!

PD: Me dejé de incluir un vínculo al artículo How to Choose the Best Connectors for SSIS, donde se explica de forma clara y concisa qué criterios debemos seguir para elegir el mejor conector para Integration Services (se encuentra en la web sqlservercentral.com, que requiere registro, pero totalmente gratuito).

Tags: , , , ,