Porting da UNIX a Win32Porting from UNIX to Win32

Per la migrazione di applicazioni da UNIX a Windows è possibile scegliere tra diverse opzioni:When migrating applications from UNIX to Windows, you have several options:

  • Porting di applicazioni da UNIX a Win32 con le librerie UNIXUsing UNIX libraries to port applications from UNIX to Win32

  • Porting di applicazioni da UNIX a Win32 in modalità nativaPorting applications from UNIX to Win32 natively

  • Esecuzione di applicazioni UNIX in Windows con il sottosistema POSIXRunning UNIX applications on Windows using the POSIX subsystem

Librerie UNIXUNIX libraries

Un'opzione normalmente presa in considerazione dai programmatori UNIX prevede l'uso di librerie di terze parti simili a UNIX per consentire la compilazione del codice UNIX come un eseguibile Win32.One option UNIX programmers normally consider is using third-party UNIX-like libraries to let their UNIX code compile as a Win32 executable. A tale scopo sono disponibili in commercio diverse librerie, di cui almeno una di dominio pubblico.Several commercial (and at least one public domain) libraries do this. Si tratta di un'opzione valida per alcune applicazioni.This is an option for some applications. Il vantaggio di queste librerie di porting è che riducono al minimo le operazioni di porting iniziali.The advantage of these porting libraries is that they minimize the initial porting effort. Lo svantaggio principale, per un prodotto software competitivo è che il porting nativo Win32 di un'applicazione è in genere più rapido e includerà inevitabilmente ulteriori funzionalità.The main disadvantage, for a competitive software product, is that a native Win32 port of an application will generally be faster and will inevitably have more functionality. Può però risultare strano per l'applicazione uscire dalla propria shell UNIX per effettuare chiamate Win32 e ottenere maggiore potenza da Windows.It can be awkward for the application to step outside of its UNIX shell if it needs to make Win32 calls to get more power from Windows.

L'elenco seguente include le risorse Microsoft e di terze parti per il porting e il supporto della migrazione di UNIX a Visual C++:The following list provides Microsoft and third-party resources for porting and supporting UNIX migration to Visual C++:

Guide per la migrazione a UNIXUNIX Migration Guides

La guida per la migrazione di applicazioni personalizzate UNIX include informazioni tecniche sulla migrazione del codice da UNIX all'ambiente Win32.The UNIX Custom Application Migration Guide provides technical help on code migration from UNIX to the Win32 environment.

http://go.microsoft.com/fwlink/?LinkId=95428http://go.microsoft.com/fwlink/?LinkId=95428

La guida per i progetti di migrazione UNIX costituisce un'integrazione della guida per la migrazione di applicazioni personalizzate UNIX e include informazioni di carattere generale sulla migrazione di progetti sostanziali da UNIX a Win32.The Unix Migration Project Guide supplements the UNIX Custom Application Migration Guide by providing high-level help on migrating substantial projects from UNIX to Win32. Fornisce inoltre consigli sugli aspetti da considerare nelle diverse fasi della migrazione dei progetti.The Guide provides advice on issues to consider at each stage of project migration. Questa guida è disponibile per il download all'indirizzo:The Guide may be downloaded from:

http://go.microsoft.com/fwlink/?linkid=20012http://go.microsoft.com/fwlink/?linkid=20012

Microsoft Windows Services for UNIX (SFU)Microsoft Windows Services for UNIX (SFU)

Microsoft Windows Services for UNIX (SFU) offre una gamma completa di servizi multipiattaforma per integrare Windows in ambienti esistenti basati su UNIX.Microsoft Windows Services for UNIX (SFU) provides a full range of cross-platform services for integrating Windows into existing UNIX-based environments. Services for UNIX include condivisione file, amministrazione e accesso remoto, sincronizzazione delle password, gestione delle directory comuni, un set comune di utilità e una shell.Services for UNIX provides file sharing, remote access and administration, password synchronization, common directory management, a common set of utilities, and a shell.

Servizi Windows per UNIXWindows Services for UNIX

InteropSystems.comInteropSystems.com

http://www.interopsystems.com/http://www.interopsystems.com/

Sito di terze parti di una società che offre software che supporta il porting da UNIX a Win32.A third party site for a company providing software supporting porting UNIX to Win32.

Sito Web di C++ BoostC++ Boost Web Site

http://boost.sourceforge.net/regression-logs/http://boost.sourceforge.net/regression-logs/

http://boost.sourceforge.net/boost-build2/http://boost.sourceforge.net/boost-build2/

Porting di applicazioni UNIX direttamente in Win32Porting UNIX applications directly to Win32

Un'altra opzione consiste nel porting di applicazioni UNIX direttamente in Win32.Another option is porting UNIX applications directly to Win32. Se si usano librerie C/C++ ANSI e librerie del compilatore C disponibili in commercio, molte delle tradizionali chiamate di sistema basate su applicazioni UNIX risulteranno disponibili anche in applicazioni Win32.Using ANSI C/C++ libraries, and commercial C compiler libraries, many of the traditional system calls relied on by UNIX applications are available in Win32 applications.

Non è necessario modificare il modello di output delle applicazioni basate su stdio dal momento che le API della console Win32 console simulano il modello stdio e sono presenti versioni di curses che usano le API della console Win32.The output model of stdio-based applications does not need to be changed, since the Win32 console APIs mimic the stdio model, and versions of curses exist that use the Win32 console APIs. Per altre informazioni, vedere SetConsoleCursorPosition.For more information, see SetConsoleCursorPosition.

