Desde el pasado mes de abril hasta hoy he realizado varias charlas y he mantenido algunas conversaciones acerca de SQL Server Compact 3.5. De todas ellas, lo que más me ha sorprendido es que aún se relaciona la edición Compact con la antigua SQL Server CE y por consiguiente se da por hecho que el uso de base de datos SQL Server Compact está únicamente restringida a plataformas Windows CE. Lo cierto es que una de las características que, bajo mi punto de vista, va a suponer un antes y un después es precisamente que éstas puedan ser utilizadas tanto en plataformas Windows Desktop y Windows CE desde su aparición "como tal" a partir de la versión 3.1 (codename Everywhere).
SQL Server Compact 3.5 es un gestor de base de datos relacional orientada específicamente para cliente ligeros (SmartClients) en sistemas ocasionalmente conectados. De hecho, los Servicios de Sincronización para ADO.NET (Sync Services for ADO.NET) fue presentado junto a las primeras betas como versión 1.0 (fuera del runtime de MSF). El objetivo era el de presentar una tecnología que, pese a que despunta por su alta -relativa a las tecnologías actuales- flexibilidad, pretende marcar un antes y un después en soluciones de sincronización para cliente ligeros con bases de datos Compact. ClickOnce es otra tecnología de despliegue específica para este tipo de clientes.
En realidad todo esto son piezas tecnológicas cuya sinergia conjunto derivan en un potente conjunto de herramientas de desarrollo que facilitan la creación de soluciones ocasionalmente conectadas junto con todos los aspectos, peculiaridades y características que presentan.
Probablemente la pieza angular esta situada en la propia base de datos, un "simple" archivo sdf del cual recae todo -o una parte muy importante- del peso de la solución. El modelo de desarrollo empleado para este tipo de bases de datos no es muy diferente al que utilizamos habitualmente en aplicaciones escritorio pero sí tiene su peculiaridades, de hecho, es una base de datos que puede ser utilizada en una aplicación para Windows Vista y Windows CE, o lo que es lo mismo .NET Framework y .NET Compact Framework, luego si existen estas peculiaridades y la madurez de la tecnología actual lo permite, ¿porque no crear componentes de acceso a datos multiplataforma genéricos?, esto es, para .NET Framework y .NET Compact Framework.
En realidad esto tiene sus pros y sus contras, evidentemente. .NET Compact Framework es aproximadamente la equivalencia del 30% de .NET Framework y afrontar el desarrollo de componentes multiplataforma es posible, con sus "peros", pero posible. Un ejemplo lo tenemos en el uso de operaciones transaccionales, como novedad desde la versión 3.5 éstas pueden residir bajo ámbitos establecidos por el administrador de transacciones ligeras (Lightweight Transaction Manager) a través de las clases expuestas en System.Transaction, sin embargo, únicamente bajo plataformas Windows Desktop; he aquí un ejemplo de "peculiaridad para el código multiplataforma".
Pese a que SQL Server Compact no ha sido concebida como base de datos de gran capacidad de almacenaje y procesamiento no debemos descuidar la escalabilidad de la aplicación, conocer qué tipo de índices están disponibles y como sacar el máximo partido de ellos de cara a facilitar la tarea al optimizador de consultas, así como conocer, mínimamente, las diferencias de éste respecto su hermano mayor. Una característica que me gustaría destacar es que SQL Server Compact ofrece unas propiedades de gestión de excepciones, a través de las clases específicas distribuidas dentro de System.Data.SqlClientCE, basadas en códigos de errores nativos tipificados y errores HResults, propagados desde las capas más bajas de abstracción del Sistema Operativo, que bajo mi punto de vista son excepcionales si sabes cómo manejarlos.
Durante los más de 14 meses en los que estado inmerso en el estudio y búsqueda de modelos de desarrollo específico para SQL Server Compact, he tratado de sintetizar lo más importante para que el desarrollador iniciado con el este tipo de bases de datos parta con cierta ventaja antes de sus desarrollos, plasmándolo en un libro electrónico de poco más de 110 páginas y cuyo editor, SolidQ@Press, ha editado y ya está disponible.
Desarrollo de aplicaciones con SQL Server Compact Edition: Buenas Prácticas, no pretende ser un guía de referencia, sino un libro vertical, que trata todas y cada una de los aspectos más destacados que hay que tener en cuenta para la creación de aplicaciones consumidoras de la ‘mini' de la familia SQL Server, de forma directa, llana y sin introducciones.