Condividi tramite


Linee guida per la creazione di assemblaggi affiancati

Le linee guida seguenti illustrano come creare assembly COM o Win32 side-by-side personalizzati. Potrebbe non essere necessario creare assembly side-by-side personalizzati se la funzionalità necessaria è fornita da uno dei supportati da assembly Microsoft affiancati. In questo caso, usate gli assembly forniti da Microsoft e seguite le procedure per l'utilizzo degli assembly affiancati nelle applicazioni isolate e negli assembly affiancati indicati in Uso di Applicazioni Isolate e Assembly Affiancati.

Prima di tutto, valutare se il tuo componente è un candidato adatto per un assemblaggio affiancato. Per altre informazioni, vedere È consigliabile fornire un componente condiviso come assembly affiancato?

Per creare un assembly affiancato, seguire queste linee guida:

  • Decidere quali risorse includere nell'assemblaggio. Tieni presente che un assemblaggio è composto da uno o più file che vengono sempre forniti insieme alle applicazioni e ai clienti. L'assembly funge da unità base usata per la denominazione, l'associazione, il controllo delle versioni, la distribuzione e configurazione predefinita. Come regola generale, quando non si è certi che due risorse appartengano allo stesso assembly, è consigliabile inserirli in assembly separati. In genere, un assembly side-by-side è costituito da una singola DLL.
  • Creare un assembly manifesto per l'assembly. Il manifest deve descrivere l'oggetto COM o le librerie di tipi nell'assembly. Per altre informazioni sugli elementi da creare in un manifesto dell'assembly, vedere manifesti dell'assembly.
  • Valutare l'utilizzo degli oggetti quando viene eseguita più di una versione dell'assembly nel sistema. Determinare se versioni diverse dell'assembly richiedono strutture di dati separate, ad esempio file mappati alla memoria, named pipe, messaggi e classi di Windows registrati, memoria condivisa, semafori, mutex e driver hardware. Tutte le strutture di dati usate nelle versioni degli assembly devono essere versioni compatibili con le versioni precedenti. Decidere quali strutture di dati possono essere usate tra le versioni e quali strutture di dati devono essere private per una versione. Determinare se le strutture di dati condivise richiedono oggetti di sincronizzazione separati, ad esempio semafori e mutex.
  • Creare la DLL affinché funzioni correttamente come un assembly affiancato, rispettando le linee guida in Creazione di una DLL per un assembly side-by-side.
  • Creare un set di file di intestazione e funzioni di supporto per fornire un modo semplice per gestire le versioni delle chiavi del Registro di sistema contenenti lo stato dell'assembly. Gli assembly in genere salvano le impostazioni di stato nelle chiavi del Registro di sistema. Le impostazioni del Registro di sistema devono essere scritte in base a una singola versione per isolare più versioni di assembly che possono essere eseguite contemporaneamente. Progettare l'assembly side-by-side e la DLL per archiviare e gestire correttamente lo stato dell'assembly durante scenari di condivisione side-by-side. Seguire le linee guida in l'archiviazione dello stato di creazione per gli assembly side-by-side.
  • Gli sviluppatori di applicazioni che usano assembly privati devono proteggere la directory dell'applicazione. Se l'applicazione viene installata usando Windows Installer, la directory dell'applicazione può essere protetta usando la tabella LockPermissions. In genere, al sistema viene concesso l'accesso in lettura, scrittura ed esecuzione agli assembly privati; tutti gli altri processi ottengono solo l'accesso in esecuzione e lettura.
  • Testare l'assemblaggio usando scenari con condivisione parallela per assicurarsi che sia un assemblaggio parallelo valido. La corretta installazione dell'assembly non è sufficiente per garantire che funzioni come ci si aspetta.
  • Adotta un metodo per numerare gli aggiornamenti per l'assemblaggio. Ogni assembly è associato a un numero di versione in quattro parti. Da sinistra a destra, le parti principali, secondarie, di compilazione e revisione sono separate da punti. Modificare il numero principale o secondario di un assembly per una versione non compatibile con le versioni precedenti. Modificare solo le parti di compilazione e revisione per le modifiche compatibili con le versioni precedenti dell'assembly. Ad esempio, uno sviluppatore potrebbe adottare un metodo di numerazione in cui tutti i numeri di versione 1.0.0.* fanno riferimento alle versioni di aggiornamento alla versione dell'assembly 1.0.0.0.