Comparación de la implementación privada y la implementación central (SQL Server Compact)

Puede implementar las aplicaciones administradas integradas con SQL Server Compact 4.0 mediante la implementación central o privada para SQL Server Compact. En la implementación central, SQL Server Compact se instala en un equipo mediante el ejecutable del programa de instalación. En la implementación privada, los archivos binarios de SQL Server Compact se colocan en la propia carpeta de la aplicación. Este tipo de implementación privada de SQL Server Compact se conoce también con el nombre de implementación XCOPY de SQL Server Compact.

Con la implementación central, una aplicación usa los ensamblados administrados de SQL Server Compact (System.Data.SqlServerCe.dll y System.Data.SqlserverCe.Entity.dll) instalados en la memoria caché global de ensamblados (GAC) y los componentes nativos de SQL Server Compact de la ubicación central, es decir %Program Files%\Microsoft SQL Server Compact Edition\v4.0. Si se instala una actualización o una versión más reciente de SQL Server Compact 4.0, las aplicaciones que usen la implementación central de SQL Server Compact usarán la versión actualizada de SQL Server Compact 4.0 la próxima vez que se ejecuten. Un posible inconveniente de la implementación central es que SQL Server Compact 4.0 solo lo puede instalar un usuario con privilegios de administrador en el equipo. (Esto se debe a que se requieren estos privilegios para instalar ensamblados en la GAC y para registrar los componentes nativos). Si la aplicación se implementa con la tecnología ClickOnce y SQL Server Compact 4.0 se implementa de modo centralizado como requisito previo durante la instalación, esta puede dar error porque el usuario carezca de los permisos necesarios para instalar SQL Server Compact 4.0.

Con la implementación privada, una aplicación utiliza su propia copia local de los ensamblados administrados de SQL Server Compact y las bibliotecas nativas de SQL Server Compact necesarias. Estos ensamblados y bibliotecas nativas se empaquetan con la aplicación y se instalan en la ruta de acceso del archivo de la aplicación en el sistema de destino cuando se realiza la implementación. Los ensamblados de SQL Server Compact implementados de forma privada necesitan tener un número de versión mayor que los instalados centralmente en la GAC para que la aplicación use los ensamblados implementados de forma privada en lugar de los implementados centralmente. Si no hay ningún ensamblado de SQL Server Compact en la GAC (SQL Server Compact no se ha implementado centralmente en el equipo de destino), la aplicación utiliza sus ensamblados implementados de forma privada. Una ventaja de utilizar la implementación privada es que, como los ensamblados de SQL Server Compact no se instalan en la GAC y los componentes nativos no se registran con COM y por tanto el usuario no necesita los permisos administrativos en la máquina, se pueden evitar los posibles problemas relacionados con la implementación central en sistemas bloqueados. Sin embargo, la implementación privada supone mayor responsabilidad para el desarrollador, ya que las actualizaciones de los ensamblados de SQL Server Compact implementados no se pueden realizar de forma centralizada. Si se requiere una actualización de los ensamblados de SQL Server Compact implementados con la aplicación, el desarrollador debe volver a compilar la aplicación con una versión de SQL Server Compact 4.0 que incluya las actualizaciones necesarias y, a continuación, volver a publicarla.

Instalación

El comportamiento de instalación de SQL Server Compact 4.0 en sistemas operativos de 32 y 64 bits es como se explica a continuación:

SQL Server Compact 4.0

Sistema operativo

32 bits

32 bits

Correcto

64 bits

Error

A continuación se indican los ensamblados nativos y los administrados instalados:

Ensamblados administrados: se instalan en la ubicación %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private:

  • System.Data.SqlServerCe.dll

  • System.Data.SqlServerCe.Entity.dll

Ensamblados nativos: se instalan en %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 and %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64,except sqlceoledb40.dll, cuya ubicación es %Program Files&\Microsoft SQL Server Compact Edition\v4.0.

  • sqlceca40.dll

  • sqlcecompact40.dll

  • sqlceer40EN.dll

  • sqlceme40.dll

  • sqlceoledb40.dll

  • sqlceqp40.dll

  • sqlcese40.dll

Además de lo anterior, hay un ensamblado y un manifiesto para las bibliotecas en tiempo de ejecución de Microsoft Visual C++ 2008 (CRT):

  • msvcr90.dll

  • Microsoft.VC90.CRT.manifest

Actualizaciones e implementación privada

Uno de los problemas de la implementación privada es que CLR, de forma predeterminada, carga los ensamblados de la GAC. Por este motivo, es difícil aplicar actualizaciones a los ensamblados de SQL Server Compact implementados de forma privada cuando existe una versión anterior de SQL Server Compact en la GAC, ya que CLR continuará cargando los ensamblados de SQL Server Compact desde ella. El único caso donde CLR carga un ensamblado implementado de forma privada es cuando hay una versión del ensamblado diferente de la que hay en la GAC y la aplicación se ha compilado con el ensamblado que se implementa en la GAC.

