5 مورد که باید در مورد NET 5. بدانید

سه شنبه 25 آذر 1399

NET 5.، جانشین NET Core 3.1. و NET Framework 4.8.، قصد دارد تجربه جدید توسعه cross-platform را به توسعه‌دهندگان NET. ارائه دهد. این امر ویژگی‌های خوب جدیدی را به همراه دارد. البته در این مقاله نمی‌توانید همه چیز را در مورد NET 5. بیاموزید، اما می‌توانید روی 5 مورد تمرکز کنید تا درک درستی از آنچه اتفاق می‌افتد داشته باشید.

5 مورد که باید در مورد NET 5. بدانید

پلت‌فرم یکپارچه

اولین چیزی که باید بدانید این است که NET 5. دیدگاه یکپارچه و جدیدی از دنیای NET. برای شما به ارمغان می‌آورد.

اگر با NET. کار کرده باشید، ممکن است از چند بخش شدن پلت‌فرم آن از اولین انتشارش در سال 2002 اطلاع داشته باشید. NET Framework. در ابتدا برای ویندوز طراحی شده بود، اما مشخصات زمان اجرای آن، که همچنین به عنوان Common Language Infrastructure (CLI) شناخته می‌شود، به عنوان ECMA 335 استانداردسازی شده بود.

استانداردسازی به هر کسی اجازه می‌دهد تا پیاده‌سازی NET runtime. را ایجاد کند. و در حقیقت، چند مورد از آن‌ها در افق ظاهر می‌شوند: Mono برای سیستم‌های مبتنی بر لینوکس، Silverlight برای برنامه‌های مبتنی بر مرورگر، فریم‌ورک‌های Micro و NET Compac. برای موبایل و دستگاه‌های محدود به منابع و غیره. سپس مایکروسافت تصمیم گرفت NET Core. را از ابتدا با در نظر گرفتن سازگاری cross-platform بنویسد.

این پیاده‌سازی‌های مختلف نیاز به درک اینکه پکیج‌های NET. از کجا اجرا می‌شوند را ایجاد کردند. آیا باید نسخه‌های مختلف کتابخانه خود را برای توزیع آن بسازید؟ پاسخ آن NET Standard. بود. به عبارت دیگر اگر کتابخانه‌های خود را برای یک NET Standard. مشخص بسازید، تضمین می‌کنید که در همه زمان‌های اجرا این پیاده‌سازی این مشخصات را اجرا می‌کند.

شما متوجه می‌شوید، که در این وضعیت شلوغ، دستیابی به سازگاری پیاده‌سازی cross چندان آسان نیست. به همین دلیل است که NET 5. در صحنه ظاهر می‌شود.

پلت‌فرم جدید NET. جایگزین یکپارچه موارد مختلف NET. است: NET Framework.، NET Standard.، NET Core.، Mono و غیره. این رسما نسخه بعدی NET Core 3.1. است، اما اساسا پایان NET Framework.، NET Standard.، و سایر ورژن‌هایی که باعث ایجاد دردسرهای بزرگ برای توسعه‌دهندگان NET. می‌شد را تعیین می‌کند.

NET 5. مجموعه رایجی از APIها را ارائه می‌دهد که پیاده‌سازی‌های مختلف زمان اجرا را تراز می‌کند. این مجموعه از APIها توسط net5.0 Target Framework Moniker (TFM) مشخص می‌شود، که توکنی است که در پروژه NET. ست می‌کنید تا target framework را مشخص کنید. برنامه‌های شما را قادر می‌سازد تا بر روی هر پشتیبانی پیاده‌سازی runtimeای اجرا شود. مثلا برای ساخت هر برنامه‌ای که از Windows API استفاده می‌کند، شما باید net5.0-windows TFM را مشخص کنید. به این ترتیب، ساختن یک برنامه مخصوص پلت‌فرم انتخاب شما است، نه اینکه انتخاب‌تان به پیاده‌سازی runtime ای که برای توسعه برنامه‌یتان استفاده می کنید بستگی داشته باشد.

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

در حالی که NET 5. جدید با هدف یکسان‌سازی پلت‌فرم همراه است، برنامه اولیه به دلیل کرونا تغییر کرد. در واقع، NET 5. با پایه‌های یکپارچه‌سازی تنظیم شده است، اما با NET 6. در نوامبر 2021 تکمیل می‌شود. با این نسخه، انتشار پایداری از UI جدید سراسری و پشتیبانی از TFMهای خاص مثلا برای اندروید (net6.0-android) و iOS (net6.0-ios) را دریافت می‌کنید.

