DNX در داتنت ۱۰: انقلابی در اجرای ابزارهای یکبارمصرف
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۵/۱۴ ۰۸:۴۷
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
npx این مشکل را حل کرده است. اکنون، با معرفی dnx در داتنت ۱۰ (.NET 10)، جامعه توسعهدهندگان داتنت نیز به راهحلی مشابه، مدرن و کارآمد دست یافتهاند.dnx میپردازد. ابتدا با ماهیت و کاربرد آن آشنا میشویم، سپس نحوه استفاده عملی از آن را میآموزیم، تفاوتهای بنیادین آن را با روش سنتی dotnet tool install مقایسه میکنیم و در نهایت، نگاهی به سازوکار داخلی آن در SDK داتنت خواهیم داشت.dnx یک فرمان جدید در .NET SDK است که برای اولین بار در نسخه پیشنمایش ۶ از داتنت ۱۰ معرفی شد. هدف اصلی این فرمان، اجرای ابزارهای داتنت به صورت یکباره (One-off) و بدون نیاز به نصب دائمی آنها است. این قابلیت، دقیقاً همان فلسفهای را دنبال میکند که npx در اکوسیستم Node.js پیادهسازی کرده بود: اجرا بر حسب تقاضا.dotnet tool install به صورت سراسری (Global) یا محلی (Local) نصب کند و سپس آن را اجرا نماید. این فرآیند، هرچند کارآمد، اما برای استفادههای موقتی بیش از حد طولانی و دستوپاگیر بود. dnx این فرآیند را به یک مرحله کاهش میدهد. شما به سادگی نام بسته حاوی ابزار را به dnx میدهید و داتنت SDK بقیه کارها را انجام میدهد: دانلود (در صورت نیاز)، کش کردن و اجرای مستقیم ابزار.dotnet dnx و همچنین یک فرمان مستقل به نام dnx که به صورت مستقیم قابل اجراست. این طراحی نشاندهنده اهمیت این ویژگی و تلاش مایکروسافت برای ارائه یک تجربه توسعهدهنده (Developer Experience) روان و مختصر است.dnx بسیار ساده است. ساختار اصلی فرمان به شکل زیر است:dnx <PACKAGE_ID> [<commandArguments>...]
@ مشخص کرد، الگویی که در اکوسیستمهای دیگر مانند Node.js و Go بسیار رایج است و اکنون به داتنت نیز راه یافته است. برای مثال: Newtonsoft.Json@13.0.3.dotnetsay، این فرمان را امتحان کنیم. برای اجرای این ابزار کافی است دستور زیر را در خط فرمان خود وارد کنید:> dnx dotnetsay
Tool package dotnetsay@2.1.7 will be downloaded from source https://api.nuget.org/v3/index.json. Proceed? [y/n] (y):
y و فشردن Enter، بسته دانلود و ابزار اجرا میشود:Welcome to using a .NET Core global tool!
dnx وعده آن را میدهد.dotnet tool install: نصب دائمی در مقابل اجرای موقتdnx واقعاً چه تفاوتی با dotnet tool install دارد و چرا به هر دو نیاز داریم؟ پاسخ در ماندگاری (Persistence) و محل ذخیرهسازی نهفته است.dotnet tool install -g dotnetsay نصب میکنید، اتفاقات زیر رخ میدهد:dotnetsay دانلود شده و در حافظه پنهان سراسری NuGet قرار میگیرد (همان مکانی که بستههای پروژههای شما ذخیره میشوند).~/.dotnet/tools/.store کپی و استخراج میشود.~/.dotnet/tools ایجاد میشود. از آنجایی که این پوشه معمولاً به PATH سیستمعامل اضافه شده است، شما میتوانید از هر جای سیستم با تایپ dotnetsay آن را اجرا کنید.dnx dotnetsay استفاده میکنید:~/.dotnet/tools یا .store کپی نمیشود و هیچ shim اجرایی به PATH اضافه نمیگردد.dnx ابزار را مستقیماً از محل حافظه پنهان NuGet اجرا میکند.dnx نیز از این قاعده مستثنی نیست و در عین سادگی، هوشمندانه طراحی شده است.dnx است. در ویندوز، این فرمان یک فایل dnx.cmd است که در کنار dotnet.exe قرار دارد. محتوای این فایل بسیار ساده است:@echo off "%~dp0dotnet.exe" dnx %*
dotnet dnx و ارسال تمام آرگومانهای بعدی به آن است. یک اسکریپت مشابه برای لینوکس و macOS نیز وجود دارد.ToolExecuteCommand در داخل .NET SDK است که مسئولیت اصلی منطق dnx را بر عهده دارد. این کلاس به طور خلاصه مراحل زیر را طی میکند:dnx ابتدا به دنبال یک فایل مانیفست ابزارهای محلی (dotnet-tools.json) میگردد. اگر ابزار در این مانیفست تعریف شده باشد، از همان نسخه محلی استفاده میکند.--yes این مرحله را غیرفعال کرده باشد).dnx و نصب آن با dotnet tool install -g را توصیف میکند؟dnx در داتنت ۱۰، بیش از یک ویژگی کوچک و کاربردی، نشاندهنده یک تغییر نگرش مثبت در اکوسیستم داتنت است. این تغییر به سمت پذیرش الگوهای موفق از سایر اکوسیستمهای برنامهنویسی، کاهش پیچیدگیهای غیرضروری و تمرکز بر بهبود تجربه روزمره توسعهدهندگان حرکت میکند. dnx با فراهم کردن امکان اجرای سریع و یکباره ابزارها، نه تنها در زمان توسعهدهندگان صرفهجویی میکند، بلکه به حفظ پاکیزگی و نظم محیطهای کاری، از سیستم شخصی گرفته تا خطوط یکپارچهسازی و تحویل مداوم (CI/CD)، کمک شایانی مینماید. این قابلیت، یک بهبود کیفیت زندگی (Quality of Life) است که نشان میدهد داتنت همچنان با قدرت به تکامل خود در مسیر تبدیل شدن به یک پلتفرم مدرن، کارآمد و توسعهدهندهمحور ادامه میدهد.dnx یک اجرای موقت از کش است، در حالی که dotnet tool install -g یک نصب دائمی با یک فرمان قابل دسترس در PATH سیستم ایجاد میکند.