Condividi tramite


Confronto tra la distribuzione privata e la distribuzione centrale (SQL Server Compact)

È possibile distribuire applicazioni gestite compilate con SQL Server Compact 4.0 mediante distribuzione centrale o privata per SQL Server Compact. In caso di distribuzione centrale, SQL Server Compact viene installato in un computer utilizzando il file eseguibile di configurazione. Con la distribuzione privata i file binari di SQL Server Compact vengono posizionati nella cartella dell'applicazione stessa. Questa modalità di distribuzione privata di SQL Server Compact viene anche definita distribuzione tramite XCOPY di SQL Server Compact.

Con la distribuzione centrale, in un'applicazione vengono utilizzati gli assembly gestiti di SQL Server Compact (System.Data.SqlServerCe.dll e System.Data.SqlserverCe.Entity.dll) installati nella Global Assembly Cache (GAC) e i componenti nativi di SQL Server Compact presenti nel percorso centrale, ovvero %Programmi%\Microsoft SQL Server Compact Edition\v4.0. Se viene installata una versione più recente o un aggiornamento di SQL Server Compact 4.0, durante l'esecuzione successiva delle applicazioni con la distribuzione centrale di SQL Server Compact verrà utilizzata la versione aggiornata di SQL Server Compact 4.0. Con la distribuzione centrale, SQL Server Compact 4.0 può essere installato solo da un utente dotato di privilegi di amministratore; tale condizione può rappresentare un potenziale svantaggio. Questi privilegi sono necessari per installare gli assembly nella GAC e per registrare i componenti nativi. Se l'applicazione viene distribuita mediante la tecnologia ClickOnce e SQL Server Compact 4.0 viene distribuito a livello centrale come prerequisito durante l'installazione, quest'ultima potrebbe non riuscire poiché l'utente non dispone dei privilegi necessari per installare SQL Server Compact 4.0.