En SQL Server Compact 4.0, este problema se ha resuelto del modo siguiente:

  • Incrementando el número de versión de ensamblado para todas las actualizaciones de software, incluidas las revisiones, Service Pack, revisiones críticas y actualizaciones de seguridad. La versión de ensamblado se incrementa del modo siguiente: 4.0.0.1, 4.0.0.2, 4.0.0.3, etc.

  • Instalando copias adicionales de los ensamblados administrados (System.Data.SqlServerCe.dll y System.Data.SqlServerCe.Entity.dll) en la siguiente carpeta: %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private.

Las actualizaciones se aplican de la siguiente manera:

  • En el caso de las revisiones normales, la actualización se aplica a todas las copias de uno de los ensamblados o de ambos; sin embargo, la versión del ensamblado solo se actualiza para las copias de los ensamblados en la carpeta Privada. Esto garantiza que los ensamblados de la carpeta Privada de un equipo de desarrollo tengan un número de versión mayor que los instalados en la GAC para actualizaciones no críticas. Esto garantiza también que, para las aplicaciones que utilizan la implementación privada en equipos donde se aplica la actualización, CLR siga cargando los ensamblados de SQL Server Compact 4.0 desde la ruta de acceso de la aplicación (dado que el número de versión de los ensamblados de la GAC no cambia).

  • En el caso de las actualizaciones de seguridad, Service Pack y actualizaciones críticas, la actualización se aplica a todas las copias de los dos ensamblados administrados y además se actualiza la versión del ensamblado de todas ellas. Asimismo, se actualiza la directiva del publicador para garantizar la redirección automática de todos los ensamblados de versiones anteriores a la nueva versión. Esto garantiza que para los equipos a los que se aplica la actualización, CLR cargue los ensamblados administrados de la GAC para todas las aplicaciones de SQL Server Compact 4.0, incluidas las que utilizan la implementación privada.

Desarrollar aplicaciones que utilizan la implementación privada

Para desarrollar una aplicación de escritorio que utilice la implementación privada de SQL Server Compact 4.0:

  1. Asegúrese de que las actualizaciones son recientes para SQL Server Compact 4.0 en el equipo de desarrollo.

  2. Agregue a su proyecto todas las referencias a los dos ensamblados administrados de SQL Server Compact desplazándose hasta la carpeta %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private en el cuadro de diálogo Agregar referencia de Visual Studio. (Para las aplicaciones que utilizan la implementación central, estas referencias se agregan desde la pestaña de .NET).

  3. Agregue todas las bibliotecas nativas necesarias al proyecto. Estas se deben agregar desplazándose hasta la carpeta %Program Files%\Microsoft SQL Server Compact Edition\v 4.0\Private\x86, la carpeta %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 o ambas. La carpeta desde la que se agregan las bibliotecas nativas depende de la plataforma (x86, x64 o Any CPU) para la que vaya a desarrollar la aplicación.

    Como mínimo, deben agregarse los siguientes ensamblados nativos:

    • sqlceer40EN.dll

    • sqlceme40.dll

    • sqlceqp40.dll

    • sqlcese40.dll

    Todos los componentes nativos encuentran un lugar en la propia carpeta privada. Para facilitar la administración y el uso, la estructura de carpetas de los componentes nativos para las plataformas x86 y amd64, la estructura de directorios es idéntica en el programa de instalación.

    Nota

    El programa de instalación de SQL Server Compact 4.0 de 64 bits incluye todo. Instala en el equipo los componentes de 32 bits, los de 64 bits y los componentes de arquitecturas neutras. Los programas de instalación de 32 bits y los de 64 bits incluyen archivos binarios nativos de cada arquitectura para la implementación privada. Por lo tanto, para crear aplicaciones de SQL Server Compact 4.0 para equipos de 64 bits cuando se utiliza un entorno de desarrollo de 32 bits, no necesita extraer ningún ensamblado nativo de 64 bits. Solo necesita elegir archivos binarios nativos de 64 bits en la carpeta %Program files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64.

  4. Asegúrese de que los ensamblados administrados y las bibliotecas nativas agregados anteriormente se copian en los resultados de la compilación.

Para obtener más información detallada sobre cómo crear aplicaciones de escritorio, vea Compilar aplicaciones para equipos de escritorio (SQL Server Compact).

Vea también

Referencia

Implementar aplicaciones de escritorio

Conceptos

Compilar aplicaciones para equipos de escritorio (SQL Server Compact)