سوال در مورد dll ها
#1
Note 
سلام میخواستم بدونم که dll ها به درد چه کارهایی میخورن
و در واقع چی هستند
و چه طوری میشه ساختشون
و اینکه آیا میشه به تمامی کد هایی که درون یک dll هست ، دسترسی پیدا کرد؟
ممنون

پاسخ
#2
Note 
DLL ها حاوی کدها و داده هایی هستند که میتونن همزمان توسط چند برنامه مورد استفاده قرار بگیرن میشه گفت از نوشتن مجدد کدها جلوگیری میشه

نقل قول: فایل dll یک کتابخونه ازData و Code هست که می تونه در یک زمان توسط چندینApplication مورد استفاده قرار بگیره .

برای مثال در سیستم عامل Windows فایل Comdlg32.dll عملکرد های مربوط به Dialog Box ها رو انجام میده

در نتیجه هر Application ی در ویندوز می تونه از توابعی که توی این dll هستند موقع باز کردن Dialog Box استفاده کنه .

مزیت اصلی فایل های dll در استفاده مجدد و همینطور استفاده بهتر از حافظه سیستم هست .


در كامپيوتر، DLL که مخفف dynamic link library است مجموعه اي از برنامه هاي کوچک است، که هر کدام مي تواند توسط يک برنامه بزرگتر که در کامپيوتر در حال اجرا است احضار شود. برنامه کوچکي که به برنامه بزرگتر اجازه برقراري ارتباط با يک وسيله ويژه مثل چاپگر (پرينتر) و يا اسکنر را ميدهد همواره به عنوان يک برنامه DLL بسته بندي مي شود( معمولا به " فايل DLL " اشاره مي شود). مزيت فايل هاي DLL اين است که، از آنجا که آنها در حافظه كامپيوتر (RAM) با هم به همراه برنامه اصلي بارگذاري نــمي شوند، فضا در RAM صرفه جويي مي شود. وقتي که يک فايل DLL نياز است، بعد بارگذاري و اجرا مي شود. به طور مثال تا مادامي که يک کاربر microsoft word ( يک برنامه پردازش کلمه که توسط شرکت microsoft به وجود امده است ) دارد يک سند (Document) را ويرايش مي کند، فايل DLL چاپگر نياز نيست تا در RAM بارگذاري شود. اگر کاربر تصميم به پرينت گرفتن آن سند بگيرد، سپس برنامه کاربردي Word باعث مي شود تا فايل DLL چاپگر بارگذاري و اجرا شود.

اين ويژگي چندين مزيت دارد : اول اينكه چون فايل هاي DLL فقط در هنگام نياز بارگذاري مي شوند ، وقتي مورد استفاده نباشند ، حافظه اي رو مورد مصرف قرار نمي دهند . دوم اينكه چون فايل DLL فايلي جداگانه هست ، برنامه نويسان مي توانند بدون تاثير روي برنامه فراخوان يا فايلهاي DLL ديگر ، اصلاحات يا تغييراتي را در يك واحد ( فايل DLL ) انجام دهند .

به يک فايل DLL اغلب پسوند نام فايل ".dll" داده مي شود. فايل هاي DLL به صورت پويايي به برنامه اي که از آنها در طول زمان اجراي برنامه استفاده مي کند متصل هستند تا اينکه با برنامه اصلي گردآوري شوند. مجموعه چنين فايل هاي (يا DLL ) تقريبا قابل مقايسه با کتابخانه روال هايي هستند (library routines) که با زبان هاي برنامه ريزي از قبيل ++C و C فراهم مي شوند.

ويژگي خاصي در مايكروسافت ويندوز و سيستم عامل os/2 مي باشد واين امكان را فراهم مي سازد تا روالهاي اجرايي به عنوان فايل هاي جداگانه اي با پسوند dll ذخيره شوند. و فقط هنگام نياز برنامه اي فراخواننده آنها، بارگذاري شوند. اين ويژگي چندين مزيت دارد: اول اينكه چون فايل هاي dll فقط در هنگام نياز بارگذاري مي شوند، وقتي مورد استفاده نباشند، حافظه اي رو مورد مصرف قرار نمي دهند. دوم اينكه چون فايل dll فايلي جداگانه هست، برنامه نويسان مي توانند بدون تاثير روي برنامه فراخوان يا فايلهاي dll ديگر، اصلاحات يا تغييراتي را در يک واحد (فايل dll) انجام دهند.



قبلا به این موضوع اشاره شد که فایهای DLL آن دست از برنامه هایی هستند که یکبار نوشته می شوند و در پروژه های بعدی بکرات می تواند از آنها استفاده برد. چیزی که هسته ویندور را تشکیل می دهد اینگونه فایلها هستند. علاوه بر آن تکنیک هایی وجود دارد که شما را قادر می سازد تا برنامه هایی بنویسید که قادرند خود را بروز برسانند و یا خود ترمیم باشند. بهتر از آن اینکه برنامه ای بنویسید که با الحاق اینگونه فایلها بدان قدرت و امکانات جدید بدان افزود. همانند نرم افزارهای رایج از جمله Winamp.

کتابخانه های پویای قابل اتصال (DLL) چه هستند؟یک DLL مجموعه ای از توابع و پروسه هایی است که می تواند از برنامه یا DLLهای نظیر خود فراخوانده شود.

استفاده از اینگونه کتابخانه های دو مزیت اصلی دارد:

