Linker: ابزار اپن‌سورس مایکروسافت برای فشرده‌سازی اپلیکیشن‌های Net.

Linker: ابزار اپن‌سورس مایکروسافت برای فشرده‌سازی اپلیکیشن‌های Net.

Linker ابزار اپن‌سورس از مایکروسافت است که با حذف لایبرری‌ها و وابستگی‌های غیرضروری، فضای اِشغال شده توسط اپلیکیشن‌های نوشته‌شده با دات‌نت یا زامارین را کاهش می‌دهد.

به نظر می‌رسد که Linker ابزاری است که کاربران دات‌نت مدت‌ها انتظارش را می‌کشیدند و تاکنون از آن محروم بودند. Microsoft با همکاری گروه Mono، لینکری ارائه کرده‌اند که کارش در اصل پالایش اپلیکیشن‌های دات‌نت است بدین ترتیب که تنها آن بخش‌هایی از لایبرری‌ها در کالبد برنامه‌های دات‌نت باقی می‌مانند که واقعاً حین اجرای برنامه به کار می‌روند. به عبارتی، Linker برای نیل به هدف خود، اپلیکیشن‌های دات‌نت را تحلیل کرده و لایبرری‌هایی که هرگز توسط اپلیکیشن فراخوانی نشده‌اند را شناسایی می‌کند.

مایکروسافت هنگام معرفی این پروژه در گیت‌هاب، استفاده از لینکر را روشی مؤثر برای تحلیل کدهای مرده (Dead Code) در اپلیکیشن‌ها قلمداد کرد (کد مرده بخشی از سورس‌کد برنامه است که گرچه اجرا می‌شود، اما نتیجهٔ آن در هیچ‌یک از دیگر مراحل رایانش مورد استفاده قرار نمی‌گیرد و به همین جهت جز هدر دادن زمان و حافظه، حاصل دیگری ندارد و در عین حال حذف این کدها دقت زیادی می‌طلبد زیرا زدودن بی‌مهابای آن‌ها ممکن است به بروز باگ در برنامه بیانجامد.) میزان کاهش حجم اپلیکیشن‌ها در نتیجهٔ استفاده از لینکر در شرایط مختلف بسیار متفاوت است اما طبق گفتهٔ مایکروسافت، استفاده از آن در مواردی خاص می‌تواند حجم اپلیکیشن را تا 50٪ کاهش دهد.

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

بخشی از عملکرد لینکر وام‌دار پروژهٔ قدیمی‌تری موسوم به Cecil است که دولوپرهای دات‌نت از سال 2004 به بعد برای بررسی و تصحیح اپلیکیشن‌ها و لایبرری‌های دات‌نت از آن استفاده می‌کردند. تفاوت عمدهٔ بین Linker و Cecil در این است که Cecil در اصل برای بررسی و تصحیح دستی توسط خودِ دولوپر طراحی شده بود و کاهش حجم اپلیکیشن تنها یکی از اهداف آن بود اما Linker به‌ طور خاص برای کاهش حجم اپلیکیشن‌های دات‌نت به صورت اپن‌سورس عرضه شده است.