DLL (دی ال ال)، مخفف عبارت Dynamic Link Library و به معنی «کتابخانه پیوند پویا» است (منظور کتابخانه واقعی نیست)؛ ویکی پدیا آن را این چنین تعریف میکند (گرچه خیلی پیچیده تعریف کرده):
یک فرمت استاندارد پیادهسازی شده توسط مایکروسافت، از مفهوم کتابخانههای مشترک در سیستم عاملهای مایکروسافت ویندوز و OS / 2 است. این کتابخانهها معمولاً دارای فایلهای DLL، OCX (برای کتابخانههای حاوی کنترلهای اکتیو ایکس) یا DRV (برای رانندگان سیستم میراث) هستند. فرمتهای فایل DLLها همانند فایلهای ویندوز EXE است – یعنی قابل اجرا و قابل حمل (یا PE) برای ویندوزهای 32 بیتی و 64 بیتی و NE)New Executable) برای ویندوزهای 16 بیتی. همانند EXEها، DLLها میتوانند شامل کد، داده ها و منابع در هر ترکیبی از آنها باشند.
فایلهای داده با فرمت فایل DLL، اما با پسوندهای فایلی مختلف که احتمالاً هم فقط شامل بخش منابع باشند، میتوانند منابع DLL نامیده شوند. نمونههایی از چنین DLL شامل آیکون کتابخانه هاست که گاهی اوقات دارای پسوندICLو فایلهای فونت، که دارای پسوندهای FON و FOT هستند، میشود.
اما طبیعتا اینگونه تعریف، برای یک کاربر عادی که هیچ، حتی برای یک برنامهنویس نیز پیچیده است! پس اجازه دهید آن را بهتر توضیح دهیم.??
تعریف DLL
طبیعتا این فایلهای DLL را در پوشههای مختلف سیستمعامل ویندوز دیدهاید؛ بهخصوص در کنار برنامههایی که نصب میکنید. برای مثال با نصب نرم افزار Notepad++ و سپس رفتن به مسیر نصب آن، فایل NppShell_06.dll و SciLexer.dll را در کنار notepad++.exe که فایل اجرایی برنامه است، مشاهده خواهید کرد. اما این دو فایل چه هستند؟! جالب آنکه اگر وارد پوشهی plugins در مسیر نصب این نرم افزار شوید، داخل پوشههایی که وجود دارند، فایلهای DLL دیگری را نیز مشاهده میکنید!
DLL ها همانند فایلهای EXE هستند! یعنی آنکه این فایلها نیز قابل اجرایی بوده و درون آنها کدی نوشته شده است؛ با این تفاوت که این فایلها، در نقش پیچ و مهره بوده و بایستی توسط برنامهای فراخوانی و اجرا شوند! اما این یعنی چه؟! ?
عملیات راه رفتن را تصور کنید؛ که این عملیات را به یک انسان نسبت میدهیم؛ حال آن انسان میتواند این عملیات را انجام دهد؛ اما عملیات دیگری را مثل چکشکاری تصور کنید؛ که در آن انسان نیاز به چکش دارد؛ این چکش همان DLL است. بنابراین درک پوشهی plugins در نرم افزار Notepad++ راحتتر خواهد شد؛ که در آن، افزونهها را قرار داده و قابلیتهای جدیدی را به برنامه اضافه میکنیم. در واقع، خود Notepad++ گفته است که در اینجا برای من ابزارهای جدیدی را میتوانید قرار دهید؛ و من از آنها استفاده خواهم کرد؛ و البته صددرصد این ابزارها بایستی متناسب با آن نرم افزار و در قالب آن نوشته شده باشند؛ چرا که یک گربه، نمیتواند از چکش استفاده کرده و یا یک کتاب را بخواند.
صد در صد میتوان آن عملیاتی که در یک فایل DLL وجود دارد را درون همان EXE پیاده کرد؛ تا خود EXE که قابل اجرایی مستقیم است، آن عملیات را انجام دهد؛ اما تصور کنید که چکش به دست یک انسان چسبیده است! در این صورت از آن چکش علاوهبر آنکه اشخاص دیگری نمیتوانند استفاده کنند، خود انسان نیز سنگینتر و یا به عبارتی پیچیدهتر خواهد شد. بهعلاوه، اگر ابزارسازی مرسوم نباشد، اشخاص شخص ثالث نخواهند توانست تا مواردی را تولید کرده و در اختیار دیگران قرار دهند؛ که دیگران نیز از آن استفاده کنند. مثلا چکشی وجود نخواهد داشت.
فرض کنید نرم افزاری قصد پخش فایل صوتی دارد؛ طبیعتا پیاده کردن چنین قابلیتی پیچیده است؛ اما اشخاص دیگری قبلا آن را پیاده کرده و به شکل یک DLL در اختیار اشخاصی که میخواهند برنامهنویسی کنند قرار دادهاند. خود ویندوز نیز صدها فایل DLL دارد؛ که از هرکدام نیز میتوان استفاده کرد. و البته توجه داشته باشید که DLL مختص ویندوز بوده و برای سایر سیستمعاملها نیز موارد و مفاهیم مختص خودشان تعریف میشوند.
چرا کتابخانه؟!
سوال این است که چرا در اسم این فرمت، از کتابخانه استفاده شده است؟!
یک کتابخانه از انبوهی کتاب تشکیل شده است؛ که یک شخص میتواند از آنها استفاده کند. فایل DLL نیز بدین صورت است و یک فایل DLL از انبوه چیزهای مختلف میتواند ساخته شده باشد. مثلا علاوهبر چکش، سایر مواردی مثل انبر را هم در خود داشته باشد. بدین منظور در برنامهنویسی، به این موارد کتابخانه گفته میشود؛ و طبیعتا این یک اسم است که از گذشته، بر اینگونه چیزها نهاده شده و میتوانست اسم دیگری نیز باشد. شاید چون این مفهوم نیز همانند یک کتابخانه، از پروندههای مختلفی تشکیل شده است که بصورت متن یا در واقع همان کد میباشند، این نام را به آن اختصاص دادند.
نظرات ثبت شده بدون دیدگاه