Blazor Server در مقابل Blazor WebAssembly
Blazor Server کد C# را روی سرور اجرا میکند و تغییرات UI را از طریق یک اتصال SignalR دائمی به مرورگر میفرستد، در حالی که Blazor WebAssembly کل برنامه را بهصورت باینری .NET در خود مرورگر دانلود و اجرا میکند و بعد از بارگذاری اولیه هیچ وابستگی دائمی به سرور ندارد.
| ویژگی | Blazor Server | Blazor WebAssembly |
|---|---|---|
| محل اجرای منطق | سرور | مرورگر (WASM) |
| نیاز به اتصال دائمی | بله (SignalR) | فقط بار اولیه |
| پشتیبانی آفلاین | ندارد | دارد |
| حجم دانلود اولیه | کم | زیاد (Runtime .NET) |
کِی از Blazor Server استفاده کنیم؟
وقتی میخواهید بار اولیه سبک و زمان بارگذاری سریع داشته باشید و برنامه همیشه به یک اتصال پایدار اینترنت دسترسی دارد.
کِی از Blazor WebAssembly استفاده کنیم؟
وقتی میخواهید برنامه بهصورت آفلاین یا PWA کار کند، به مقیاسپذیری سرور بدون نگرانی از تعداد اتصالات SignalR نیاز دارید.
مثال Blazor Server
// Blazor Server: منطق روی سرور اجرا میشود
// و فقط تغییرات UI از طریق SignalR ارسال میشود
<Router AppAssembly="@typeof(Program).Assembly" />
مثال Blazor WebAssembly
// Blazor WebAssembly: کل .NET Runtime
// در مرورگر (WASM) دانلود و اجرا میشود
dotnet new blazorwasm -o MyApp
اشتباه رایج
اشتباه رایج استفاده از Blazor Server برای برنامهای با کاربران زیاد و بدون برنامهریزی برای مقیاسپذیری اتصالات SignalR است؛ هر کاربر یک اتصال دائمی مصرف میکند و روی سرورهای پرترافیک میتواند منابع را بهسرعت مصرف کند.
جمعبندی
برای بار اولیه سبک و اتصال شبکه پایدار از Blazor Server و برای عملکرد آفلاین یا کاهش بار سرور از Blazor WebAssembly استفاده کنید.
