Yusefnejad

یوسف نژاد

Yusefnejad

یوسف نژاد

امروزه تمامی اپلیکیشن ها در نهایت از چندین «نوع» مرتبط یا غیر مرتبط با هم تشکیل شدن که ممکنه توسط افراد یا گروهها و یا شرکتهای مختلفی توسعه داده شده باشن. درضمن شرکتهای زیادی تو دنیا کتابخونه ها و کمپوننت ها و نوع های مختلفی تولید میکنن که به عنوان اجزای تشکیل دهنده محصولات شرکتهای مختلف در سرتاسر دنیا مورد استفاده قرار میگیرن. استفاده از این نوع های آماده زمان نهایی تولید محصولات نرم افزاری رو بطور قابل ملاحظه ای کاهش میده، اما ریسک هایی هم داره.

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

تو دنیای دات نت هم، اگه این کتابخونه ها و نوع ها توسط زبانهای برنامه نویسی ای که CLR رو هدف قرار میدن تولید شده باشن، براحتی و بدون مشکل با هم کار خواهند کرد؛ و مثلا نوعی که توسط یک زبان برنامه نویسی تولید شده باشه میتونه بدون هیچ مشکل و نگرانی به عنوان کلاس پایه نوعی دیگه که تو یه زبان برنامه نویسی دیگه تولید شده استفاده بشه. اما بازهم رعایت تمام موارد امنیتی لازمه تولید یه محصول با اطمینان بالاست.

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


مشکلات توزیع و انتشار تو ویندوز


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

اول اینکه تمام برنامه ها از فایلهای dll (یا Dynamic-Link Libarary) مختلف که توسط مایکروسافت یا سایر شرکت ها تولید شده، استفاده میکنن، و چون یه برنامه ممکنه از کتابخونه های چندین تولیدکننده مختلف استفاده بکنه، یه برنامه نویس نمیتونه بصورت 100 درصدی از نحوه اجرای کدش مطمئن باشه. همچنین ازاونجاکه کتابخونه های تولید شده هم ممکنه توسط برنامه های مختلف تو حالتها و شرایط گوناگون استفاده بشن، بازم برنامه نویس نمیتونه از چگونگی اجرای کدش 100 درصد مطمئن باشه. البته با ابنکه این موارد به نظر مشکل زا میان، اما در عمل بدلیل انجام عملیات تست و دیباگ فراوان قبل از انتشار، بوجود اومدن مشکلات ناشی از این مسائل احتمال بسیار کمی داره.

در مقابل، مسائل دیگری گریبان کاربران بیچاره رو میگیره. مثلا فرض کنین که شرکتی میخواد کتابخونه های خودشو بروز کنه و نسخه های جدیدی رو منتشر بکنه. بصورت پیشفرض این نسخه ها باید با نسخه های قدیمی منطبق یا به اصطلاح backward-compatible باشن. اما اطمینان از این ویژگی کار چندان ساده ای نیست. در عمل در هنگام بروزرسانی به نسخه های جدید، امکان تست تمامی شرایط با تمامی اپلیکیشنهایی که از محصول موردنظر به هر نحوی استفاده کردن، وجود نداره. این مسئه باعث میشه تا تو برخی موارد نصب نسخه جدیدی از یه کتابخونه یا اپلیکیشن باعث از کار افتادن برنامه های دیگه میشه. درواقع نصب برنامه جدید ممکنه منجر به بازنویسی فایلهای dll قدیمی ای بشه که دیگر برنامه ها در حال حاضر دارن از اون استفاده میکنن و بعد از این جایگزینی فایل، بدلیل عدم همخوانی با نسخه جدید، این برنامه ها دیگه بدرستی کار نکنن.

این مسئله تو دنیای کامپیوتر به جهنم dll یا «DLL hell» معروفه. این مشکل نسبتا شایع باعث نگرانی و ترس کاربران میشه و اونا رو از نصب نسخه های جدید اپلیکیشنها باز میداره.

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

فاکتور سوم به امنیت و مسائل مربوطه برمیگرده. وقتی یه برنامه نصب میشه انواع مختلفی از فایلها ممکنه به سیستم کاربر منتقل بشه که محصول شرکت ها و گروههای تولیدکننده مختلف میتونه باشه. درضمن کاربر نهایی از نحوه و محتوای عملیاتی که این فایلها انجام میدن مطمئن نیست. این فایلها ممکنه مجری عملیات مخربی باشن که ممکنه به سیستم کاربر صدمه بزنه یا اطلاعات سیستم رو برای مقصد خاصی ارسال کنه. مواردی از این دست باعث میشه تا ازنظر امنیتی نشه به هیچ نرم افزای اطمینان کامل داشت.


توزیع و انتشار تو دات نت


پلترفرم جدید دات نت مشکل اول یعنی DLL hell رو با بکارگیری روشی کاملا جدید برای نگهداری و مدیریت dllها حل کرده. تو این بستر دیگه امکان بازنویسی یه فایل و جایگزینی کاملش با نسخه های جدید وجود نداره. درواقع فایلهای مختلف کتابخونه ها براساس ویژگی های مختلفی علاوه بر نام فایل، تو سیستم مقصد ذخیره میشن. بنابراین احتمال بازنویسی و جایگزینی فایلهای با نسخه های متفاوت عملا وجود ندارد.

همچنین بدلیل ساختار منحصربفرد فایلهای تولیدشده تو این پلتفرم، دیگه مثل فایلهای COM نیازی به ثبتشون تو رجیستری ویندوز نیست. بنابراین قسمتهای مختلف یه برنامه تو بخشهای گوناگون سیستم پراکنده نمیشن.

همچنین از لحاظ امنیتی، دات نت فریمورک از مفهومی به نام code access security استفاده میکنه. تو این روش برخلاف سیستم امنیتی ویندوز که تنها برپایه هویت کاربر کار میکنه، با استفاده از تعیین و شناسایی دسترسی های خاص به قسمتهای مختلف برنامه، اجازه اجرای برنامه داده میشه. بنابراین CLR براحتی میتونه فرایندهایی که یه کمپوننت میتونه یا نمیتونه انجام بده رو کنترل کنه. مثلا میشه یه اپلیکیشن رو جوری تنظیم کرد که یه برنامه خاص (مثل برنامه ای که از کامپیوتری دیگه و از طریق شبکه به برنامه دسترسی داره) تنها به قسمتها و فرایندهای محدودی از کد برنامه دسترسی داشته باشه و یه برنامه دیگه (مثل برنامه ای که به صورت محلی یا local به برنامه دسترسی داره)، به قسمتهای بیشتری از کد دسترسی داشته باشه و یا حتی دسترسی کامل یا full trust براش فراهم بشه. درواقع تو پلتفرم دات نت به کاربر کنترل کامل روی نصب (و اینکه چه قسمتهایی از برنامه نصب بشه) و نیز کنترل کامل روی اجرا (اینکه چه قسمتهایی توسط چه کسایی میتونه اجرا بشه) داده میشه، و در کل کنترلی بسیار بیشتر از اونچه که سیستم عامل ویندوز در اختیار کاربر قرار میده، تو این پلتفرم فراهم شده. (اطلاعات کاملتر)


.: آشنایی بیشتر با فرایند توزیع و انتشار تو دات نت: ! :.

  • یوسف نژاد

Deployment

NET Framework.

نظرات  (۱)

  • ذوالفقاری
  • سلام - تشکر از مطلب مفیدتون
    پاسخ:
    سلام.
    مرسی. خوشحالم که باز به اینجا سر زدین.

    ارسال نظر

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