مهاجرت به دات نت تا دیر نشده !
به نام خدا
اگر برنامه نویس اکوسیستم مایکروسافت نیستید، نخوانید، چون بعدش خودکشی میکنید !!
پیش از خواندن این کوتاه نوشت، آب خنک بنوشید
در این چند خط قرار است داستان مهاجرت فنی یکی از پر ترافیک ترین وب سایتهای دولتی آمریکای جهان خوار را مطالعه فرمایید. این وب سایت در ابتدا و در حوالی سال 2000 میلای مبتنی بر ASP Classic تولید و طراحی و برنامه نویسی شده و سپس همراه با پیشرفت متداوم ASP.NET همواره آپدیت و Upgrade شده تا آنجا که اخیرا توسط DOT NET 6 و Blazor به طور کامل باز نویسی گریده است . در ابتدا اجازه فرمایید به صورت تیتر وار به بررسی فنی این وب سایت بپردازیم.
Domain Name : www.lotterypost.com
!The world's most popular website about government lottery games
Launched in 2000 using Classic ASP
این وب سایت بزرگترین و محبوب ترین وب سایت برگزاری لاتاریهای تایید شده دولتی در آمریکا می باشد و همانطور که توضیح داده شد در سال 2000 توسط ASP Classic طراحی و لانچ گردیده است.
In the mid-2000s I converted about 75% of it to http://ASP.NET 2; then updates all the way to http://ASP.NET 4.8
اینطور که توضیح داده شده است، در طی سالهای پس از پیدایش دات نت این وب سایت به دات نت 2 مهاجرت کرده و تا دات نت 4.8 هم آپدیت شده است.
Over the last 2 years I rebuilt it from the ground-up in .NET 6
ظاهرا در طی 2 سال گذشته این وب سایت کاملا به دات نت 6 مهاجرت کرده است.
All regular form posts and AJAX PostBacks were eliminated, replaced with Blazor Server components embedded in Razor pages, as well as JavaScript fetch() calls to ApiControllers
اینطور توضیح فرموده اند که هرآنچه Postback یا تحرکات مبتنی بر Ajax وجود داشته توسط Blazor Server جایگزین گردیده است.
About 300,000 lines of http://VB.NET were rewritten in C#, naturally with a ton of refactoring. The rebuild started using .NET 5, with an easy transition to .NET 6 when it debuted
در حدود 300 هزار خط کد کثافت VB.NET به سی شارپ (ع) تبدیل شده و در کل هم یک ریفکتورینگ سنگین انجام شده و همه چیز به دات نت 5 منتقل شده بوده که سبب شده الان به سادگی به دات نت 6 آپگرید گردد.
Lottery Post gets a lot of traffic, commonly ranking in the top 200 for US traffic, and in the top 2,000 for global traffic. It consists of more than 1.5M pages. Traffic can come in surges, meaning it needs to handle traffic loads typical of even larger websites
اینجا توضیح داده که این وب سایت جز 200 سایت اول آمریکا از نظر تحمل ترافیک بوده و از نظر جهانی نیز جز 2000 سایت اول جهان می باشد. نزدیک یک میلیون و نیم صفحه و بازدید بالا سبب شده است که پیاده سازی و هندل کردن درخواستها یک مساله خیلی جدی در پیاده سازی و نگهداری این وب سایت باشد.
Database (~200GB) is SQL Server 2019 running on a Windows Server 2019 VM. Website is running in IIS on a Windows Server 2022 VM. Cloudflare Enterprise sits in front of the whole thing
حجم دیتابیس حدود 200 گیگابایت بوده که در SQL Server 2019 و روی سرورهای ویندوزی و IIS همه چیز نگهداری میشود
Performance has been fantastic. Page rendering seems just as fast when the site has 20,000 simultaneous users as when there's just 1. The website VM is configured with 16 CPU cores, and I could easily dial it back as CPU hovers around 3%-5% fully loaded
پس از این مهاجرت، پرفورمنس عالی است، صفحات به سرعت لود شده و نزدیک 20 هزار کاربر به صورت همزمان درست مثل وقتی فقط 1 کاربر در وب سایت وجود دارد در حال عشق و حالند !. ماشین هاست کننده وب سایت دارای 16 هسته سی پی یو می باشد.
Memory consumption is much better than expected, typically consuming around 5GB-6GB with tons of cached data. I was worried that with hundreds or thousands of open Blazor circuits memory might be an issue, but fortunately it's not.
به دلیل مدیریت حافظه درجه یک دات نت 6 و Blazor ، حجم حافظه مصرفی در حدود 5 تا 6 گیگابایت می باشد. در ابتدا نگران مدیریت حافظه Blazor بوده اند که خوشبختانه برادر عزیز Blazor اصلا این چیزها به بند کفشش هم نبوده است !
.NET 6 seems to handle memory capacity, GC, and performance much better than .NET Framework (http://ASP.NET 4.x) did
در اینجا باز تاکید شده که دات نت 6 در مدیریت حافظه و GC بسیار عالی و بهتر از نسخ قبلی می باشد.
To put these performance comments into perspective, Lottery Post has exactly zero static pages. A lot of stuff happens with each page load, so this is not faux enthusiasm, it is earned
در اینجا تاکید شده که وب سایت صفحه استاتیک اصلا ندارد و همه چیز کاملا داینامیک و بر اساس شرایط محاسبه شده و این نشان میدهد در Page Load ها چه بلایی میتواند سر سرور بیاید اگر تکنولوژی دارای ضعف باشد.
Blazor takes some practice to get the most out of it. In early development I used lots of JavaScript interaction, but the better I got at it, the less JavaScript I used. I push myself to avoid the "easy way out" of using JavaScript, and the end result is much better code
خلاصه که با کمی تمرین و R&D توانسته تا میشده از شر JS ها خلاص شود و نتایج بهتری بگیرد .
این رشته توییت طولانی است و میتوانید کل آنرا با مراجعه به توییتر مطالعه فرمایید. خلاصه اینکه باز مجددا باید تاکید کنیم قبل از آنکه دات نت 8 بیاید هنوز حدود یک سالی وقت دارید تا کاملا به فنا نرفته اید به دات نت مهاجرت کنید و از خواب غفلت بیدار شوید که خیلی زود دیر می شود . البته انتظار لج بازی و حرف گوش نکردن هم داریم
?How a loser can ever win
لینک رشته توییت :
https://twitter.com/ToddNorthrop/status/1561859927118954497
درست است که برای تازه کارها یادگیری دات نت مشکل تر است و ممکن است فرآیند حرفه ای شدن آنها کمی سخت باشد و بعضی می گویند شاید سبب دیرکردن شود، ولی بزرگی فرمود : دیرکردن ، بهتر از هرگز نکردن است !