MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Domenii de aplicație

La lansarea unei aplicații scrise în C#, sistemul de operare creează un proces, iar mediul CLR (Common Language Runtime) creează în cadrul acestui proces un container logic numit domeniu de aplicație (AppDomain), în care rulează aplicația.

Pentru gestionarea domeniilor de aplicație, platforma .NET oferă clasa AppDomain. Să analizăm câteva dintre metodele și proprietățile principale ale acestei clase:

  • BaseDirectory: returnează directorul de bază, utilizat pentru a obține asamblările (de obicei, directorul aplicației)
  • CurrentDomain: returnează domeniul aplicației curente
  • FriendlyName: returnează numele domeniului aplicației
  • SetupInformation: reprezintă un obiect AppDomainSetup și stochează configurația domeniului aplicației
  • ExecuteAssembly(): lansează o asamblare exe în cadrul domeniului de aplicație curent
  • GetAssemblies(): obține setul de asamblări .NET încărcate în domeniul de aplicație

Exemplu: Să obținem numele și directorul de bază al domeniului curent și să afișăm toate asamblările încărcate în acest domeniu:

using System.Reflection;

AppDomain domain = AppDomain.CurrentDomain;
Console.WriteLine($"Name: {domain.FriendlyName}");
Console.WriteLine($"Base Directory: {domain.BaseDirectory}");
Console.WriteLine();

Assembly[] assemblies = domain.GetAssemblies();
foreach (Assembly asm in assemblies)
   Console.WriteLine(asm.GetName().Name);

Afișarea în consolă:

Name: FDCApp
Base Directory: C:\Users\Petrea\source\repos\FDCApp\FDCApp\bin\Debug\net8.0\

System.Private.CoreLib
FDCApp
System.Runtime
Microsoft.Extensions.DotNetDeltaApplier
System.IO.Pipes
System.Linq
System.Collections
System.Console
System.Threading
System.Runtime.InteropServices
System.Threading.Overlapped
System.Security.AccessControl
System.Security.Principal.Windows
System.Security.Claims
System.Runtime.Loader
System.Collections.Concurrent
System.Text.Encoding.Extensions

Explicații

  • AppDomain este un container logic care izolează aplicația de alte aplicații care rulează în același proces. Acest lucru permite o mai bună gestionare a resurselor și o mai mare securitate
  • BaseDirectory este directorul de bază de unde se încarcă asamblările necesare aplicației
  • FriendlyName este un nume ușor de recunoscut pentru domeniul aplicației, ceea ce facilitează identificarea acestuia
  • GetAssemblies() returnează toate asamblările care au fost încărcate în domeniul curent, permițând astfel inspecția acestora

Această structură de domenii de aplicație permite .NET să ruleze mai multe aplicații sau module în cadrul aceluiași proces, menținând în același timp izolare și securitate între ele.

← Lecția anterioară Lecția următoare →