Assembly vs DLL
کتابخانه مجموعه ای از منابع است که می تواند برای توسعه برنامه های کاربردی استفاده شود. یک کتابخانه معمولاً از زیر روال ها، توابع، کلاس ها، مقادیر و انواع تشکیل شده است. در طول فرآیند پیوند (معمولاً توسط یک پیوند دهنده انجام می شود)، کتابخانه ها و فایل های اجرایی به یکدیگر ارجاع می دهند. فایلهای DLL فایلهای کتابخانهای هستند که به صورت پویا به هم پیوند داده میشوند. DLL توسط مایکروسافت توسعه یافته است. اما به دلیل برخی مشکلات موجود در فایل های DLL، مایکروسافت با فرمت فایل Assembly (با چارچوب دات نت) آمد. فایل های اسمبلی از نظر فیزیکی بسیار شبیه به DLL ها هستند، اما تفاوت های داخلی زیادی دارند.
DLL چیست؟
کتابخانه پیوند پویا (که بیشتر با نام DLL شناخته می شود) یک پیاده سازی کتابخانه مشترک است که توسط مایکروسافت توسعه یافته است. این برنامه از پسوندهای.dll، ocx. یا.drv استفاده می کند و در سیستم عامل های Microsoft Windows و OS/2 استفاده می شود..dll توسط فایل های DLL معمولی استفاده می شود. و پسوند ocx. توسط کتابخانههایی که شامل کنترلهای ActiveX هستند و پسوند.drv توسط فایلهای درایور سیستم قدیمی استفاده میشود. فرمت فایل DLL همانند فایلهای EXE ویندوز است (فایلهای اجرایی قابل حمل در ویندوز 32 بیتی/64 بیتی و فایل اجرایی جدید در ویندوز 16 بیتی). بنابراین، هر ترکیبی از کد، داده و منابع را می توان در فایل های DLL (درست مانند فایل های EXE) قرار داد. در واقع، فایل های داده با فرمت فایل DLL، DLL منبع نامیده می شوند. کتابخانههای نماد (با پسوند.icl) و فایلهای فونت (با پسوندهای.fon و.fot) نمونههایی از DLL منابع هستند.
مؤلفههایی به نام بخشها یک DLL را تشکیل میدهند و هر بخش دارای ویژگیهای خاص خود مانند خواندنی/نوشتنی و اجرایی/غیر اجرایی است.بخش های کد قابل اجرا هستند، در حالی که بخش های داده غیر قابل اجرا هستند. بخش های کد به اشتراک گذاشته شده و بخش های داده خصوصی هستند. این بدان معناست که تمام فرآیندهایی که از DLL استفاده می کنند از همان کپی کد استفاده می کنند، در حالی که هر فرآیند دارای کپی مخصوص به خود از داده ها است. کتابخانه پویا اولیه برای ویندوز kernel32.dll است که شامل توابع پایه (عملکردهای مربوط به فایل و حافظه) در ویندوز است. COM (Component Object Model) پسوند DLL به OOP (برنامه نویسی شی گرا) است. استفاده از DLL های معمولی راحت تر از فایل های COM است.
مجموعه چیست؟
فایل های اسمبلی توسط مایکروسافت به منظور حل چندین مشکل موجود در فایل های DLL معرفی شدند. فایل های اسمبلی با فریم ورک دات نت مایکروسافت معرفی شدند. یک واحد منطقی اجرایی عملکرد اسمبلی نامیده می شود. اسمبلی ها تحت. NET CLR (زمان اجرای زبان مشترک) قابل اجرا هستند. از نظر فیزیکی، اسمبلی ها به صورت فایل های EXE یا DLL وجود دارند. اما در داخل با مایکروسافت Win32 DLL بسیار متفاوت هستند.یک فایل اسمبلی از مانیفست، ابرداده، MISL (کد زبان میانی مایکروسافت) و منابع دیگر تشکیل شده است. یک مجمع خود توصیف کننده است. مانیفست حاوی اطلاعاتی مانند نام، نسخه، فرهنگ، نام قوی، لیست فایل ها، انواع و وابستگی ها است. کد MISL از طریق CLR اجرا می شود (نمی توان آن را مستقیماً اجرا کرد).
تفاوت بین اسمبلی و DLL چیست؟
DLL یک کتابخانه پیوندی پویا است. اگرچه اسمبلی ها از نظر فیزیکی با DLL برابر هستند، اما از نظر داخلی بسیار متفاوت هستند. امکان حفظ سازگاری بین مجموعهای از DLL وجود ندارد، اما CLR میتواند سازگاری بین مجموعهای از اسمبلیها را حفظ کند، زیرا اسمبلیها خود توصیف میشوند (آنها فهرستی از وابستگیها را در داخل دارند). برخلاف DLL ها، اطلاعات نسخه سازی برای اسمبلی ها (توسط CLR) اعمال می شود. استقرار جانبی (برنامه های مختلف با استفاده از نسخه های مختلف) با اسمبلی امکان پذیر است.