جادوی سی شارپ در مرورگر
چرا بلیزور؟
یادتان هست وقتی اولین بار با ASP.NET MVC آشنا شدیم؟ چقدر لذتبخش بود که مدلها، کنترلرها و ویوها با نظمی مثالزدنی کنار هم قرار گرفتند. اما این ماه عسل، درست پشت مرزهای مرورگر تمام میشد. به محض اینکه کاربر میخواست روی یک دکمه کلیک کند و بدون رفرش شدن صفحه، اتفاقی بیفتد، ما مجبور بودیم «شخصیت» خودمان را عوض کنیم.
ما برنامهنویسان داتنت، در سمت سرور پادشاهی میکردیم؛ با Strongly-typed بودن کدها، قدرت LINQ و امنیتC# اما به محض ورود به دنیای فرانتاِند، باید به زبان جاوااسکریپت التماس میکردیم.
* نیمی از روز درگیر معماریهای تمیز Clean Architecture در C#
* نیمی دیگر از روز، سردرگم در میان پرانتزهای نامنظم و خطاهای `undefined` در جاوااسکریپت.
* تکرار خستهکننده مدلها: یک بار در کلاسهای C# و یک بار در آبجکتهای JS
ما همیشه حس میکردیم در مرورگر میهمان هستیم، نه صاحبخانه. جاوااسکریپت برای ما مثل زبانی بود که با آن صحبت میکردیم اما با آن فکر نمیکردیم.
خداحافظی با مثلث برمودای Ajax، PartialView و JSON
در بازار ایران، سرعت توسعه همهچیز است. اما در معماریهای سنتی، ما در یک «مثلث برمودا» گیر افتاده بودیم که زمان و انرژی پروژه را میبلعید:
1. PartialViewهای دردسرساز: برای یک آپدیت ساده، باید یک ویوی جدا میساختیم، اکشن کنترلر را تنظیم میکردیم و مراقب بودیم که استایلها بهم نریزد.
2. کابوس Ajax : نوشتن کدهای `$.ajax` تکراری، مدیریت `success` و `error` و هندل کردن Loadingها برای هر درخواست کوچک.
3. تراژدی Serialization: تبدیل آبجکتهای C# به JSON، فرستادن به کلاینت و دوباره پارز کردن آنها در JS فقط کافی بود نام یک پراپرتی را در دیتابیس عوض کنید تا کل سیستم فرانتاِند شما بدون هیچ خطایی در زمان کامپایل، از کار بیفتد.
جادوی Blazor وارد میشود
Blazor Server آمد تا این مثلث را نابود کند. تصور کنید دکمهای دارید که قرار است موجودی انبار را کم کند. در Blazor، شما مستقیماً روی رویداد `@onclick` دکمه، متد سیشارپ خود را صدا میزنید. نه ایجکسی در کار است، نه آدرس API و نه تبدیل مدلی. **همه چیز در خانه داتنت اتفاق میافتد.**
همه اینها با عملیات Rendering، یک binding ساده و event ها و component ها اتفاق میفتد.
Rendering یعنی بروزرسانی صفحه بدون رفرش شدن
Binding یعنی اتصال تگ های html بطور مستقیم به متغیرهای C#
Event یعنی اجرای یک متد سی شارپی در مقابل یک اقدام کاربر، بدون نیاز به جاوااسکریپت Component ها یعنی صفحات UI شامل html و C# و هر صفحه بارها، قابل استفاده هستن.
کالبدشکافی جادو؛ SignalR چگونه کار میکند؟
شاید بپرسید: «چطور ممکن است سیشارپ در مرورگر اجرا شود بدون اینکه جاوااسکریپت بنویسیم؟»
راز این جادو در SignalR نهفته است. وقتی کاربر صفحه Blazor Server را باز میکند، یک تونل امن و دائمی بین مرورگر و سرور برقرار میشود.
روند اجرای یک دستور در Blazor Server
1. کاربر روی دکمه کلیک میکند.
2. این «رویداد» از طریق تونل SignalR به سرور فرستاده میشود.
3. کد C# شما روی سرور اجرا میشود (با دسترسی کامل به دیتابیس و سرویسها).
4. Blazor تغییرات جدید را نسبت به قبل در HTML مقایسه میکند
5. فقط و فقط **بخشهای تغییر یافته** به صورت باینری و بسیار کمحجم به مرورگر برمیگردد.
6. مرورگر بدون رفرش شدن، آن بخش را آپدیت میکند.
امنیت کد
در فریمورکهایی مثل React یا Vue، کدهای بیزنس شما به مرورگر کلاینت دانلود میشود. هر کسی میتواند با یک Inspect ساده، منطق محاسبات شما را ببیند. در Blazor Server، **کد شما هرگز سرور را ترک نمیکند.** این یعنی امنیت مطلق منطق برنامه.
Blazor Server قهرمانِ بازار ایران می شود
اگر در فضای پروژههای شرکتی، سازمانی و استارتاپی ایران فعالیت کنید، یا بخواهید پیاده سازی نرم افزارهای تحت وب حسابداری تحت وب، CRMتحت وب، ERP ها و اتوماسیون های سازمانی را انجام دهید از این پس Blazor Server برای شما یک انتخاب نیست، یک ضرورت است.
عبور از پل؛ دعوت به دنیای جدید
برنامهنویس عزیز، دنیای توسعه وب در حال تغییر است. آن روزهایی که مجبور بودیم برای یک اعتبارسنجی Validation ساده، هم در سمت سرور کد بزنیم و هم در سمت کلاینت اسکریپت بنویسیم، به پایان رسیده است.
Blazor فقط یک فریمورک جدید نیست؛ یک سبک زندگی جدید برای توسعهدهندگان داتنت است. این تکنولوژی به ما اجازه میدهد دوباره روی «حل مسئله» تمرکز کنیم، نه روی «جنگیدن با ابزارها».
**نتیجه:** شما با سرعت C# کد میزنید، اما کاربر تجربهای مشابه یک اپلیکیشن حرفهای React یا Angular را دریافت میکند. این یعنی نهایتِ بهرهوری برای برنامهنویسی که نمیخواهد وقتش را تلف کند.
دانلود فایل پی دی اف


