معرفی Blazor Hybrid
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: دو دقیقه

همانطورکه با مطالعه‌ی سری آموزش Blazor تا به اینجا متوجه شده‌اید، Blazor دو نوع Web Assembly و Server را دارد:
  • در Blazor Web Assembly که UI با HTML / CSS زده می‌شود، کدهای C# .NET ای با کمک Web Assembly و داخل خود مرورگر اجرا می‌شوند. با کمک Blazor Web Assembly می‌توان محصولات PWA و SPA ایجاد نمود.
  • در Blazor Server که UI با HTML / CSS زده می‌شود، کدها در سرور اجرا و به وسیله‌ی Web Sockets، تعاملات UI ای از Browser به سرور ارسال و تغییرات UI ای از سرور به Browser ارسال می‌شوند. با کمک Blazor Server می‌توان محصولات SPA ایجاد نمود.
ولی دو نوع Blazor دیگر نیز وجود دارند:
  • Blazor Native Mobile Apps که در این روش از کامپوننت‌های Native موبایل استفاده می‌شود؛ نه عناصر HTML مانند h1 و div. با کمک Blazor Native Mobile Apps می‌توان برنامه‌های Native موبایل برای Android / iOS و برنامه‌های Desktop برای Windows ایجاد نمود.
  • Blazor Hybrid که در این روش UI با HTML / CSS بوده، ولی اجرای کدهای C# .NET داخل خود سیستم عامل و به صورت Native است. با کمک Blazor Hybrid می‌توان برنامه‌های موبایل برای Android / iOS و برنامه‌های Desktop برای Windows ایجاد نمود.
از Blazor Hybrid زمانی استفاده می‌کنیم که بخواهیم برنامه‌های موبایل را برای Android / iOS و برنامه‌های Desktop را برای ویندوز، با کمک HTML / CSS توسعه دهیم.

حال سوال اینجاست که این چه تفاوتی با ارائه یک PWA با Blazor Web Assembly دارد؟
تفاوت در نحوه‌ی اجرا شدن کدهای C# .NET است. در Blazor Web Assembly، کدها درون Sandbox خود Browser اجرا می‌شوند و طبیعتا محدود به امکانات خود ‌Browser هستند؛ برای مثال امکان خواندن Contactهای گوشی وجود ندارد.
همچنین هنوز نسخه‌ی AOT برای Blazor Web Assembly هنوز آماده نشده است و در ‌Blazor Hybrid چون اجرای C# .NET به صورت Native است، Performance خیلی خوبی دارد.
به علاوه، با اشتراک گذاری اصل کد بین Blazor Web Assembly و Blazor Hybrid می‌توان هم یک PWA / SPA داشت و هم آن را در Store‌ها پابلیش نمود که این به معنای جذب بیشتر مشتری است. این نسخه‌ی پابلیش شده روی Store، چون حاوی فایل‌های لازم، اعم از CSS و DLLها و... است، به محض دانلود، قابلیت استفاده دارد و لازم ندارد مجددا چیزی را از سرور دانلود کند. به واقع با این روش می‌توان حتی Offline mobile & desktop apps ایجاد نمود.

مستندات مایکروسافت برای ایجاد یک Blazor Hybrid app در اینجا قرار دارند. به علاوه یک Sample project را نیز در GitHub ارائه کرده‌ام که در قسمت Releases آن، یک apk برای Android deviceهای 64 بیتی نیز قرار داده شده‌است که می‌توانید آنرا تست کنید. باقی کدهایی که در پروژه نوشته می‌شوند، دقیقا مشابه همین مطالب سری آموزش Blazor است که احتمالا تا این لحظه آنها را مطالعه نموده‌اید.
  • #
    ‫۲ سال و ۹ ماه قبل، شنبه ۶ آذر ۱۴۰۰، ساعت ۰۲:۵۲
    سلام عرض شد یک سوال داشتم ، الان net maui Blazor app که در نسخه پیش نمایش Visual studio 2022 وجود داره همون  Blazor Native Mobile Apps  است که در متن بالا شما بهش اشاره کردید؟
    • #
      ‫۲ سال و ۸ ماه قبل، سه‌شنبه ۳۰ آذر ۱۴۰۰، ساعت ۲۳:۰۵
      طبق چیزی که من توی NET Conf 2021  دیدم درواقع  Blazor Hybrid  سومین آپشن توسعه اپلیکیشن از طریق Blazor هست بعد از Blazor WASM و Blazor Server که از این طریق میشه توی یه پروژه‌ی cross-platform برای تولید اپ‌های native هم از کامپوننت‌های native ارائه شده‌ی Xamarin.Forms استفاده کرد و هم از کامپوننت‌های خود Blazor یا همون HTML. به همین دلیل بهش Hybrid گفته میشه.  همونطور که شما هم اشاره کردین در حال حاضر از طریق قالب پروژه‌ی NET MAUI Blazor APP توی ویژوال استادیو میشه این اپ‌ها رو توسعه داد.

      البته این مطلب برای 7 ماه پیش هست و از اونجایی که آقای مرادی تو این حوزه سرمایه گذاری کرده خوشحال میشم مطلب رو آپدیت کنن یا توضیحات بیشتری در این زمینه به ما بدن.
      از جمله اینکه چه نکات و نیازمندی هایی باعث انتخاب بین NET MAUI APP و  NET MAUI Blazor APP میشه و با توجه به دسترسی به کامپوننت‌های native و امکان دریافت خروجی برای همه‌ی پلتفرم‌ها شامل وب، موبایل و دسکتاپ در  NET MAUI Blazor APP چرا باید سراغ  NET MAUI APP بریم؟

      • #
        ‫۲ سال و ۸ ماه قبل، سه‌شنبه ۳۰ آذر ۱۴۰۰، ساعت ۲۳:۱۴
        ببینید NET MAUI App که از اساس با Xaml کار می‌کنه و البته Native UI محسوب می‌شه

        Blazor Hybrid یا همون NET MAUI Blazor App راهکار Blazor هست که HTML/CSS برای UI استفاده می‌شه، ولی C# .NET اش دسترسی کامل به سیستم عامل داره (بر خلاف Blazor Web Assembly که محدود به Sandbox مرورگر هست)

        پس با Blazor Web Assembly & Server می‌تونیم PWA / SPA / Web Site داشته باشیم و طبیعتا محدود به Sandbox مرورگر هست
        با Blazor Hybird هم Android / iOS / Windows app داریم که دسترسی به امکانات سیستم عامل هست که UI با HTML / CSS زده می‌شه

        یا Blazor Native شما دیگه UI تون HTML/CSS نیست و برای داشتن TextBox به جای input type=text، از Entry استفاده می‌کنید برای مثال که پشت صحنه مپ می‌شه به کنترل‌های Native در Android / iOS / Windows

        توصیه من این هست که Blazor رو به صورت Multi Mode تنظیم کنید، به صورتی که UI رو با HTML / CSS بزنید، و هم خروجی Android بگیرید و هم iOS و Web و ویندوز
        برای درک بهتر این مسئله می‌تونید وبینارم رو در رابطه با 
        what's new in dotnet 6  ببینید