Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc

K čemu je prefer 32-bit

Narazil jsem na otázku: Kdy se aplikace .Net přeložená jako AnyCPU s volbou prefer 32-bit spustí jako 64 bitová? Odpověď je překvapivě jednoduchá. V okamžiku kdy si jí do své aplikační domény natáhne aplikace spuštěná jako 64 bitová.

Máme 2 aplikace Guest a Loader. Guest aplikace je přeložena jako AnyCPU (se zaškrtnutým prefer 32-bit), x86 a x64 a obsahuje jednoduchý kód:

static void Main(string[] args)
{
    Console.WriteLine("Guest application is {0}", IntPtr.Size == 8 ? "x64" : IntPtr.Size == 4 ? "x32" : "Unknown");
}

Když spustíme její verzi AnyCPU z příkazové řádky dostaneme na 64 bitovém systému:

image

Aplikace Loader je složitější:

static void Main(string[] args)
{
    Console.WriteLine("\nLoader application is {0}", IntPtr.Size == 8 ? "x64" : IntPtr.Size == 4 ? "x32" : "Unknown");
    Execute(@"..\..\..\Guest\bin\Debug\Guest.exe");
    Execute(@"..\..\..\Guest\bin\x86\Debug\Guest.exe");
    Execute(@"..\..\..\Guest\bin\x64\Debug\Guest.exe");
    Console.ReadKey(false);
}
static void Execute(string path)
{
    try
    {
        Console.WriteLine("\nExecute: {0}", path);
        AppDomain.CurrentDomain.ExecuteAssembly(path);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception: {0}", ex.GetType());
    }
}
Spustíme nejprve Loader ve verzi AnyCPU (bez prefer 32-bit)
image 
Potom spustíme 32 bitovou verzi:
image

Guest přeložený s AnyCPU se přizpůsobuje hostitelské doméně. Pokud si může vybrat spustí se jako 32 bitová aplikace.

A k čemu to je?

Napadá mě scénář, kdy guest aplikace nabízí nějaké funkce a k části z nich potřebuje nějaké nativní knihovny, které existují pouze ve verzi x86 nebo COM. Potom při hostování v 64 bitové aplikaci nabídne místo chyby pouze část svých funkcí, nebo za cenu ztráty výkonu použije nějaký RPC wrapper na 32 bitovou verzi.

Poznámka

Volba prefer 32-bit je dostupná až od verze 4.5 .NET Frameworku

Zveřejněno 4. července 2014 12:33 by arci
Vedeno pod: ,

Komentář

Žádné komentáře
Neregistrovaní uživatele nemužou přidávat komentáře.
 
Vyvojar.cz na prodej!