Assembly vs DLL
Kirjasto on kokoelma resursseja, joita voidaan käyttää sovellusten kehittämiseen. Kirjasto koostuu yleensä alirutiineista, funktioista, luokista, arvoista ja tyypeistä. Linkitysprosessin aikana (joka yleensä tekee linkitys) kirjastot ja suoritettavat tiedostot viittaavat toisiinsa. DLL-tiedostot ovat kirjastotiedostoja, jotka on linkitetty dynaamisesti. DLL:n on kehittänyt Microsoft. Mutta joidenkin DLL-tiedostojen ongelmien vuoksi Microsoft keksi Assembly-tiedostomuodon (. NET-kehyksen kanssa). Kokoonpanotiedostot ovat fyysisesti hyvin samanlaisia kuin DLL-tiedostot, mutta niissä on monia sisäisiä eroja.
Mikä on DLL?
Dynamic Link Library (tunnetaan yleisemmin nimellä DLL) on Microsoftin kehittämä jaettu kirjastototeutus. Se käyttää.dll-,.ocx- tai.drv-laajennuksia, ja niitä käytetään Microsoft Windows- ja OS/2-käyttöjärjestelmissä. Tavalliset DLL-tiedostot käyttävät.dll-tiedostoa. Ja.ocx-laajennusta käyttävät kirjastot, jotka sisältävät ActiveX-komponentteja, ja.drv-laajennusta käyttävät vanhat järjestelmäohjaintiedostot. DLL-tiedostomuoto on sama kuin Windows EXE -tiedostot (Portable Executable -tiedostot 32-bittisessä/64-bittisessä Windowsissa ja New Executable -tiedostot 16-bittisessä Windowsissa). Siksi mikä tahansa koodin, tiedon ja resurssien yhdistelmä voi olla DLL-tiedostoissa (kuten EXE-tiedostoissa). Itse asiassa DLL-muotoisia datatiedostoja kutsutaan resurssi-DLL:iksi. Kuvakekirjastot (.icl-tunniste) ja fonttitiedostot (.fon- ja.fot-päätteillä) ovat esimerkkejä resurssi-DLL-tiedostoista.
Osoiksi kutsutut komponentit muodostavat DLL:n, ja jokaisella osalla on omat attribuuttinsa, kuten vain luku/kirjoitettava ja suoritettava/ei-suoritettava. Koodiosat ovat suoritettavia, kun taas dataosat eivät ole suoritettavia. Koodiosat jaetaan ja dataosat ovat yksityisiä. Tämä tarkoittaa, että kaikki DLL:ää käyttävät prosessit käyttävät samaa koodikopiota, kun taas jokaisella prosessilla on oma kopio tiedoista. Windowsin ensisijainen dynaaminen kirjasto on kernel32.dll, joka sisältää perustoiminnot (tiedostoon ja muistiin liittyvät toiminnot) Windowsissa. COM (Component Object Model) on DLL:n laajennus OOP:ksi (Object Oriented Programming). Perinteisiä DLL-tiedostoja on helpompi käyttää kuin COM-tiedostoja.
Mikä on kokoonpano?
Microsoft otti käyttöön kokoonpanotiedostot ratkaistakseen useita DLL-tiedostoihin liittyviä ongelmia. Kokoonpanotiedostot esiteltiin Microsoft. NET -kehyksen kanssa. Suoritettavaa loogista toiminnallisuusyksikköä kutsutaan kokoonpanoksi. Kokoonpanot ovat suoritettavissa. NET CLR:ssä (Common Language Runtime). Fyysisesti kokoonpanot ovat olemassa EXE- tai DLL-tiedostoina. Mutta ne eroavat sisäisesti hyvin paljon Microsoft Win32 DLL:istä. Kokoonpanotiedosto koostuu luettelosta, metatiedoista, MISL:stä (Microsoft Intermediate Language Code) ja muista resursseista. Kokoonpano on itsekuvaava. Luettelo sisältää tiedot, kuten nimen, version, kulttuurin, vahvan nimen, tiedostoluettelon, tyypit ja riippuvuudet. MISL-koodi suoritetaan CLR:n kautta (se ei voi suorittaa suoraan).
Mitä eroa on Assemblyn ja DLL:n välillä?
DLL on dynaamisesti linkitetty kirjasto. Vaikka kokoonpanot ovat fyysisesti samat kuin DLL:t, ne ovat sisäisesti hyvin erilaisia. Ei ole mahdollista ylläpitää johdonmukaisuutta DLL-joukon välillä, mutta CLR voi ylläpitää johdonmukaisuutta kokoonpanojen välillä, koska kokoonpanot ovat itsekuvaavia (ne sisältävät luettelon riippuvuuksista sisäisesti). Toisin kuin DLL-tiedostoissa, versiotiedot pakotetaan kokoonpanoille (CLR:n toimesta). Rinnakkainen käyttöönotto (eri sovellukset eri versioilla) on mahdollista kokoonpanoilla.