برنامه نویسی با فریم ورک دات نت

Ratings
(0)

نوشتن یک اپلیکیشن با استفاده از فریم ورک دات نت یا دات نت Core یعنی اینکه کدهای خود را با هر زبانی که از این فریم ورک پشتیبانی می کند، با استفاده از کتابخانه ی کدنویسی دات نت بنویسیم. ما در این کتاب، برای کدنویسی از نرم افزار ویژوال استودیو استفاده می کنیم. ویژوال استودیو یک محیط برنامه نویسی قدرتمند و توسعه یافته است که از زبان های زیر پشتیبانی می کند:

  • سی شارپ
  • ++C
  • ویژوال بیسیک
  • و دیگر زبان ها

 یکی از مزیت های  استفاده از ویژوال استودیو، سادگی استفاده از دات نت در داخل کدها است. کدهایی که ما ایجاد می کنیم کاملا جزو سی شارپ است اما از فریم ورک دات نت استفاده می کند و هرجا که نیاز باشد، ما از ابزارهای اضافی ویژوال استودیو استفاده می کنیم. برای اینکه کدهای سی شارپ ما اجرا شوند، باید به زبانی تبدیل شوند که سیستم عامل هدف، آنها را درک کند؛ به این کدها، کدهای محلی یا native گفته می شود. به فرآیند تبدیل کدها به کدهای محلی، کامپایل کردن گفته می شود که توسط کامپایلر انجام می شود. در فریم ورک دات نت و دات نت Core، این کار یک فرآیند دو مرحله ای است.


بررسی CIL و JIT

وقتی که ما کدهای کتابخانه ی فریم ورک دات نت یا دات نت Core را کامپایل می کنیم، بلافاصله کدهای محلی(native) مختص سیستم عامل مورد نظر ایجاد نمی شوند. بلکه کدهای ما به کدهای زبان عمومی میانجی(CIL) کامپایل می شوند. کدهای میانجی یا CIL به هیچ سیستم عاملی اختصاص ندارند و مختص سی شارپ نیز نیستند. کدهای دیگر زبان های دات نت مانند ویژوال بیسیک دات نت یا #F نیز در مرحله ی اول، به کدهای میانجی یا CIL تبدیل می شوند.  این مرحله از کامپایل شدن، وقتی که داریم اپلیکیشن های سی شارپ خود را توسعه می دهیم، توسط ویژوال استودیو انجام می شود. اما هنوز کارهای دیگری نیز وجود دارد تا اپلیکیشن ما اجرا شود. این کارها را کامپایلر JIT انجام می دهد. این کامپایلر کدهای CIL را به کدهای محلی(native) که به سیستم عامل مورد نظر بستگی دارد، تبدیل می کند. تنها در این نقطه است که سیستم عامل هدف می تواند اپلیکیشن ما را اجرا کند. این فرآیند کامپایل شدن، به سرعت وقتی که اپلیکیشن ما در حال اجرا است انجام می گیرد و جای هیچ نگرانی برای برنامه نویس ندارد. 

مگر اینکه شما در حال نوشتن کدهای پیشرفته ای باشید که کارایی و بازدهی کدها بسیار حساس باشد، که در این صورت این فرآیند کامپایل شدن، به خوبی در پس زمینه همواره کار خواهد کرد.


در گذشته اغلب لازم بود که کدهای خود را در قالب چند اپلیکیشن کامپایل کنیم به طوری که هرکدام از آنها به یک سیستم عامل و یک معماری CPU اختصاص داشت. معمولا این کار یک نوع بهینه سازی به حساب می آمد، مثلا برای اینکه کدهای ما در چیپست AMD سریع تر اجرا شوند، این کار انجام می شد اما گاهی اوقات این کار بسیار حساس بود؛ مثلا برای اپلیکیشن هایی که در هردوی Win9x و WinNT/2000 کار می کردند. اما امروزه این کار ضروری نیست، زیرا کامپالرهای JIT از کدهای CIL استفاده می کنند و این کدها از سخت افزار و سیستم عامل و CPU مستقل هستند. برخی از کامپایلرهای JIT وجود دارند که یک معماری متفاوت را هدف می گیرند و CLR/CoreCLR نیز از یکی از آنها استفاده می کند و کدهای محلی(native) مورد نیاز را تولید می کند. زیبایی این فناوری این است که کارهای ما را ساده کرده است و برای کامپایل کدها،  نیازی به دانستن جزئیات مربوط به سیستم ها نداریم.


