معماری برنامه های دات نت
سلام ، امیدوارم عالی باشی . من پوریا منتخبم و تو این مقاله میخوام یه نگاهی به معماری برنامه های دات نتی داشته باشم اما قبلش بهت پیشنهاد میکنم مقاله قبلی ، تحت عنوان مقایسه سی شارپ و دات نت فریمورک رو بخونی .
در ادامه مقاله قبلی ، میخواستم برات Class Library ها رو توضیح بدم . در زبان های سطح بالا مثل C# وقتی یه برنامه رو بیلد می کنیم . برنامه مون شامل یه سری بلاک هایی میشه که بهش میگن Class-Library ها .
این کلاس ها در زمان اجرا با هم در تعاملن تا بتونن در نهایت یک عملکردی رو ارائه بدن .اما ممکنه یه سوال برات پیش بیاد . این که اصلا کلاس چیه ؟ (کلاس ؟ شیب ؟ دووشواری ؟؟ 😊). آقای مُش همدانی (از خوبای برنامه نویس) اینطوری میگه که : کلاس یه کانتینر ، یه نگهدارنده ست که شامل مقداری داده که این داده ها تحت عناوین اتریبیوت ها یا انگلیسشم بگم همون Attributes و فانکشن ها (Functions : البته فانکشن ها به یه نام دیگه هم استفاده میشن که میشه همون Methods یا متد ها ) . من در ادامه از عنوان متد ها استفاده میکنم .
متد ها یه سری رفتار دارن . کد ها رو اجرا می کنن و در اصل برای ما یه سری عملیات رو انجام میدن .داده ها هم از طرفی برای نمایش وضعیت برنامه مون استفاده میشه . البته بزار یه مثال تصویری برات بزنم .
تو تصویر بالا کلاس ماشین رو در نظر بگیر . ماشین ما میتونه یه سری attribute داشته باشه ، مثلا مدلش چیه ، ساخت کجاس یا چه رنگیه . همون ماشین میتونه یه سری کارها رو هم انجام بده ، مثلا ما میتونیم روشنش کنیم ، یا میتونیم راه ببریمش . تو دنیای واقعی هم همینه .اگه ماشین رو به عنوان یه کلاس در نظر بگیریم ، ممکنه ده ها ، صد ها و یا هزاران تا کلاس دیگه وجود داشته باشه که هر کدوم از کلاس ها هم ، برای ارائه یه عملکرد با هم در تعامل باشن . حالا فرض رو براین بزار که برنامه ای که نوشتیم بسیار بزرگ شده و برای ارائه عملکرد های مختلف در برنامه مون کلاس های زیادی رو نوشتیم . مدیریت این همه کلاس چطوری ممکنه ؟ باید یه راهی برای ساماندهی این همه کلاس باشه و اون هم چیزی نیست جز Namespace ها یا همون فضا های نام .
Namespace ها نگهدارنده هایی برای کلاس های مرتبط به هم هستن .برای مثال تو دات نت فریمورک ما Namespace هایی رو داریم که هر کدومشون شامل صد ها کلاس مرتبط به هم هستن . مثلا ما Namespace هایی رو داریم برای کار با داده ها مثل دیتابیس ها . فضا های نامی رو داریم برای کار با گرافیک ها و تصاویر ، همینطور Namespace هایی رو داریم برای کار با امنیت .حالا یه سوال دیگه . اگه این Namespace ها هم زیاد بشن چطور میشه بخش بندی و مدیریتشون کرد ؟اوهوم درسته . Assembly ها . استانبولی نه ها : ) اَسِمبِلی ها . به عکس پایین نگاه کن .
Assembly ها نگهدارنده هایی برای Namespace های مرتبط به هم هستن . در نهایت این اسمبلی ها هستن که به صورت فیزیکی روی دیسک ذخیره میشن . اگه دقت کرده باشی این فایل ها قابلیت اجرا دارن و پسوندشون هم .dll هست یا همون Dynamically linked library
در آخر وقتی برنامه مونو بیلد کنیم میبینیم مجمو عه ای از اسمبلی ها در کنار هم برنامه مونو تشکیل داده.
امیدوارم این مطلب برات مفید بوده باشه و ازت میخوام هر سوالی در مورد این موضوع داری پایین همین مقاله ازم بپرس. دوره های مقدماتی و متوسطه آموزش زبان سی شارپ در آکادمی استاد باش رو برای یادگیری این زبان قدرتمند از دست نده.
منبع : سلسله اموزش های جناب Mosh Hamedan