با اعلان .NET 5 در سال پیشین و اعلانهای آینده منتهی به MSBuild 2020، طراحی اپلیکیشن یک پرسش بزرگی که پیش می آید این میباشد که چه اتفاقی برای \" NET Standard.\" میفتد.
چرا ما NET Standard. را داشتیم
بیایید یک گام به عقب برگردانیم و ببینیم چهگونه و چرا NET Standard. بوجود آمد.
هنگامی NET Core. برای نخسین بار منتشر شد، معضلی پیش آمد. ما مجموع این کتابخانهها را داریم که پیش از این برای NET Framework. درج شده میباشد، آیا حقیقتا میخواهیم تمامی آن ها را مجدد برای NET Core. بنویسیم؟ با اعتنا به اینکه اکثریت NET Core. نخستین بخشی از NET Framework. برای شغل cross platform بود، اکثری از signatureهای (امضاء) متدها و کلاسها یکسان بودند (تا جایی که می توانیم بگوییم بیشتر آنان بودند).
بیایید یک نمونه بزنیم. بیایید بگوییم که میخواهیم فایلی را با به کارگیری از فراخوانی استاندارد File.ReadAllLines(string path) داخل کتابخانه خویش گشوده کنیم. فعلا این حادثه میفتد که در صورتیکه شما این کد را باطن NET Framework.، NET Core. یا این که حتی Mono بنویسید، این به عبارتی پارامترها را می گیرد (یک متغیر string path)، و به عبارتی چیز را برمیگرداند (یک آرایه حرفهای). اکنون چه طور این قرائت فولدر را فراخوانی مینماید که برای پلتهیبت خاصی میباشد (از جمله NET Core. و Mono ممکن میباشد دارنده کد خاصی برای مسیر فولدرهای مک داشته باشند)، البته سود بایستی مدام یکسان باشد، یک آرایه فنای خطوط از فولدر.
پس در حالتیکه ما کتابخانهای داشته باشیم که کاری نمینماید جز اینکه یک فولدر را برای تلاوت خطوط و برگرداندن آن گشوده مینماید، آیا حقیقتا بایستی این کتابخانه را یکسری توشه برای کادرورکهای گوناگون منتشر کنیم؟ عالی، اینجا جایی میباشد که NET Standard. وارد می گردد. معمولیترین راه و روش برای درنگ کردن در باب آن، تعریفوتمجید لیستی از کلاسها و متدهایی میباشد که هر پلتهیبت برای اجرای آن موافقت مینماید. براین اساس در حالتیکه File.ReadAllLines() بخشی از استاندارد باشد، پس می توانیم مطمئن شویم که کتابخانه ما قادر است تنها یک توشه تحت عنوان کتابخانه NET Standard. منتشر گردد، و روی یک سری پلتهیبت فعالیت نماید.
NET Standard. راهی برای پلتهیبتهای متعدد NET. ارائه می دهد تا گروهای از signatureهای رایج اسلوب را به اشتراک بگذارند که به سازندگان کتابخانه این قابلیت و امکان را داده میباشد تا یک توشه کد را بنویسند و آن را بر روی پلتهیبتهای گوناگون ایفا نمایند.
NET Standard. دیگر مایحتاج وجود ندارد
حال که ما به امروز رسیدهایم میشنویم که NET Standard. دیگر مایحتاج وجود ندارد. و دو برهان اساسی برای این فرمان وجود داراست:
تلاش NET Core. از NET Framework. بالاتر رفته میباشد. یعنی ورژنهای نو NET Standard. مشقت بار به دست می آیند.
در بالا، NET Core. زیرمجموعهای از همت NET Framework. بود. به این ترتیب NET Standard. یک نحوه حدودا اظهار گردیده بود، درصورتیکه شما کتابخانهای برای NET Framework. نوشتید، چطور شما میدانید که سوای پیکربندی خاصی برای NET Core. فعالیت خواهد کرد. آری، NET Standard. نیز تحت عنوان راهی برای دیدن سعی در پلتهیبتهای دیگر مثل Mono، Xamarin، Silverlight و حتی Windows Phone استعمال می شد. ولی ما فکرمیکنیم بیشتر مورد ها به کارگیری برای تطبیق NET Framework => .NET Core. بود.
به عبارتیطور که NET Core. امکانهای خویش را ساخت و ساز نموده است، اصولا هنوز هم سعی بر حصول به تساوی خصوصیت با NET Framework. را داشت. بدین ترتیب به محض نشر ورژن جدیدی از NET Core. در هر سال، ورژن جدیدی از NET Standard. نیز با آن منتشر میشد، که نسبتاً فقط در ادامه signatureهای متداول سیاق دربین NET Framework <=> .NET Core بود. به این ترتیب در غایت NET Core. از NET Framework. بالاتر رفت، یا این که دستکم می گوید \"ما هیچ چیز مازاد را حمل نمیکنیم. این مرحله اصولا NET Standard 2.0. میباشد.
ولی هویدا میباشد که NET Core. متوقف نمیشود و خصوصیتهای جدیدی به NET Core. اضافه میگردد که در NET Framework. نیستند. البته به روزهای NET Framework. در بالا نادر می باشند و مسافت میان آن ها زیاد میباشد. به این ترتیب با اضافه شدن خصوصیتهای تازه به NET Core.، آیا آن ها منطقی را میسازند تا به ورژن تازه استاندارد اضافه شوند با اعتنا به اینکه NET Framework. هیچ گاه آن استاندارد را پیادهسازی نخواهد کرد؟ تا حدی... یا این که دست کم آن ها همت کردهاند. NET Standard 2.1. واپسین نشر استاندارد بود و به وسیله Mono و Xamarin پیادهسازی شد، البته خیر به وسیله NET Framework.
به این ترتیب اکنون ما استانداردی داریم که برای تعریف برابری میان دو پلتهیبت والا ابتکار گردیده، که یک پلتهیبت دیگر نمیخواهد در آن کمپانی نماید. مراد ما این میباشد که می توانیم استانداردهای نو را پیادهسازی کنیم البته درصورتیکه صرفا یک بازیکن وجود داشته باشد، پس این نوعی دادخواهی میباشد.