ویژگی‌های جدید در C#

دومین نکته‌ای که باید بدانید در مورد C# است. NET 5. با C# 9، نسخه‌ای از زبان اصلی برنامه‌نویسی پلت‌فرم NET.، همراه است. چندین ویژگی جدید وجود دارد، اما در اینجا یکسری ویژگی‌های مهم را بیان می‌کنیم.

دستورات سطح بالا

در میان ویژگی‌های جدید، یکی از مهم‌ترین موارد معرفی دستورات سطح بالا است. برای یادگیری اینکه آن‌ها چه هستند به برنامه زیر نگاهی بیاندازید:

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

فقط برای نوشتن یک رشته در کنسول، شما باید یک فضای نام، یک کلاس، و متد استاتیک Main() را تعریف کنید. اکنون می‌توانید از این زیرساخت کد خلاص شوید و به راحتی بنویسید:

System.Console.WriteLine("Hello World!");

دستورات سطح بالا به شما امکان می‌دهند تا بر آنچه در برنامه‌های کنسول کوچک و موارد کاربردی واقعا مهم هستند متمرکز شوید و از سی‌شارپ با رویکردهای بیشتر اسکریپت‌ محور استفاده کنید.

انواع Record

یکی دیگر از ویژگی‌های جالب و جدید record typeها هستند. با recordها، می‌توانید یک نوع مرجع تغییرناپذیر اعلان کنید، مثلا یک نوع مبتنی بر کلاس که بعد از ایجادش نمی‌تواند تغییر کند. نمونه‌ای از یک نوع مرجع تغییرناپذیر داخلی کلاس System.String است. بعد از ایجاد نمونه‌ای از System.String، دیگر نمی‌توانید مقدار آن را تغییر دهید.

اعلان record type زیر را در نظر بگیرید:

public record Person
{
    public string FirstName { get; }
    public string LastName { get; }

    public Person(string first, string last) => (FirstName, LastName) = (first, last);
}

می‌توانید نمونه‌ای از Person record را همانطور که با یک کلاس انجام می‌دهید بسازید، اما پراپرتی FirstName آن را نمی‌توانید تغییر دهید:

var person = new Person("John", "Doe");

person.FirstName = "Jack";    //throws an error

با این حال، شما می‌توانید دو نمونه از Person record را به سادگی با مقادیر اولیه مقایسه کنید:

var person = new Person("John", "Doe");
var anotherPerson = new Person("John", "Smith");

Console.WriteLine(person == anotherPerson);  //false

Init setters

سی شارپ 9 همچنین دسترسی init را برای تعریف پراپرتی‌هایی که فقط می‌توانند مقداردهی اولیه داشته باشند اضافه کرده است. برای توضیح بهتر موارد استفاده از آن، تعریف کلاس زیر را در نظر بگیرید:

public class Person {
    public string FirstName { get; init; }
    public string LastName { get; init; }
    public string Address { get; set; }
}

این کلاس یک person با پراپرتی‌های LastName و FirstName را تعریف می‌کند که می‌توانند مقداردهی اولیه شوند، اما تغییر نمی‌کنند. پراپرتی Address در هر زمان قابل تغییر است.

var person = new Person {
    FirstName = "John",
    LastName = "Doe",
    Address = "124 Conch Street, Bikini Bottom, Pacific Ocean"
}

person.Address = "17 Cherry Tree Lane";
person.FirstName = "Jack";    //throws error

NET MAUI.، رابط کاربری سراسری

به عنوان سومین مورد باید بدانید که NET 5. راهی جدید برای ایجاد رابط‌ های کاربری cross-platform برای شما آورده است. به لطف فریم‌ورک NET Multi-platform App UI.، که به عنوان NET MAUI نیز شناخته می‌شود، می‌توانید با یک پروژه واحد رابط‌ های کاربری برای Android، iOS، macOS و Windows را ایجاد کنید.

در واقع این ویژگی هنوز در حال پیشرفت است و با NET 6. منتشر خواهد شد، اما می‌توانید با نگاهی به NET MAUI. شروع به کار کنید تا در صورت انتشار رسمی آماده باشید.

NET MAUI. را می‌توان تکامل Xamarin.Forms، فریم‌ورک open-source برای ساخت برنامه‌های اندروید و iOS با یک کد واحد .NET، در نظر گرفت. اما این فریم‌ورک جدید یک مدل سراسری را برای ساخت رابط‌ های کاربری بر روی پلت‌فرم‌های دسکتاپ و موبایل پیشنهاد می‌کند.

