Porting da UNIX a Win32

Per la migrazione di applicazioni da UNIX a Windows sono disponibili numerose opzioni:

  • Utilizzo di librerie UNIX per il porting di applicazioni da UNIX a Win32

  • Porting di applicazioni da UNIX a Win32 in modo nativo.

  • Esecuzione delle applicazioni UNIX su Windows con il sottosistema POSIX

Librerie UNIX

Un'opzione che viene in genere presa in considerazione dai programmatori UNIX è l'utilizzo di librerie simili a UNIX di altri produttori, in modo da consentire la compilazione del codice UNIX come un eseguibile Win32. A tale scopo verranno utilizzate varie librerie disponibili in commercio oltre ad almeno una libreria di dominio pubblico. La soluzione risulta valida per alcune applicazioni. Il vantaggio di queste librerie di porting consiste nel ridurre al minimo il lavoro di porting iniziale. Per un prodotto software competitivo, lo svantaggio principale è rappresentato dal fatto che, in genere, il porting Win32 nativo di un'applicazione sarà più veloce e disporrà inevitabilmente di un maggior numero di funzionalità. Può risultare difficile l'uscita dell'applicazione dalla propria shell UNIX per effettuare chiamate Win32 in modo da ottimizzare l'utilizzo di Windows.

Di seguito sono elencate le risorse Microsoft e di altri produttori per il porting e il supporto della migrazione da UNIX a Visual C++:

Guide alla migrazione UNIX

La guida UNIX Custom Application Migration fornisce supporto tecnico per la migrazione del codice da UNIX all'ambiente Win32.

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

La guida Unix Migration Project integra la UNIX Custom Application Migration Guide con informazioni di livello tecnico superiore sulla migrazione di progetti sostanziali da UNIX a Win32. Fornisce inoltre suggerimenti sui problemi da considerare in ogni fase della migrazione di un progetto. È disponibile per il download al seguente indirizzo:

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

Microsoft Windows Services for UNIX (SFU)

Microsoft Windows Services for UNIX (SFU) versione 3.0 fornisce una gamma completa di servizi multipiattaforma per l'integrazione di Windows in ambienti UNIX esistenti. Prevede funzionalità di condivisione file, accesso e amministrazione remoti, sincronizzazione password, gestione di directory comune, nonché un insieme di utilità e una shell.

Servizi Windows per UNIX

InteropSystems.com

http://www.interopsystems.com/

Sito di un'azienda che fornisce software per il supporto del porting da UNIX a Win32.

Sito Web di C++ Boost

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

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

Porting di applicazioni UNIX direttamente in Win32

Un'altra opzione consiste nell'effettuare il porting di applicazioni UNIX direttamente in Win32. Se si utilizzano le librerie ANSI C/C++ e le librerie di compilazione C in commercio, nelle applicazioni Win32 sarà disponibile gran parte delle chiamate di sistema tradizionali su cui si basavano le applicazioni UNIX.

Il modello di output delle applicazioni basate su stdio non necessita di modifiche, dato che nelle API di console Win32 viene imitato il modello stdio e sono disponibili versioni di curses in cui vengono utilizzate le API di console Win32. Per ulteriori informazioni, vedere SetConsoleCursorPosition.

Le applicazioni basate su socket BerkeleyPer necessitano di pochissime modifiche per essere utilizzare come applicazioni Win32. L'interfaccia Windows Sockets è stata progettata per la portabilità con i socket BSD, con modifiche minime descritte nelle sezioni introduttive della specifica WinSock.

La RPC conforme con DCE è supportata in Windows, pertanto le applicazioni basate su RPC sono facilmente utilizzabili. Vedere funzioni RPC.

Il modo in cui vengono trattati i processi è l'area in cui si rilevano le maggiori differenze. A differenza di Win32, in UNIX è presente fork. A seconda dell'utilizzo di fork e della codebase, Win32 dispone di due API utilizzabili, ovvero CreateProcess e CreateThread. Un'applicazione UNIX che consente la duplicazione di più copie di se stessa può essere rielaborata in Win32 in modo da disporre di più processi o di un singolo processo con più thread. Se si utilizzano più processi, sono disponibili diversi metodi di IPC per comunicare tra i processi ed eventualmente per aggiornare il codice e i dati del nuovo processo in modo che siano uguali all'elemento padre, se è necessaria la funzionalità fornita da fork. Per ulteriori informazioni su IPC, vedere Interprocess Communications.

I modelli grafici Windows e UNIX sono molto diversi. In UNIX viene utilizzato il GUI del sistema X Window, mentre in Windows viene utilizzato GDI. Benché teoricamente simili, non esiste alcun mapping semplice tra l'API X e l'API GDI. Sono tuttavia disponibili il supporto OpenGL per la migrazione di applicazioni UNIX basate su OpenGL nonché client e server X per Windows. Per informazioni su GDI, vedere Device Contexts.

Applicazioni UNIX di base, comprese molte applicazioni CGI devono trasferirsi facilmente a Visual C++ che è in esecuzione su Windows. Funzioni come apri, fopen, leggi, scrivi e altre sono disponibili nella libreria di runtime di Visual C++. È inoltre disponibile un mapping uno-a-uno tra le API UNIX C e le API Win32: open corrisponde a CreateFile, read a ReadFile, write a WriteFile, ioctl a DeviceIOControl, close a CloseFile e così via.

Sottosistema POSIX di Windows

Un'altra opzione che interessa i programmatori UNIX è il sottosistema POSIX di Windows. È, tuttavia, supportato unicamente POSIX 1003.1, la sola versione di POSIX standardizzata con la creazione di Windows NT. Da allora, la richiesta di estensione di questo sottosistema è stata limitata poiché la maggior parte delle applicazioni è stata convertita in Win32. Il sistema 1003.1 riveste un interesse limitato per le applicazioni complete, poiché non include molte funzionalità, come quelle di 1003.2, il supporto di rete e così via. Le applicazioni complete eseguite nel sottosistema POSIX di Windows non consentono l'accesso alle funzionalità di Windows e alle applicazioni Win32, quali i file mappati in memoria, le connessioni di rete e la grafica. Le applicazioni quali VI, LS e GREP sono gli obiettivi principali del sottosistema POSIX di Windows.

Vedere anche

Riferimenti

UNIX

Concetti

Inference Rules

Altre risorse

Porting e aggiornamento di programmi