Le applicazioni basate su socket Berkeley richiedono solo poche modifiche per funzionare come applicazioni Win32.Berkeley socket-based applications need very few changes to work as Win32 applications. L'interfaccia Windows Sockets è stata progettata per garantire la portabilità con i socket BSD apportando modifiche minime illustrate nelle sezioni introduttive della specifica WinSock.The Windows Sockets interface was designed for portability with BSD sockets, with minimal changes that are noted in the introductory sections of the WinSock specification.

Windows supporta RPC compatibile con DCE, di conseguenza si possono facilmente usare le applicazioni basate su RPC.Windows supports DCE-compliant RPC, so RPC-based applications are easily usable. Vedere Funzioni RPC.See RPC Functions.

Una delle principali differenze tra i due sistemi è data dal modello di processo.One of the largest areas of difference is in the process model. In UNIX è presente fork, che invece non è presente in Win32.UNIX has fork; Win32 does not. A seconda del modo in cui vengono usati fork e la base di codice, è possibile usare due API disponibili in Win32: CreateProcess e CreateThread.Depending on the use of fork and the code base, Win32 has two APIs that can be used: CreateProcess and CreateThread. Un'applicazione UNIX che supporta il fork di più copie di se stessa può essere rielaborata in Win32 in modo da includere più processi o un singolo processo a più thread.A UNIX application that forks multiple copies of itself can be reworked in Win32 to have either multiple processes or a single process with multiple threads. Se si usano più processi, esistono più metodi di IPC che consentono di comunicare tra i processi ed eventualmente aggiornare il codice e i dati del nuovo processo in modo che siano simili all'elemento padre, se è necessaria la funzionalità offerta da fork.If multiple processes are used, there are multiple methods of IPC that can be used to communicate between the processes (and perhaps to update the code and data of the new process to be like the parent, if the functionality that fork provides is needed). Per altre informazioni su IPC, vedere Comunicazioni tra processi.For more on IPC, see Interprocess Communications.

I modelli grafici di Windows e UNIX sono molto diversi.Windows and UNIX graphical models are very different. UNIX usa l'interfaccia grafica utente X Window, mentre Windows usa GDI.UNIX uses the X Window System GUI, while Windows uses GDI. Anche se concettualmente simili, non esiste un mapping semplice dell'API X all'API GDI.Though similar in concept, there is no simple mapping of the X API to the GDI API. È però disponibile il supporto OpenGL per la migrazione di applicazioni basate UNIX OpenGL.However, OpenGL support is available for migrating UNIX OpenGL-based applications. Esistono inoltre client e server X per Windows.And there are X clients and X servers for Windows. Per informazioni su GDI, vedere Contesti di dispositivo.See Device Contexts for information on GDI.

Dovrebbe essere semplice eseguire il porting a Visual C++ in esecuzione in Windows di applicazioni UNIX di base, incluse molte applicazioni CGI.Basic UNIX applications, including many CGI applications, should port easily to Visual C++ running on Windows. La libreria di runtime di Visual C++ include diverse funzioni, tra cui open, fopen, read, write.Functions like open, fopen, read, write and others are available in the Visual C++ run-time library. Esiste anche un mapping uno a uno tra le API C UNIX e le API Win32: da open a CreateFile, da read a ReadFile, da write a WriteFile, da ioctl a DeviceIOControl, da close a CloseFile e così via.Also, there is a one-to-one mapping between C UNIX APIs and Win32 APIs: open to CreateFile, read to ReadFile, write to WriteFile, ioctl to DeviceIOControl, close to CloseFile, and so on.

Sottosistema Windows POSIXWindows POSIX subsystem

Un'altra opzione presa in considerazione dai programmatori UNIX è il sottosistema Windows POSIX,Another option UNIX programmers look at is the Windows POSIX subsystem. che però supporta solo POSIX 1003.1, ovvero l'unica versione di POSIX standardizzata quando è stato creato Windows NT.However, it only supports POSIX 1003.1, which was the only POSIX version standardized when Windows NT was created. Da allora non ci sono state molte richieste per estendere questo sottosistema dal momento che la maggior parte delle applicazioni è stata convertita a Win32.Since then, there has been little demand for extending this subsystem, because most applications have been converted to Win32. Il sistema 1003.1 riveste interesse limitato per le applicazioni complete perché non include numerose funzionalità, come quelle presenti in 1003.2, il supporto di rete e così via.The 1003.1 system is of limited interest for fully featured applications, because it does not include many capabilities (such as those in 1003.2, network support, and so on). Le applicazioni complete eseguite nel sottosistema POSIX di Windows non hanno accesso alle funzionalità di Windows disponibili per le applicazioni Win32, ad esempio i file mappati alla memoria, la rete e la grafica.Full featured applications run under the Windows POSIX subsystem do not have access to Windows features available to Win32 applications, such as memory-mapped files, networking, and graphics. Le destinazioni principali del sottosistema Windows POSIX sono le applicazioni quali VI, LS e GREP.Applications such as VI, LS, and GREP are the main targets for the Windows POSIX subsystem.

Vedere ancheSee Also

Guida al porting e aggiornamento in Visual C++ Visual C++ Porting and Upgrading Guide
UNIX UNIX
Regole di inferenzaInference Rules