Con la distribuzione privata, in un'applicazione viene utilizzata la copia locale degli assembly gestiti di SQL Server Compact, nonché le librerie native di SQL Server Compact necessarie. Tali assembly e librerie native vengono inclusi con l'applicazione e installati nel percorso del file dell'applicazione nel sistema di destinazione quando viene distribuito. Per consentire all'applicazione di utilizzare gli assembly distribuiti in modo privato anziché quelli distribuiti centralmente, gli assembly di SQL Server Compact distribuiti in modo privato devono avere un numero di versione superiore rispetto a quelli installati centralmente nella GAC. Se nella GAC non sono presenti assembly di SQL Server Compact (quest'ultimo non è stato distribuito centralmente nel computer di destinazione), nell'applicazione vengono utilizzati gli assembly distribuiti in modo privato. Un vantaggio dell'utilizzo della distribuzione privata consiste nel fatto che, poiché gli assembly di SQL Server Compact non sono installati nella GAC e i componenti nativi non sono registrati con COM, l'utente non deve disporre di privilegi di amministratore sul computer e pertanto è possibile evitare i potenziali problemi che si verificano con la distribuzione centrale nei sistemi bloccati. La distribuzione privata comporta tuttavia una maggiore responsabilità per lo sviluppatore, poiché gli aggiornamenti relativi agli assembly di SQL Server Compact distribuiti in modo privato non possono essere elaborati a livello centrale. Se è necessario aggiornare gli assembly di SQL Server Compact distribuiti con l'applicazione, lo sviluppatore dovrà ricompilare l'applicazione con una versione di SQL Server Compact 4.0 che include gli aggiornamenti necessari, quindi ripubblicarla.

Installazione

Di seguito è riportato il comportamento di installazione di SQL Server Compact 4.0 nei sistemi operativi a 32 e 64 bit.

SQL Server Compact 4.0

Sistema operativo

32 bit

32 bit

Riuscito

64 bit

Errore

Di seguito sono indicati gli assembli gestiti e nativi installati.

Assembly gestiti: sono installati nel percorso %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private:

  • System.Data.SqlServerCe.dll

  • System.Data.SqlServerCe.Entity.dll

Assembly nativi: sono installati in %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 e %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64, ad eccezione di sqlceoledb40.dll, installato in %Programmi&\Microsoft SQL Server Compact Edition\v4.0.

  • sqlceca40.dll

  • sqlcecompact40.dll

  • sqlceer40EN.dll

  • sqlceme40.dll

  • sqlceoledb40.dll

  • sqlceqp40.dll

  • sqlcese40.dll

Oltre a quelli già indicati, sono disponibili un assembly e un manifesto per le librerie di runtime di Microsoft Visual C++ 2008 (CRT):

  • msvcr90.dll

  • Microsoft.VC90.CRT.manifest

Aggiornamenti e distribuzione privata

Uno dei problemi della distribuzione privata consiste nel fatto che, per impostazione predefinita, CLR consente di caricare gli assembly dalla GAC. Per questo motivo è difficile indirizzare gli aggiornamenti negli assembly di SQL Server Compact distribuiti in modo privato quando nella GAC è presente una versione precedente di SQL Server Compact, poiché gli assembly di SQL Server Compact continueranno a essere caricati dalla GAC tramite CLR. L'unico caso in cui un assembly distribuito in modo privato sarà caricato da CLR si verifica quando la versione dell'assembly è diversa da quella nella GAC e l'applicazione è stata compilata con l'assembly distribuito nella GAC.

In SQL Server Compact 4.0 questo problema è stato risolto con le operazioni indicate di seguito:

  • Incremento del numero di versione dell'assembly per tutti gli aggiornamenti software, inclusi aggiornamenti relativi a hotfix, Service Pack, patch critiche e sicurezza. La versione dell'assembly viene incrementata nel modo seguente: 4.0.0.1, 4.0.0.2, 4.0.0.3 e così via.

  • Installazione di copie aggiuntive degli assembly gestiti (System.Data.SqlServerCe.dll e System.Data.SqlServerCe.Entity.dll) nella cartella seguente: %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private.

Gli aggiornamenti vengono applicati nel modo seguente:

  • Per gli hotfix normali, l'aggiornamento viene applicato a tutte le copie di uno o di entrambi gli assembly gestiti; tuttavia, la versione dell'assembly viene aggiornata solo per le copie degli assembly presenti nella cartella Private. In questo modo gli assembly della cartella Private di un computer di sviluppo dispongono di un numero di versione superiore rispetto a quelli installati nella GAC per gli aggiornamenti non critici. In questo modo, viene garantito che nel caso di applicazioni per cui viene utilizzata la distribuzione privata nei computer in cui è applicato l'aggiornamento, il caricamento tramite CLR degli assembly di SQL Server Compact 4.0 continuerà a essere effettuato dal percorso dell'applicazione, poiché il numero di versione degli assembly nella GAC non verrà modificato.

  • Per gli aggiornamenti critici, i Service Pack e gli aggiornamenti della sicurezza, l'aggiornamento viene applicato a tutte le copie dei due assembly gestiti e vengono aggiornate anche le relative versioni. Inoltre, vengono aggiornati i criteri dell'editore per assicurare il reindirizzamento automatico di tutti gli assembly con versione precedente alla nuova versione. In questo modo, nei computer in cui viene applicato l'aggiornamento, CLR consentirà di caricare gli assembly gestiti dalla GAC per tutte le applicazioni SQL Server Compact 4.0, incluse quelle per cui è stata utilizzata la distribuzione privata.

Sviluppo di applicazioni in cui viene utilizzata la distribuzione privata

Per sviluppare un'applicazione desktop in cui viene utilizzata la distribuzione privata di SQL Server Compact 4.0:

  1. Assicurarsi che nel computer di sviluppo siano installati gli aggiornamenti correnti per SQL Server Compact 4.0.

  2. Aggiungere al progetto i riferimenti ai due assembly gestiti di SQL Server Compact selezionando la cartella %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private nella finestra di dialogo Aggiungi riferimento in Visual Studio. Per le applicazioni in cui viene utilizzata la distribuzione centrale, questi riferimenti vengono aggiunti dalla scheda .NET.

  3. Aggiungere tutte le librerie native necessarie al progetto. Devono essere aggiunte selezionando le cartelle %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private\x86, %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 o entrambe. La cartella dalla quale si aggiungono le librerie native dipende dalla piattaforma (x86, x64 o Qualsiasi CPU) per la quale si sta sviluppando l'applicazione.

    È necessario aggiungere almeno gli assembly nativi seguenti:

    • sqlceer40EN.dll

    • sqlceme40.dll

    • sqlceqp40.dll

    • sqlcese40.dll

    Tutti i componenti nativi si trovano nella cartella Private stessa. Per una maggiore gestibilità e un utilizzo ottimale, la struttura di directory dei componenti nativi per la piattaforma x86 coincide con quella per la piattaforma amd64.

    Nota

    Con l'installazione completa di SQL Server Compact 4.0 a 64 bit vengono installati nel computer componenti a 32 bit, a 64 bit e componenti neutrali dell'architettura. Le installazioni a 32 e a 64 bit includono file binari nativi di ogni architettura per la distribuzione privata. Per compilare pertanto le applicazioni SQL Server Compact 4.0 per computer a 64 bit quando si utilizza un ambiente di sviluppo a 32 bit, non è necessario estrarre alcun assembly nativo a 64 bit. È sufficiente estrarre file binari nativi a 64 bit dalla cartella %Programmi%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64.

  4. Assicurarsi che gli assembly gestiti e le librerie native aggiunti in precedenza vengano copiati nell'output di compilazione.

Per informazioni più dettagliate sulla compilazione di applicazioni desktop, vedere Creazione di applicazioni per computer desktop (SQL Server Compact).

Vedere anche

Riferimento

Distribuzione di applicazioni desktop

Concetti

Creazione di applicazioni per computer desktop (SQL Server Compact)