Portování ze systému UNIX na Win32
Při přenášení aplikací ze systému UNIX na systému Windows máte několik možností:
Použití knihoven systému UNIX pro přenos aplikací ze systému UNIX na systém Win32
Portování aplikací ze systému UNIX do Win32 nativně
Spuštění aplikací systému UNIX v systému Windows pomocí subsystému POSIX
knihovny systému UNIX
Jednou z možností, kterou programátoři obvykle zvažují, je použití knihoven typu systému UNIX třetích stran pro kompilaci jejich kódu UNIX jako spustitelného souboru Win32. Několik komerčních (a alespoň jedna veřejně dostupná) knihovna to dělá. To je možnost pro některé aplikace. Výhodou těchto portovacích knihoven je, že minimalizují počáteční úsilí pro přenos. Hlavní nevýhodou pro konkurenční softwarový produkt je, že nativní port aplikace Win32 bude obecně rychlejší a nevyhnutelně bude mít více funkcí. Může být pro aplikaci nevhodné vykročit mimo její prostředí systému UNIX, pokud potřebuje vykonat volání Win32 pro získání více energie ze systému Windows.
Následující seznam obsahuje prostředky Microsoft a třetích stran pro portování a podporu migrace ze systému UNIX na Visual C++:
Průvodci migrací ze systému UNIX
Průvodce migrací vlastní aplikace ze systému UNIX poskytuje technickou pomoc s přenesením kódu ze systému UNIX do prostředí Win32.
https://go.microsoft.com/fwlink/?LinkId=95428
Průvodce projektem migrace ze systému UNIX doplňuje Průvodce migrací vlastní aplikace ze systému UNIX poskytnutím vysokoúrovňové pomoci s přenesením podstatných projektů ze systému UNIX do Win32. Průvodce poskytuje rady s problémy, které je třeba zvážit v každé fázi migrace projektu. Průvodce může být stažen z:
https://go.microsoft.com/fwlink/?LinkId=20012
Služby systému Microsoft Windows pro UNIX (SFU)
Služby systému Windows pro UNIX (SFU) představují úplnou škálu služeb pro různé platformy, které slouží k integraci systému Windows do existujících prostředí se systémem UNIX. Služby pro UNIX poskytují sdílení souborů, vzdálený přístup a správu, synchronizaci hesel, společnou správu adresářů, společnou sadu nástrojů a prostředí.
InteropSystems.com
http://www.interopsystems.com/
Web třetí osoby pro společnost, poskytující software, který podporuje přenos ze systému UNIX do Win32.
Web C++ Boost
http://Boost.sourceforge.NET/Regression-Logs/
http://Boost.sourceforge.NET/Boost-build2/
Přenos aplikací systému UNIX přímo do Win32
Další možností je portování aplikací systému UNIX přímo do Win32. Pomocí knihoven ANSI C/C++ a komerčních knihoven kompilátoru C je dostupných mnoho tradičních systémových volání, na které je spoléháno aplikacemi pro systém UNIX, v aplikacích Win32.
Výstupní model aplikací, založených na stdio, nemusí být měněn, protože rozhraní API konzoly Win32 napodobuje model stdio a existuje verze curses, kterou používá rozhraní API konzole Win32. Pro další informace si prohlédněte SetConsoleCursorPosition.
Aplikace Berkeley, založené na soketech, potřebují velmi málo změn, aby pracovaly jako aplikace Win32. Rozhraní Windows Sockets bylo navrženo pro přenositelnost na sokety BSD s minimálními změnami, které jsou uvedeny v úvodních částech specifikace rozhraní WinSock.
Systém Windows podporuje protokol RPC, kompatibilní se standardem DCE, takže jsou aplikace založené na protokolu RPC snadno použitelné. Viz Funkce protokolu RPC.
Jedna z oblastí s největším rozdílem je v modelu procesu. Systém UNIX má fork; Win32 ne. V závislosti na použití fork a základu kódu, má Win32 dvě rozhraní API, které lze použít: CreateProcess a CreateThread. Aplikace systému UNIX, která se rozvětvuje do více kopií sebe samé, může být přepracována ve Win32 tak, aby měla více procesů nebo jeden proces s více vlákny. Pokud je používáno více procesů, existuje více metod meziprocesové komunikace, které lze použít ke komunikaci mezi procesy (a případně aktualizaci kódu a dat nového procesu, aby byl jako nadřazený, pokud je vyžadována funkcionalita fork). Pro další informace o meziprocesové komunikaci si prohlédněte Meziprocesová komunikace.
Grafické modely systému Windows a systému UNIX se velmi liší. Systém UNIX používá grafické rozhraní X Window, zatímco systém Windows používá rozhraní GDI. Přestože je koncept podobný, neexistuje jednoduché mapování X API na GDI API. Je však k dispozici podpora OpenGL pro přenesení aplikací, založených na OpenGL systému UNIX. A existují klienti X a servery X pro systém Windows. Viz Kontexty zařízení informace o rozhraní GDI.
Základní aplikace systému UNIX, včetně mnoha aplikací rozhraní CGI, by měly být snadno přenositelné do Visual C++, běžícím na systému Windows. Funkce jako open, fopen, read, write a další jsou k dispozici v knihovně run-time Visual C++. Existuje také mapování 1:1 mezi rozhraními API C systému UNIX a rozhraními Win32 API: open na CreateFile, read na ReadFile, write na WriteFile, ioctl na DeviceIOControl, close na CloseFile atd.
Subsystém POSIX systému Windows
Další možností, na kterou se programátoři systému UNIX dívají, je subsystém POSIX systému Windows. Podporuje však pouze POSIX 1003.1, což byla jediná verze POSIX, standardizovaná při vytvoření systému Windows NT. Od té doby byla po rozšíření tohoto subsystému malá poptávka, protože byla většina aplikací převedena na Win32. Systém 1003.1 není zajímavý pro složité aplikace, protože nezahrnuje mnoho funkcí (například ty ve verzi 1003.2, podporu sítě a tak dále). Složité aplikace, spuštěné pod subsystémem POSIX systému Windows, nemají přístup k funkcím systému Windows, které jsou k dispozici aplikacím Win32, jako jsou například soubory mapované v paměti, sítě a grafika. Aplikace jako je VI, LS a GREP jsou hlavním cílem pro subsystém POSIX systému Windows.