اسمبلی ها در سی شارپ

وقتی که ما یک اپلیکیشن را کامپایل می کنیم، کدهای CIL در داخل یک اسمبلی(assembly) ذخیره می شوند. اسمبلی ها شامل دو چیز هستند، اولا شامل فایل های اجرایی اپلیکیشن هستند که ما مستقیما و بدون نیاز به دیگر برنامه ها، آنها را از داخل ویندوز اجرا می کنیم(که پسوند exe. دارند)؛ دوما شامل کتابخانه ها هستند که پسوند dll. دارند و توسط دیگر اپلیکیشن ها مورد استفاده قرار می گیرند. علاوه بر CIL، اسمبلی ها حاوی اطلاعات متا نیز هستند. اطلاعات متا،  اطلاعاتی در مورد داده هایی هستند که در داخل اسمبلی قرار دارند و به آنها متادیتا یا داده های متا گفته می شود. همچنین اسمبلی ها حاوی منابع اختیاری نیز هستند. منابع اختیاری، داده های اضافی مثل فایل های صوتی و تصاویر هستند که توسط CIL مورد استفاده قرار می گیرند. اطلاعات متا، به اسمبلی ها امکان می دهند تا کاملا خود-توصیف( self-descriptive) باشند.

برای استفاده از یک اسمبلی، ما به هیچ اطلاعات دیگری نیاز نداریم، این یعنی ما دیگر با موقعیت هایی از قبیل، شکست در اضافه کردن داده ها به رجیستری سیستم، مواجه نخواهیم شد. موقعیت مذکور قبلا یک مشکل بود که به هنگام توسعه و برنامه نویسی با دیگر پلتفرم ها به وجود می آمد. این یعنی نصب اپلیکیشن ها به سادگی کپی کردن فایل ها، در داخل یک کامپیوتر که در فاصله ی دوری از ما قرار دارد خواهد بود. به دلیل اینکه اطلاعات بیشتری در کامپیوتر(سیستم) هدف مورد نیاز نیست، ما تنها می توانیم یک فایل اجرایی(executable) را از این دایرکتوری اجرا کنیم و با فرض اینکه NET CLR. برای  اپلیکیشن های دات نت نصب شده باشد، به راحتی کار خود را انجام دهیم.

 برای اپلیکیشن هایی که از دات نت Core استفاده می کنند، تمام ماژول ها یی که برای اجرای برنامه نیاز است، در پکیج توسعه اضافه شده اند و بنابراین نیازی به تنظیمات اضافی نمی باشد. از منظر فریم ورک دات نت، ما برای اجرای یک اپلیکیشن در یک محل، نیاز ضروری به اضافه کردن چیزها(ی مورد نیاز) نداریم. ممکن است ما کدهایی بنویسیم که کارهایی انجام دهند و  این کارها مورد نیاز چند اپلیکیشن باشند. در چنین موقعیت هایی، مفید است که یک کدی که مجددا قایل استفاده باشد را در جایی قرار دهیم که در دسترس تمام اپلیکیشن ها باشد. در فریم ورک دات نت، به این فن یا محل، global assembly cache گفته می شود که مخفف آن می شود GAC .قرار دادن کد در GAC ساده است. ما فقط باید آن اسمبلی(assembly) که حاوی کدها است را در پوشه ای(directory) که حاوی این حافظه پنهان(cache) است قرار دهیم.

  {module کمک نقدی به نویسنده}

آموزش سی شارپ, آموزش برنامه نویسی, کتاب آموزش سی شارپ

  • بازدید: 528

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال