بلیزر (نرم‌افزار آزاد)

"این مقاله در حال ترجمه از ویکی انگلیسی است

لطفا حذف نشود." **بلِیزِر** (Blazor) یک چارچوب وب رایگان و متن‌باز است که به توسعه‌دهندگان امکان می‌دهد تا با استفاده از سی‌شارپ و اچ‌تی‌ام‌ال، رابط کاربری تحت وب مبتنی بر کامپوننت ایجاد کنند. این چارچوب توسط مایکروسافت به عنوان بخشی از چارچوب برنامه‌های وب ASP.NET Core توسعه داده می‌شود.

از بلِیزِر می‌توان برای توسعه برنامه‌های تک‌صفحه‌ای، برنامه‌های موبایل و برنامه‌های رندر شده در سمت سرور با استفاده از فناوری‌های دات‌نت استفاده کرد.

## تاریخچه
در سال ۲۰۱۷، در کنفرانس *[[NDC Oslo]]*، *استیو ساندرسون*، مهندس نرم‌افزار در مایکروسافت، یک چارچوب آزمایشی برای توسعهٔ برنامه‌های وب سمت کلاینت با دات‌نت را معرفی کرد که آن را «بلِیزِر» نامید. این دمو شامل یک برنامهٔ تعاملی بود که در مرورگر با استفاده از وب‌اسمبلی اجرا می‌شد و محیط توسعهٔ اولیه‌ای در ویژوال استودیو داشت. ساندرسون نشان داد که چگونه می‌توان با استفاده از سی‌شارپ و نحو ریزور، کامپوننت‌های تعاملی ساخت. این برنامه سپس به اسمبلی‌های دات‌نت کامپایل می‌شد که روی یک زمان‌اجرای سبک‌وزن متن‌باز شخص ثالث به نام *DotNetAnywhere* که به وب‌اسمبلی کامپایل شده بود، اجرا می‌شد.

نام «بلِیزِر» (Blazor) —‌ همان‌طور که استیو ساندرسون توضیح داد—‌ ترکیبی از دو واژهٔ «Browser» (مرورگر) و «Razor» (ریزور، از نحو ریزور مورد استفاده) است.

### پذیرش و انتشار رسمی
بلِیزِر به عنوان یک پروژهٔ رسمی متن‌باز توسط مایکروسافت پذیرفته شد و در سال ۲۰۱۸، به عنوان بخشی از دات‌نت کور نسخهٔ ۳٫۱، **Blazor Server** به صورت عمومی منتشر شد. این نسخه امکان توسعهٔ برنامه‌های وب تعاملی با محوریت سرور را فراهم می‌کرد که مرورگر کلاینت را از طریق وب‌ساکت به‌روزرسانی می‌کرد. مدت کوتاهی پس از آن، **Blazor WebAssembly** منتشر شد. برخلاف نمونهٔ اولیه، این نسخه از زمان‌اجرای Mono روی وب‌اسمبلی استفاده می‌کرد که همان زمان‌اجرایی است که برای توسعهٔ برنامه‌های موبایل با دات‌نت MAUI (پیش‌تر زامارین) استفاده می‌شود.

کد منبع بلِیزِر در ابتدا در مخزن جداگانه‌ای در گیت‌هاب قرار داشت، تا اینکه در مخزن یک‌پارچهٔ ASP.NET Core ادغام شد. از آن زمان تاکنون، توسعهٔ این پروژه از همانجا ادامه یافته است.

### تغییرات نسخه‌ها
با انتشار دات‌نت ۵، بلِیزِر دیگر در اینترنت اکسپلورر و نسخهٔ قدیمی مایکروسافت اج کار نمی‌کرد.

در سال ۲۰۲۳، با انتشار دات‌نت ۸، بلِیزِر در سمت سرور تغییرات اساسی‌ای را تجربه کرد که امکان رندر صفحات در سمت سرور (SSR) بدون قابلیت تعاملی ذاتی) را فراهم می‌ساخت. این تغییر بلِیزِر را به جایگزینی برای صفحات ریزور MVC تبدیل کرد. با این تغییر، توسعه‌دهندگان می‌توانند به ازای هر کامپوننت (یا صفحه) انتخاب کنند که آیا باید تعاملی باشد یا خیر، و اینکه آیا باید در سرور اجرا شود یا در مرورگر با استفاده از وب‌اسمبلی. این موارد به عنوان «حالت‌های رندر تعاملی» شناخته می‌شوند.

## کامپوننت‌ها
کامپوننت‌ها در بلِیزِر به صورت رسمی با نام **کامپوننت‌های ریزور** شناخته می‌شوند.

### ساختار کامپوننت
یک کامپوننت ریزور عمدتاً از اچ‌تی‌ام‌ال تشکیل شده که با نحو ریزور ترکیب می‌شود. این نحو امکان استفاده از سی‌شارپ را به صورت درون‌خطی فراهم می‌کند تا رندرینگ را کنترل نماید.

مدل کامپوننت در بلِیزِر تضمین می‌کند که هنگامی که وضعیت کامپوننت تغییر می‌کند (معمولاً در پاسخ به اقدامات کاربر)، نشانه‌گذاری رندر شده به‌روزرسانی می‌شود.

### روش‌های توسعه
اگرچه هم نشانه‌گذاری و هم کد سی‌شارپ می‌توانند در یک فایل `.razor` قرار گیرند، اما امکان استفاده از یک فایل جداگانه به نام **کد پشتیبان** (code-behind) با یک کلاس جزئی نیز وجود دارد.

### فرآیند کامپایل
کامپوننت‌ها به کلاس‌های دات‌نت کامپایل می‌شوند. اچ‌تی‌ام‌ال و نشانه‌گذاری ریزور یک کامپوننت به کدی تبدیل می‌شود که یک **درخت رندر** می‌سازد و این درخت در نهایت رندرینگ نهایی را هدایت می‌کند.

## نمونه کد
کد زیر یک نمونه از فریم ورک بلیزر می باشد که کاربر با کلیک روی یک کلید، می تواند مقدار یک متغیر را افزایش دهد:


```html
<h1>Counter</h1>

<p>Count: @count</p>

<button @onclick="Increment">Increment</button>

@code 
{
    private int count = 0;

    private void Increment()
    {
        count++;
    }
}
```


## مدل‌های میزبانی
برنامه‌های بلِیزِر را می‌توان به روش‌های مختلفی میزبانی کرد. در ادامه مدل‌های میزبانی در نسخهٔ دات‌نت ۸ آمده‌است.

### برنامه وب بلِیزِر (سرور)
برنامه‌ای مبتنی بر سرور که به عنوان بخشی از یک برنامهٔ ASP.NET Core اجرا می‌شود.

### رندرینگ ایستای سمت سرور (SSR)
به‌صورت پیش‌فرض، کامپوننت‌ها به‌صورت اچ‌تی‌ام‌ال ایستا توسط سرور رندر می‌شوند و قابلیت تعاملی ندارند. با تنظیم **حالت رندر** می‌توان برای هر کامپوننت قابلیت تعاملی فعال کرد.

این روش معادل روشی است که نمایش‌های MVC و صفحات ریزور رندر می‌شوند.

### حالت‌های رندر
منبع: 

در دات‌نت ۸، بلِیزِر مفهوم **حالت‌های رندر** را معرفی کرد که تعیین می‌کند آیا کامپوننت‌های ریزور تعاملی هستند و چه چیزی این تعامل را کنترل می‌کند.

حالت رندر در سلسله مراتب کامپوننت‌ها از والد بالاترینی که حالت رندر مشخصی دارد به ارث می‌رسد. کامپوننت‌های فرزند نمی‌توانند این حالت را بازنویسی کنند، مگر اینکه حالت رندرشان به صورت پیش‌فرض روی **سرور ایستا** تنظیم شده باشد.

* **سرور ایستا** - کامپوننت به صورت ایستا در سرور رندر می‌شود و هیچ تعاملی ندارد. این حالت پیش‌فرض است.
* **سرور تعاملی** - کامپوننت در حالت تعاملی روی سرور اجرا می‌شود. تعامل توسط سرور کنترل شده و تغییرات از طریق وب سوکت و با استفاده از سیگنالار به کلاینت ارسال می‌شود.
* **وب‌اسمبلی تعاملی** - کامپوننت در حالت تعاملی در مرورگر و با استفاده از وب‌اسمبلی اجرا می‌شود.
* **تعاملی خودکار** - در ابتدا کامپوننت در حالت سرور تعاملی بارگیری می‌شود و همزمان بستهٔ بلِیزِر دانلود می‌شود. در بازدیدهای بعدی از حالت وب‌اسمبلی تعاملی در سمت کلاینت استفاده می‌شود.

### پیش‌رندرینگ
کامپوننت‌های تعاملی قبل از فعال شدن در کلاینت، ابتدا در سرور پیش‌رندر می‌شوند. این رفتار به‌صورت پیش‌فرض فعال است اما می‌توان آن را غیرفعال کرد.

### پیمایش پیشرفته
این ویژگی پیمایش در سایت‌های ایستا را بسیار روان‌تر می‌کند، به گونه‌ای که حس یک برنامه تک‌صفحه‌ای (SPA) را القا می‌کند.

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

