Dela via


Riktlinjer för att skapa komponenter för körning sida vid sida

Kommentar

Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.

Följ dessa allmänna riktlinjer för att skapa hanterade program eller komponenter som är utformade för körning sida vid sida:

  • Binda typidentitet till en viss version av en fil.

    Den vanliga språkkörningen binder typidentiteten till en viss filversion med hjälp av starka namngivna sammansättningar. Om du vill skapa ett program eller en komponent för körning sida vid sida måste du ge alla sammansättningar ett starkt namn. Detta skapar en exakt typidentitet och säkerställer att alla typer av matchning dirigeras till rätt fil. En stark namngiven sammansättning innehåller information om version, kultur och utgivare som körningen använder för att hitta rätt fil för att uppfylla en bindningsbegäran.

  • Använd versionsmedveten lagring.

    Körningen använder den globala sammansättningscacheminnet för att tillhandahålla versionsmedveten lagring. Den globala sammansättningscacheminnet är en versionsmedveten katalogstruktur som är installerad på varje dator som använder .NET Framework. Sammansättningar som är installerade i den globala sammansättningscachen skrivs inte över när en ny version av sammansättningen installeras.

  • Skapa ett program eller en komponent som körs isolerat.

    Ett program eller en komponent som körs isolerat måste hantera resurser för att undvika konflikter när två instanser av programmet eller komponenten körs samtidigt. Programmet eller komponenten måste också använda en versionsspecifik filstruktur.

Program- och komponentisolering

En nyckel för att utforma ett program eller en komponent för körning sida vid sida är isolering. Programmet eller komponenten måste hantera alla resurser, särskilt fil-I/O, på ett isolerat sätt. Följ dessa riktlinjer för att se till att programmet eller komponenten körs isolerat:

  • Skriv till registret på ett versionsspecifikt sätt. Lagra värden i registreringsdatafiler eller nycklar som anger versionen och dela inte information eller tillstånd mellan versioner av en komponent. Detta förhindrar att två program eller komponenter körs samtidigt från att skriva över information.

  • Gör namngivna kernelobjekt versionsspecifika så att ett konkurrenstillstånd inte inträffar. Ett konkurrenstillstånd inträffar till exempel när två semaphores från två versioner av samma program väntar på varandra.

  • Gör fil- och katalognamn versionsmedvetna. Det innebär att filstrukturer bör förlita sig på versionsinformation.

  • Skapa användarkonton och grupper på ett versionsspecifikt sätt. Användarkonton och grupper som skapats av ett program bör identifieras efter version. Dela inte användarkonton och grupper mellan versioner av ett program.

Installera och avinstallera versioner

När du utformar ett program för körning sida vid sida följer du dessa riktlinjer för att installera och avinstallera versioner:

  • Ta inte bort information från registret som kan behövas av andra program som körs under en annan version av .NET Framework.

  • Ersätt inte information i registret som kan behövas av andra program som körs under en annan version av .NET Framework.

  • Avregistrera inte COM-komponenter som kan behövas av andra program som körs under en annan version av .NET Framework.

  • Ändra inte InprocServer32 eller andra registerposter för en COM-server som redan har registrerats.

  • Ta inte bort användarkonton eller grupper som kan behövas av andra program som körs under en annan version av .NET Framework.

  • Lägg inte till något i registret som innehåller en oversionerad sökväg.

Filversionsnummer och sammansättningsversionsnummer

Filversionen är en Win32-versionsresurs som inte används av körningen. I allmänhet uppdaterar du filversionen även för en uppdatering på plats. Två identiska filer kan ha olika filversionsinformation och två olika filer kan ha samma filversionsinformation.

Sammansättningsversionen används av körningen för sammansättningsbindning. Två identiska sammansättningar med olika versionsnummer behandlas som två olika sammansättningar av körningen.

Med verktyget Global Assembly Cache (Gacutil.exe) kan du ersätta en sammansättning när endast filversionsnumret är nyare. Installationsprogrammet installeras vanligtvis inte över en sammansättning om inte sammansättningsversionsnumret är större.

Se även