1- امکان به اشتراک گذاری از کد را فراهم می سازند. یک DLL می تواند مورد استفاده خیلی از برنامه های قرار گیرد. بعنوان مثال کتابخانه Win32 API نمونه ای از این سری فایلها است. بعلاوه از زمانی که پروسه های گوناگون قادر به فراخوانی یک DLL واحد هستند امکان به اشتراک گذاری کد ها و روتین ها فراهم آمده است. یک فایل DLL تنها یکبار به درون حافظه لود می شود و بارها توسط پروسه های گوناگونی مورد استفاده قرار می گیرد و این یعنی مدیریت حافظه بهتر.

2- مزیت دیگر امکان نوشتن برنامه ها بصورت اجزای منفصل است که این اجزا خود قابل تعویض با نگارش های جدیدتر جهت توسعه نرم افزار خواهند بود بدون اینکه خطی از کد برنامه اصلی دگرگون شود.
با این توصیف فایلهای کتابخانه ای درونی که در پروژه های مورد استفاده قرار می گیرد در صورت تغییر نیاز هست تا پروژه اصلی دوباره کمپایل شود تا بتوان با آن ارتباط بر قرار کرد. اما در DLL ها چون بصورت پویا و قابل انعطاف نوشته شده اند این اتصال در بیرون از بدنه اصلی و درست در زمان فراخوانی آن قبیل از متدها و توابع شکل می گیرد و این خود تفاوت آشکار از مزیت این گونه از فایلها می باشد.همچنین یک فایل DLL می تواند حاوی توابعی باشد که فقط مورد استفاده خود هست و از درون به آن دسترسی نخواهیم داشت و آندسته از تابعی را که نیاز هست معرفی می کنیم تا از بیرون بدان دسترسی داشته باشیم. در این مرحله نیاز به معرفی در فایلهای Def هست که در پروژه های C و C++ مورد استفاده قرار می گیرد.



و اما ساختار DLL فایلهای DLL حاوی یک مدخل شروع انتخابی (optional entry point) و پایانی هستند که در زمانی که توسط برنامه های دیگر به درون حافظه لود یا آنلود می شوند قابل اجرا است. ویندوز این پروسه را در زمانی که یک برنامه DLLها را بدرون حافظه لود یا آنلود می کند اجرا می کند.

این دو نوع پروسه به DLL این امکان را می دهد که یک سری از مقدمات را پیش از استفاده مهیا کند یا بعد از استفاده پاکسازی نماید

کاربرد dll در برنامه نویسی :

با استفاده از این فایل های dll میشه برنامه هارو به صورت کاملا Modular و با مولفه های قابل مدیریت نوشت

دلیلشم اینه که Module ها به صورت جدا از هم کار می کنند و هر Moduleی که نصب شده باشه در زمان اجرا توی حافظه Load میشه و از یه Module فقط زمانی استفاده میشه که به اون Module احتیاج باشه .

مزیت دیگه استفاده از Module اینه کهUpdate برنامه خیلی راحت تر انجام میشه و فقط Module مورد نظر Update میشه بدون اثر گذاشتن روی سایر Module ها .



فایل های زیر در سیستم عامل Windows به عنوان DLL مورد استفاده قرار می گیرند .

ActiveX Controls (.ocx) files

مثه کنترل Calendar در ویندوز .

Control Panel (.cpl) files

مثه همه Item های موجود در کنترل پنل Windows

Device Driver Controls (.drv) files

مثه یک فایل Driver برای یک Printe



برنامه نویسی DLL توی VStudio.Net خداییش کار خیلی سختیه ...
خوشبختانه خودWindows مجموعه کاملی از DLL ها رو در اختیار برنامه نویس قرار میده .

در نتیجه خیلی به ندرت پیش میاد که بخوایم DLL های مورد نیازمون رو خودمون بنویسیم ...
این کار بیشتر توی پروژه های Game Programing انجام میشه
ComputerStop - فایل DLL چیست ؟

- برای ساخت DLL میتونی از گزینه Class Library در پنجره New Project برنامه Visual Studio استفاده کنی.
- ویرایش کردن یا دیدن سورس DLL ها به اندازه فایلهای EXE سخته با برنامه هایی مثل WIN32Dasm میتونی ببینی البته بصورت باینری.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note سوالانی درباره ی WP8 The Arrow 6 784 02-05-2014 ساعت 15:08
آخرین ارسال: BaNNer LorD
Note سوال درمورد سی شارپ bibic 4 735 23-04-2014 ساعت 07:38
آخرین ارسال: bibic
Note سورس ماشین حساب به زبان سی شارپ - Calculator SOFTAFZAR 1 1,953 20-12-2013 ساعت 12:19
آخرین ارسال: sezar21m
Note سورس دفترچه تلفن به زبان سی شارپ (Console Application) SOFTAFZAR 2 1,431 15-12-2013 ساعت 23:20
آخرین ارسال: SOFTAFZAR
Note سوال:با وارد کردن شماره،بقیه فیلد ها به طور خودکار پر شوند mahsa* 1 444 28-11-2013 ساعت 19:58
آخرین ارسال: The Arrow
Note سوال عوض کردن آدرس HttpWebRequest در سی شارپ The Arrow 3 1,017 23-11-2013 ساعت 19:00
آخرین ارسال: The Arrow
Note سوال به دست آوردن مکان در OpenDialog و SaveDialog در سی شارپ The Arrow 4 966 16-11-2013 ساعت 09:26
آخرین ارسال: ScarFace
Note سوال راجب تایمر alireza_kaka 1 445 14-11-2013 ساعت 20:44
آخرین ارسال: Ali Developer
Note سوالاتی در مورد Xml در سی شارپ The Arrow 0 430 16-10-2013 ساعت 10:48
آخرین ارسال: The Arrow
Note سوال در مورد Base64 در سی شارپ The Arrow 2 541 09-10-2013 ساعت 16:54
آخرین ارسال: Stack OverFlow

کاربرانِ درحال بازدید از این موضوع:   1 مهمان