### وب‌اسمبلی (مستقل)
این مدل یک برنامهٔ تعاملی مستقل مبتنی بر وب‌اسمبلی است که در مرورگر کلاینت اجرا می‌شود.

با ورود به برنامه در مرورگر، بستهٔ برنامه دانلود شده و درون محیط حفاظت‌شدهٔ مرورگر اجرا می‌شود.

برنامه‌های وب‌اسمبلی را می‌توان به برنامهٔ وب پیشرونده (PWA) نیز تبدیل کرد.

پیش از دات‌نت ۸، قالبی وجود داشت که در آن برنامهٔ بلِیزِر وب‌اسمبلی درون یک برنامهٔ ASP.NET Core حاوی APIهای وب میزبانی می‌شد. این قالب به نفع قالب برنامهٔ وب بلِیزِر حذف شد، اگرچه عملکرد آن هنوز پابرجاست.

### ترکیبی
اجازه می‌دهد برنامه‌های بلِیزِر درون یک برنامهٔ بومی با استفاده از وب‌ویو اجرا شوند. رندرینگ در فرآیند میزبان انجام می‌شود و نیاز به وب سرور ندارد.

برنامه‌های ترکیبی می‌توانند در WPF یا برنامه‌های Windows Forms میزبانی شوند.

از این روش برای ساخت برنامه‌های موبایل بومی با بلِیزِر و استفاده از دات‌نت MAUI استفاده می‌شود.

### سرور (قدیمی)
هدف این مدل فعال کردن کامپوننت‌های تعاملی مبتنی بر سرور بود که تغییرات از طریق وب‌ساکت‌ها به کلاینت ارسال می‌شد.

کامپوننت‌ها درون یک صفحهٔ ریزور MVC رندر می‌شدند.

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

این مدل میزبانی به صورت رسمی با نام "بلِیزِر سرور" شناخته می‌شد.

در نسخه‌های جدید به نفع مدل «برنامهٔ وب بلِیزِر» منسوخ شده است.

## جستارهای وابسته

* asm.js - پیش‌ساز وب‌اسمبلی که امکان توسعه برنامه‌های وب سمت کلاینت با زبان‌های C یا C++ را فراهم می‌کرد
* گوگل نیتیو کلاینت - فناوری قدیمی گوگل (منسوخ شده) که امکان اجرای کد بومی در مرورگر را مستقل از سیستم عامل فراهم می‌کرد

## منابع

## مطالعه بیشتر

* انگستروم، جیمی (۲۰۲۱). *توسعه وب با بلِیزِر: راهنمای عملی برای توسعه‌دهندگان دات‌نت برای ساخت رابط‌های کاربری تعاملی با سی‌شارپ*. انتشارات پکت. شابک ۹۷۸−۱۸۰۰۲۰۸۷۲۸.
* هیمشوت، پیتر (۲۰۲۱). *مایکروسافت بلِیزِر: ساخت برنامه‌های تحت وب در دات‌نت ۶ و فراتر از آن*. انتشارات اپرس. شابک ۹۷۸−۱۴۸۴۲۷۸۴۴۴.
* رایت، توی (۲۰۲۱). *بلِیزِر وب‌اسمبلی با مثال: راهنمای پروژه‌محور برای ساخت برنامه‌های وب با دات‌نت، بلِیزِر وب‌اسمبلی و سی‌شارپ*. انتشارات پکت. شابک ۹۷۸−۱۸۰۰۵۶۷۵۱۱.
* سینتی، کریس (۲۰۲۲). *بلِیزِر در عمل*. انتشارات منینگ. شابک ۹۷۸−۱۶۱۷۲۹۸۶۴۶.

## پیوند به بیرون

*  
* ای‌اس‌پی‌دات‌نت کور در گیت‌هاب
* بلِیزِر اسکول - مستندات جامعه بلِیزِر
* دانشگاه بلِیزِر - مستندات مستقل بلِیزِر

رده:ای‌اس‌پی‌دات‌نت
رده:معرفی‌شده‌های مرتبط با رایانه در ۲۰۱۸ (میلادی)
رده:نرم‌افزارهای چندسکویی
رده:رابط‌های برنامه‌نویسی کاربرد مایکروسافت
رده:ابزارهای توسعه نرم‌افزار مایکروسافت
رده:نرم‌افزارهایی که از پروانه آپاچی استفاده می‌کنند
رده:نرم‌افزارهای ۲۰۱۸ (میلادی)
رده:متعلقات اینترنت بنیان‌گذاری‌شده در ۲۰۱۸ (میلادی)