Yusefnejad

یوسف نژاد

Yusefnejad

یوسف نژاد

در ادامه قسمت اول و قسمت دوم که به کلیات و جزئیات نامگذاری پرداخته شده بود، نامگذاری اسمبلی در قسمت سوم ارائه میشه.
در دنیای دات نت یک اسمبلی به مجموعه ای از دستورالعملها و پیاده سازیهای مرتبط گفته میشه که میتونه در یک یا چند فایل ذخیره بشه. اما در حالت عادی و کلی اسمبلی ها تنها یک فایل دارن.

نکته: ویژوال استودیو (Visual Studio که امروزه به اشتباه توسط برخی هنوز VS.NET خطاب میشه، از این عنوان تنها تا نسخه 2003 استفاده میشد، درواقع قسمت NET. دیگه اضافیه) تا آخرین نسخه در زمان تهیه این مطلب (VS 2013 Update 2) هنوز از اسمبلی های چند فایله #C و VB.NET مستقیما پشتیبانی نمیکنه.

توجه داشته باشین که فضای نام (که در ادامه نامگذاریش بحث میشه) مفهومی کاملا متفاوت و مستقل از اسمبلیه. فضاهای نام برای گروهبندی اجزای منطقی برنامه ها توسط توسعه دهندگان بکار میرن، درصورتیکه اسمبلی ها برای بسته بندی فیزیکی کتابخونه ها استفاده میشن. اسمبلی ها و DLLهای متناظرشون میتونن شامل چندین فضای نام مختلف (مرتبط و یا بدون ارتباط با هم) باشن و ازاونجاکه در طراحی و پیاده سازی فضاهای نام از دستورالعمل های متفاوتی نسبت به اسمبلی ها استفاده میشه، باید این دو رو کاملا مستقل از هم طراحی کرد. مثلا اگر تصمیم گرفته بشه که یک اسمبلی با عنوان MyAsm.MyTech نامگذاری بشه، بدین معنی نیست که این اسمبلی حتما باید حاوی یک فضای نام با نام MyAsm.MyTech باشه، البته درصورت نیاز میتونه چنین باشه.

برنامه نویسا معمولا به دلیل عدم هماهنگی صددرصدی بین نام اسمبلی ها و فضاهای نام دچار سردرگمی میشن. مثلا کلاس System.IO.FileStream در اسمبلی mscorlib (در فایل mscorlib.dll) پیاده شده اما کلاس System.IO.FileSystemWatcher در اسمبلی System (در فایل system.dll) قرار داره. همونطور که میبینین اجزای یک فضای نام میتونن در چندین اسمبلی مختلف پیاده بشن. همچنین دقت کنین که در دات نت اصلا اسمبلی ای با نام System.IO وجود خارجی نداره.

نکته: طرحان اصلی CLR تصمیم گرفتن تا نحوه نگاه برنامه نویسان از پلتفرم (یعنی همان فضای نام) رو از نحوه انتشار و توزیع فیزیکی اون (یعنی اسمبلی ها و DLLها) کاملا جدا از هم ببینن. این جداسازی هوشمندانه (که در سایر پلتفرمهای مشابه دیده نمیشه) باعث شده تا هر قسمت با توجه به شرایط و محدودیتهای موجود بهینه سازی بشه. برای نمونه براحتی میشه اجزای مرتبط به هم رو در یک فضای نام پیاده کرد (مثلا تمام انواع مرتبط با IO در فضای نام System.IO پیاده شدن)، اما محل فیزیکی هر جزء رو میشه با توجه به شرایط و برای افزایش کارایی (مثلا کاهش زمان بارگذاری)، یا برای راحتی توزیع و انتشار و پشتیبانی و نسخه دهی، در اسمبلی های جداگانه قرار داد.

- برای نامگذاری اسمبلی ها باید از عناوینی که بطور کلی کار اسمبلی (یا قسمت عمده ای از اون) رو توصیف میکنن استفاده بشه.
- همونطور که در بالا اشاره شد، نامگذاری اسمبلی مطابق با فضای نام درونش اجباری نیست، اما اگه امکانش وجود داره بهتره که برای هدایت بهتر برنامه نویسان این روش درنظر گرفته بشه. مثلا اگه یک اسمبلی حاوی دو فضای نام کلی با نام های MyAsm.MyNamespace.First و MyAsm.MyNamespace.Second  هست، بهتره که نامش MyAsm.MyNamespace انتخاب بشه.
- برای نامگذاری اسمبلی ها (و فایلهای dll یا exe متناظرشون) باید از الگوی زیر پیروی بشه:
<Company>.<Component>.dll
که در اون Component از یک یا چند بخش که با نقطه از هم جدا شدن تشکیل شده. مثل:
Kara.Pos.Services
Kara.Lottery.WinUI.Framework
Microsoft.CSharp
System.Data.Entity

.: در قسمت بعدی نامگذاری فضای نام شرح داده میشه.
:.
  • یوسف نژاد

NET Framework.

NET.

نامگذاری

Naming

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
آخرین نظرات