دسته بندی
    بسته

    مهاجرت از .NET Core 2.2 به .Net core 3.1

    مهاجرت از .NET Core 2.2 به .Net core 3.1

      مقدمه

    در این مقاله، ما می خواهیم به شما نشان دهیم که چرا و چگونه ناپ کامرس را به.Net core 3.1 منتقل کنیم.

     از آنجا که .Net core 3.1 تا دسامبر 2022 رسماً پشتیبانی خواهد شد،  مهاجرت امروزه از .NET Core 2.2 به .Net core 3.1 از موضوعات داغ است. اگر می خواهید از تم های جدید و به روز شده استفاده کنید و با نوآوری های فن آوری و روندهای رو به رشد جهانی همراه شوید، ارزش مهاجرت به یک پروژه را دارد. ما به شما پیشنهاد می کنیم تمام مشخصات مهاجرت را با این پست و مثال های ناپ کامرس بیاموزید. (اطلاعات بیشتر را در صفحه طراحی سایت فروشگاهی با asp.net بخوانید)

    مهاجرت از .NET Core 2.2 to .NET Core 3.1

    چالش هایی که باید در روند مهاجرت به  .Net core 3.1 حل شود

    برای پروژه تجارت الکترونیکی که به سرعت در حال رشد است، توجه به عملکرد و امنیت سیستم ضروری است. در اولین بررسی.Net core 3.0   ، اعلام شد که نسخه جدید فریم ورک بسیار سریعتر و پربارتر خواهد بود. اجرای ویژگی های زیر .Net core 3.1   را به سطح جدیدی از عملکرد و امنیت سوق می دهد:

    •          تدوین لایه ای به ما امکان می دهد تا زمان راه اندازی را کاهش دهیم.
    •          پشتیبانی داخلی با عملکرد بالا و کم حافظه برای  JSON.
    •          مسیریابی نقطه پایانی معرفی شده در .NET Core 2.2. بهبود یافته است. مزیت اصلی این است که مسیر قبل از اجرای نرم افزار مشخص شده است.

    پس از انتشار این نسخه، انتظارات ما در عمل تأیید شد. در مرحله بعدی بیایید ببینیم چه چیزی دقیقاً بر عملکرد ناپ کامرس تأثیر گذاشته و چگونه NET Core. از زمان انتشار نسخه 2.2 تاکنون تکامل یافته است.

    چه چیزی در .Net core 3.1 جدید است؟

    بیایید نگاهی دقیق به نوآوری های .NET Core 3.1. بیندازیم که در ناپ کامرس استفاده می کنیم. می توانید دستورالعمل های دقیق نحوه مهاجرت از .NET Core 2.2. به .NET Core 3.1 را در وب سایت رسمی مایکروسافت بیابید. در این مقاله ما به مزایای به وجود آمده با استفاده از این نوآوری ها خواهیم پرداخت.

    میزبان عمومی

    در .NET Core 2.1 میزبان عمومی یک افزودنی به میزبان وب است. میزبان عمومی این امکان را برای شما فراهم می کند تا از ابزارهایی مانند dependency injection (DI)  استفاده کنید. .NET Core 3. بر سازگاری بیشتر با میزبان عمومی تأکید کرده است، بنابراین اکنون می توانید به جای استفاده از میزبان وب، از میزبان سازنده به روز شده استفاده کنید. این اجازه می دهد تا هر نوع برنامه ای، از برنامه های کنسول و WPF گرفته تا برنامه های وب، در همان الگوی میزبان اصلی با همان انتزاعات مشترک ایجاد کنید.

    Migration from .NET Core 2.2 to .NET Core 3.1

    همچنان می توانید به استفاده از WebHostBuilder ادامه دهید اما باید بدانید که برخی از انواع آن در ASP.NET Core 3.1 منسوخ شده و ممکن است در نسخه بعدی جایگزین شوند.

    Migration from .NET Core 2.2 to .NET Core 3.1

    global.json

    ایده و امکان استفاده از این ویژگی قبلاً در نسخه .NET Core 2.0. وجود داشته است، اما قابلیت های آن ناقص بوده است. فقط امکان تعیین نسخه SDK وجود داشت. با معرفی سیاست هایی مانند allowPrelelease و rollForward، کنترل نسخه SDK انعطاف پذیرتر فقط در .NET Core 3.0. در دسترس قرار گرفت. کد زیر استفاده از سیاست های .NET Core SDK رو به جلو را نشان می دهد.

    Migration from .NET Core 2.2 to .NET Core 3.1

    اکنون می توانید نسخه ای را تعیین کنید که می توانید بدون نیاز به ویرایش global.json، هر بار پس از انتشار پچ بعدی، به راحتی برنامه را از آن بسازید. به این ترتیب می توانید دامنه عملکردی را که نیاز دارید بر اساس نیازهای خود تعریف کنید. همچنین به شما تضمین می دهد که کاربران برنامه شما آن را دقیقاً در آن مجموعه SDK که شما تعریف کرده اید و نه آخرین نسخه نصب شده روی سرور آنها، اجرا می کنند.

    ASP.NET Core Module V2

    قبل از .NET Core 2.2 . IIS میزبان برنامه .NET Core. با اجرای نمونه ای از Kestrel و ارسال درخواست به طور پیش فرض از IIS به Kestrel بود. اساساً IIS مانند یک پروکسی عمل می کند. این کار خوب است اما کند انجام میشود، زیرا هنگام پردازش درخواست از IIS به Kestrel یک پرش دوتایی وجود دارد. این روش میزبانی «OutOfProcess  » نام دارد.

    Migration from .NET Core 2.2 to .NET Core 3.1

    ..NET Core 2.2 مدل میزبانی جدید "InProcess  " را معرفی کرد. IIS به جای ارسال درخواست ها به Kestrel، درخواست ها را درون خود ارائه می دهد. این باعث می شود که درخواست ها خیلی سریعتر پردازش شوند زیرا نیازی به ارسال درخواست به Kestrel ندارید. با این حال، این یک ویژگی اختیاری بود و به طور پیش فرض استفاده نمی شد.

    Migration from .NET Core 2.2 to .NET Core 3.1

    در ..NET Core 3.1 ، مدل میزبانی در حال اجرا به طور پیش فرض پیکربندی شده است که به طور قابل توجهی باعث بهبود عملکرد درخواست های ASP.NET Core در IIS می شود. در حین آزمایش، افزایش چشمگیری در عملکرد سیستم با تعداد زیادی درخواست وجود دارد.

    Migration from .NET Core 2.2 to .NET Core 3.1

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

    مسیریابی Endpoint

    در ..NET Core 2.1 ، مسیریابی در  Middleware یا همان میان افزار (ASP.NET Core MVC)  در انتهای خط درخواست HTTP انجام میشد. این بدان معناست که اطلاعات مربوط به مسیر، از جمله اقدام کنترل کننده، برای میان افزار پردازش کننده درخواست قبل از میان افزار MVC در خط درخواست، در دسترس نبود. با شروع با NET Core 2.2. ، یک سیستم جدید مسیریابی مبتنی بر نقطه پایانی معرفی شد. این مفهوم مسیریابی به موارد فوق الذکر می پردازد.

    مسیریابی Endpoint اکنون در NET Core 3.1. متفاوت ساخته شده است. مرحله مسیریابی از تماس به نقطه انتهایی جدا می شود. به این ترتیب ما دو میان افزار متوسط داریم:

    •          EndpointRoutingMiddleware   این تعیین می کند که برای هر مسیر درخواست URL کدام نقطه نهایی فراخوانی می شود و اساساً به عنوان یک مسیریابی عمل می کند.
    •           EndpointMiddleware  نقطه پایان را فراخوانی می کند.

     Migration from .NET Core 2.2 to .NET Core 3.1

    این برنامه نقطه پایانی را تعیین می کند که باید در اوایل خط میان افزار حمل شود. میان افزار زیر می تواند از این اطلاعات برای ارائه عملکردهایی که در پیکربندی خط لوله فعلی موجود نیست استفاده کند.

    Migration from .NET Core 2.2 to .NET Core 3.1

    در ادامه روش های مهاجرت از .NET Core 2.2 به .Net core 3.1  خواهیم پرداخت. توصیه میکنیم این پست را از دست ندهید.

     

     بخش دوم - مهاجرت از NET Core 2.2. به Net core 3.1. 

    در بخش اول پست مهاجرت از NET Core 2.2. به Net core 3.1. دلایل و روش مهاجرت از NET CORE 2.2. به NET CORE 3.1. را گفتیم در این پس به ادامه پست قبلی میپردازیم

    با ما همراه باشید:

    بخش سوم - c شارپ 8، ساختار قندی ( С# 8.0 syntactic sugar  )

    علاوه بر به روزرسانی ورژن ِ خودِ .Net core ، نسخه جدید C # 8.0 نیز منتشر شد. برخی از به روزرسانی های نرم افزار ها نسبتاً جهانی هستند، برخی دیگر فقط شامل اصلاحات آرایشی هستند.

    Migration from .NET Core 2.2 to .NET Core 3.1

    سنجش عملکرد

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

    آزمایشات در ویندوز 10 اجرا شد، جایی كه IIS 10  به عنوان پروکسی برای وب سرور Kestrel در همان دستگاه عمل می كرد. برای شبیه سازی بار زیاد، از Apache JMeter استفاده کردیم که به ما امکان شبیه سازی بار بسیار جدی با درخواستهای موازی را می دهد. برای آزمون، ما یک پایگاه داده به طور خاص برای یک فروشگاه آنلاین متوسط آماده کرده ایم. تعداد محصولات در حدود 50،000 کالا ، تعداد دسته بندی محصولات 516، تعداد کاربران ثبت شده حدود 50،000 و تعداد سفارشات در حدود 80،000، با در نظر گرفتن تصادفی 1 تا 5 محصول بود. همه اینها توسط MS SQL Server 2017 (14.0.2014.14) در حال اجرا بود.

    JMeter چندین بار بارگیری را انجام داد و هر بار یک گزارش اندازه گیری خلاصه برای هر درخواست ایجاد کرد. نتایج متوسط پس از چندین بار اجرا در زیر ارائه شده است. زمان آزمون حدود 20٪ سریعتر است.

     

    Migration from .NET Core 2.2 to .NET Core 3.1

    تعداد درخواستها در واحد زمان (توان عملیاتی) 12.7٪ افزایش یافته است.

    Migration from .NET Core 2.2 to .NET Core 3.1

     

    ما همچنین استفاده واقعی از حافظه برنامه را پس از راه اندازی و پس از یک آزمایش بار کوتاه مدت اندازه گیری کردیم. این آزمون در چند سری متوالی انجام شد. هدف ما این بود که بفهمیم برنامه با چه کارایی حافظه را آزاد می کند و اینکه چگونه به روزرسانی ماژول ASP.NET Core بر میزان مصرف حافظه اولیه تأثیر می گذارد. یادآوری می کنم که ما شروع به استفاده از مدل جدید "InProcess  " کردیم.

    Migration from .NET Core 2.2 to .NET Core 3.1

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

    برای مقایسه، ما جدولی با نتایج آزمون شامل Asp.NetCoreModule که با .NET Core 2.2 استفاده کردیم ارائه می دهیم.

    نتیجه

    روند مهاجرت بستر های نرم افزاری ..NET Core هنوز دست و پا گیر و وقت گیر است. اگر به موقع و به طور مداوم به روزرسانی می کنید، به شما کمک می کند تا از اشتباهات زیادی جلوگیری کرده و در وقت خود صرفه جویی کنید. بسیاری از جنبه های .NET Core بهبود یافته است و شما به عنوان پاداش عملکرد بهتری خواهید داشت. در مورد خاص ما، ما به طور متوسط 13 درصد افزایش عملکرد داشته ایم و اکنون برنامه سریعتر از قبل اجرا می شود. با این کار می توانید داده های بیشتری را در مدت زمان کمتری ارسال کنید. بنابراین، با توجه به اینکه شما در واقع نیازی به انجام عمل بازسازی عملکرد برنامه خود ندارید، این کاملاً قابل توجه است. شما به راحتی برنامه را به روز می کنید و به طور کلی عملکرد پلتفرم را بهبود می بخشید.

    توجه به این نکته نیز مهم است که، مانند همیشه.Netcore توجه زیادی به مسائل امنیتی دارد. ضمناً، از زمان انتشار .Net core 3.1، تعدادی از به روزرسانی ها قبلاً منتشر شده اند (آخرین نسخه در حال حاضر 3.5.1 است) از جمله به روزرسانی های امنیتی.

    یک نکته بسیار مهم این است که .Net core 3.1   نسخه بعدی LTS بعد از 2.1 است. به ما و مشتریان ما پشتیبانی و دریافت آخرین اصلاحات از جمله وصله های امنیتی را تضمین می کند. بنابراین، برای ما مهم است که با انتشار نسخه های LTS از .NET Core به جلو حرکت کنیم. .NET 5 نسخه جهانی بعدی خواهد بود و انتقال برنامه شما به .NET Core 3.1 بهترین راه برای آمادگی در این زمینه است.

    در آینده، ما قصد داریم ناپ کامرس را بیشتر به روز کنیم و ویژگی های جدید و بیشتری را که پلتفرم ..NET Core فراهم می کند اضافه کنیم. یکی از آنها استفاده از System.Text.Json به جای Newtonsoft.Json است. این یک رویه عملکردی، ایمن تر و استانداردتر برای مدیریت اشیا J JSON است. ما همچنین قصد داریم تا حد امکان ویژگی های C # 8.0 را پیاده سازی و استفاده کنیم.

     

    مطالب اخیر

    ثبت نظرات

    دسته ها
    جستجو
    0 سبد
    پروفایل
    بیشتر
    تماس
    دسته بندی ها