|
Windows System Programming |
|
Che piaccia o meno, è innegabile che la piattaforma Win32 (nelle sue incarnazioni in Windows NT, Windows 2000 e Windows XP) ha ormai da tempo
superato i confini dei desktop, spostandosi in modo rilevante anche sul lato server e sul versante delle applicazioni dove la GUI è
solo uno degli elementi del sistema, e non necessariamente il più importante. Già da alcuni anni le aziende tentano, con diversi gradi di successo, di utilizzare Win32 per realizzare applicazioni soft-real-time, application server scalabili, o altre applicazioni mission-critical, spesso a regime continuo e con pesanti requisiti di scalabilità e performance sotto carico.
D'altra parte, non appena si esce dai settori ben coperti dai numerosi tool esistenti (che tuttavia si preoccupano principalmente del
livello GUI o dell'ormai classico web server) si incontrano numerosi interrogativi. |
Ad esempio, Win32 mette a disposizione un buon supporto per il multiprocessing, coadiuvato peraltro da un hardware con un ottimo rapporto
prezzo/prestazioni. Tuttavia, sfruttare correttamente il multiprocessing non è mai banale. Esistono numerose problematiche da
risolvere, dalle più ovvie di sincronizzazione fra thread e processi, sino alle più estreme dei conflitti sulla cache line, passando per la scelta delle strategie di accesso al disco e per i colli di bottiglia della libreria run-time del compilatore.
Inoltre, Win32 non consente l'accesso diretto all'hardware; un requisito di sicurezza importante, che tuttavia impone spesso di scrivere
un Kernel Driver per poter pilotare periferiche custom, come spesso avviene in ambienti di controllo industriale.
Esistono poi tutta una serie di problematiche che solo l'esperienza insegna a risolvere ed a quantificare correttamente sin dall'inizio del progetto. Quanti interrupt al secondo è in grado di gestire un box Windows? Con quale latenza? Quanti thread ha senso creare su una singola macchina, e quali tecniche di I/O asincrono (APC, Overlapped I/O, Completion Port) portano il maggiore vantaggio in ogni specifica situazione? Quante transazioni al secondo è logico aspettarsi su una data piattaforma? È più produttivo scalare nel numero delle macchine o delle CPU interne per uno specifico compito?
A questo si sommano ulteriori interrogativi, mirati sia a definire il sottoinsieme più stabile di funzionalità del sistema (un passo indispensabile per applicazioni a ciclo continuo), sia a capire le potenzialità ed i limiti delle numerose tecnologie implementate su Win32 (DCOM, MTS, MSMQ per citare qualche esempio) all'interno di applicazioni mission critical.
Eptacom Consulting ha avuto modo di partecipare a tutte le fasi realizzative di svariati progetti critici basati sulla piattaforma Win32. Dalle applicazioni biomediche, con acquisizione e processing real-time di segnali fisiologici, alle applicazioni di controllo industriale, di conversione di protocolli in ambito bancario, ai concentratori di terminali di pagamento, e così via.
Applicazioni dove non è sufficiente conoscere l'utilizzo del lato GUI, ma è necessario poter scendere fino al livello Kernel pur mantenendo la capacità di pensare a livello di sistema.
Se la vostra azienda affronta progetti mission-critical su Win32, parlatene con noi all'indirizzo win32@eptacom.net, o chiamateci allo 019-8160697.