sì, è il funzionamento di base delle dll, serve per evitare di avere millemila versioni della stessa dll e per far usare ai programmi la versione più aggiornata a meno che questi non specifichino diversamente con un .manifest
cmq sottintendevo che vi era una almeno una versione di ogni singola libreria. i programmi che utilizzano le dll utilizzano il registro di sistema che gli dice quale libreria utilizzare e questo poi si riflette nella winsxs con millemila cartelle e file fake.
l'alternativa dei programmi è usare le librerie statiche, .obj, o di piazzare le dll direttamente nella cartella del programma stesso, ma in questo modo si perdono praticamente tutti i vantaggi delle dll sulle librerie statiche (che per lo più vengono usate solo per lo sviluppo).
Fatemi capire.
Se installo qualcosa su Windows, verranno messe in winsxs i componenti che servono a questo programma.
Cosi facendo, se più programmi hanno un componente in comune verrà condiviso mediante la cartella winsxs!
Ma se un programma installato utilizzasse, lui da solo, un componente messo in winsxs, quando disinstallo il programma, mi rimuove anche il componente o lo lascia li dentro?
conoscenza ha scritto:Fatemi capire.
Se installo qualcosa su Windows, verranno messe in winsxs i componenti che servono a questo programma.
Cosi facendo, se più programmi hanno un componente in comune verrà condiviso mediante la cartella winsxs!
Ma se un programma installato utilizzasse, lui da solo, un componente messo in winsxs, quando disinstallo il programma, mi rimuove anche il componente o lo lascia li dentro?
in winsxs vengono creati le "handle" per "imbrogliare" il file system per linkare al programma la libreria corretta. le dll delle librerie stanno solitamente in %systemroot%
la perdita di performance di una libreria dinamica su windows è praticamente nulla rispetto a quella statica data la diversa gestione della memoria rispetto a linux, e i vantaggi sono superiori, sia in termini di sicurezza che di spazio occupato e manutenzione del programma.
su linux una cosa del genere per non avere cali prestazionali dovrebbe o costringere a cambiar l'implementazione della memoria o trovare un'implementazione diversa (ora non so come funzionano le librerie dinamiche su linux, ma sicuramente l'implementazione sarà diversa visto il diverso modello di memoria)