به علاوه برای الگوی شناخته شده NET MAUI ،Model-View-ViewModel (MVVM). از الگوی جدید Model-View-Update (MVU) پشتیبانی می‌کند. این یک الگوی جریان داده یک طرفه است که از معماری زبان برنامه‌نویسی Elm الهام گرفته است و روشی موثر برای مدیریت آپدیت‌های UI و وضعیت برنامه ارائه می‌دهد.

پشتیبانی از برنامه‌های تک فایلی

چهارمین چیزی که در NET 5. دریافت خواهید کرد پشتیبانی از برنامه‌های تک فایلی است، یعنی برنامه‌های منتشرشده و استقرار یافته به عنوان یک فایل واحد. این بدان معناست که برنامه شما و همه وابستگی‌های آن در یک فایل قرار گرفته‌اند. مثلا دستور زیر را درون فولدر NET 5. خود اجرا می‌کنید:

dotnet publish -r linux-x64 --self-contained true /p:PublishSingleFile=true

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

البته می‌توانید این پارامترها را در کانفیگ پروژه خود نیز مشخص کنید:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <!-- Enable single file -->
    <PublishSingleFile>true</PublishSingleFile>
    <!-- Determine self-contained or framework-dependent -->
    <SelfContained>true</SelfContained>
    <!-- The OS and CPU type you are targeting -->
    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
  </PropertyGroup>

</Project>

توجه داشته باشید که این ویژگی از رویکرد مشابه برای برنامه‌های تک فایلی که می‌توانید در NET Core 3.1. بسازید استفاده نمی‌کند. در NET Core 3.1.، برنامه تک فایلی فقط راهی برای بسته‌بندی کردن باینری‌هاست. در زمان اجرا، بسته‌بندی آن‌ها در یک فولدر موقت باز می‌شود، بارگیری شده و اجرا می‌شود. در NET 5.، برنامه تک فایلی ساختار داخلی جدیدی دارد و مستقیما بدون هیچ جریمه عملکردی اجرا می‌شود.

فناوری‌هایی که دیگر پشتیبانی نمی‌شود

آخرین مورد از 5 موردی که در مورد NET 5. یاد گرفتیم مربوط به مواردی است که دیگر پشتیبانی نمی‌شوند. همانطور که در بالا گفته شد، بررسی معماری و تلاش برای ایجاد NET 5. به عنوان فریم‌ورک برنامه‌نویسی cross-platform منجر به حذف چند ویژگی پشتیبانی شده در NET Framework. می‌شود. بیاید نگاهی سریع به ویژگی‌های حذف شده و گزینه‌های احتمالی بیاندازیم.

Web Forms

برای مدت زمان طولانی، ASP.NET Web Forms اصلی‌ترین فناوری برای ساخت رابط های کاربری وب داینامیک بوده است. با این حال همه می‌دانند که طول عمر آن به سرنوشت .NET Framework نزدیک بود. .NET Core از Web Forms پشتیبانی نمی‌کند، پس حقیقت این است که دیگر در NET 5. پشتیبانی نمی‌شود و در واقع نباید خبری از آن باشد.

با این حال چند جایگزین برای ساخت web UIها داریم. اگر در حال ساخت برنامه‌های وب مرسوم هستید، Razor Pages یکی از این جایگزین‌ها است. اگر می‌خواهید برنامه‌های تک صفحه‌ای بسازید، می‌توانید از Blazor استفاده کنید.

Windows Communication Foundation (WCF)

حتی WCF، فریم‌روک ارتباطی مرسوم برای ویندوز، نیز منسوخ می‌شود. این امر ممکن است برای توسعه‌دهندگانی که از آن برای ساخت برنامه‌های سرویس محور استفاده می‌کنند، کمی شوک‌ دهنده باشد. با این حال اگر متوجه شوید که هدف اصلی NET 5. تبدیل شدن به فریم‌ورک cross-platform است، این امر کاملا قابل درک خواهد بود.

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

Windows Workflow Foundation

سرانجام NET 5. حتی شامل Windows Workflow Foundation، فناوری workflow engine موجود در NET Framework.، نمی‌شود. هیچ جایگزین رسمی برای این تکنولوژی وجود ندارد. با این حال می‌توانید از CoreWF، برای انتقالworkflow های موجود در NET 5. یا ایجاد موارد جدید استفاده کنید.

جمع‌بندی

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

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید