Blazor Server في سيناريوهات .NET Core 3.0 والأداء

منذ إصدار Blazor Server مع .NET Core 3.0 الشهر الماضي ، شارك الكثير من الأشخاص حماستهم معنا بشأن القدرة على إنشاء واجهة مستخدم ويب من جانب العميل باستخدام .NET و C # فقط. في الوقت نفسه ، سمعنا أيضًا الكثير من الأسئلة حول ماهية Blazor Server ، وكيف يرتبط Blazor WebAssembly ، وما هي السيناريوهات التي يناسب Blazor Server. هل يجب أن تختار Blazor Server لاحتياجات واجهة المستخدم على الويب من جانب العميل ، أو تنتظر Blazor WebAssembly؟ يسعى هذا المنشور إلى الإجابة عن هذه الأسئلة ، وتقديم نظرة ثاقبة حول أداء Blazor Server على نطاق واسع ، وكيف نتصور تطور Blazor في المستقبل.

ما هو خادم بليزور؟


تستضيف تطبيقات Blazor Server مكونات Blazor على الخادم وتتعامل مع تفاعلات واجهة المستخدم عبر اتصال SignalR في الوقت الفعلي. أثناء تفاعل المستخدم مع التطبيق ، يتم إرسال أحداث واجهة المستخدم إلى الخادم عبر الاتصال الذي سيتم التعامل معه من خلال المكونات المختلفة التي يتكون منها التطبيق. عندما يتعامل مكون مع حدث واجهة المستخدم ، يتم تقديمه بناءً على حالته المحدثة. يقارن Blazor الناتج الذي تم تقديمه حديثًا مع ما تم تقديمه مسبقًا ويرسل التغييرات مرة أخرى إلى المتصفح ويطبقها على DOM.



نظرًا لأن تطبيقات Blazor Server تعمل على .NET Core على الخادم ، فإنها تتمتع بجميع مزايا التشغيل على .NET Core بما في ذلك الأداء والأدوات الرائعة في وقت التشغيل. يمكن لتطبيقات Blazor Server الاستفادة من النظام البيئي الكامل لمكتبات .NET Standard دون فرض قيود على المستعرض.

متى يجب استخدام Blazor Server؟


يمكّنك Blazor Server من إضافة واجهة مستخدم تفاعلية غنية إلى تطبيقات .NET الخاصة بك اليوم دون الحاجة إلى كتابة JavaScript. إذا كنت بحاجة إلى تفاعل تطبيق من صفحة واحدة في تطبيق .NET الخاص بك ، فإن Blazor Server يعد حلاً رائعًا.

يمكن استخدام Blazor Server لكتابة تطبيقات جديدة تمامًا أو لاستكمال تطبيقات MVC و Razor Pages الحالية. ليست هناك حاجة لإعادة كتابة منطق التطبيق الحالي. تم تصميم Blazor للعمل مع MVC و Razor Pages ، وليس استبدالهما. يمكنك الاستمرار في استخدام صفحات MVC و Razor لاحتياجات تقديم الخادم أثناء استخدام Blazor لتفاعلات واجهة المستخدم من جانب العميل.

يعمل Blazor Server بشكل أفضل مع السيناريوهات التي يكون لديك فيها اتصال شبكة موثوقة منخفضة زمن الوصول ، والذي يتحقق عادة عندما يكون العميل والخادم جغرافياً في نفس القارة. التطبيقات التي تتطلب تحديثات فورية عالية الدقة للغاية في كل طفرة صغيرة في الماوس ، مثل الألعاب في الوقت الحقيقي أو تطبيقات الرسم ، ليست مناسبة بشكل جيد لـ Blazor Server. نظرًا لأن تطبيقات Blazor Server تتطلب اتصال شبكة نشط ، فإن السيناريوهات غير المتصلة غير مدعومة.

يعد Blazor Server مفيدًا أيضًا عندما تريد إلغاء تحميل العمل من العميل إلى الخادم. تتطلب تطبيقات Blazor Server تنزيلًا صغيرًا فقط لتأسيس الاتصال بالخادم ومعالجة تفاعلات واجهة المستخدم. كل العمل الشاق لتشغيل منطق التطبيق وتقديم واجهة المستخدم يتم بعد ذلك على الخادم. هذا يعني أن تطبيقات Blazor Server يتم تحميلها بسرعة حتى مع نمو وظائف التطبيق. نظرًا لأن جانب العميل من تطبيق Blazor Server ضعيف جدًا ، فهو يعد حلاً رائعًا للتطبيقات التي تحتاج إلى تشغيلها على أجهزة منخفضة الطاقة.

باستخدام Blazor Server على نطاق واسع


يمكن لـ Blazor Server الانتقال من مجموعة داخلية صغيرة من تطبيقات الأعمال إلى تطبيقات الإنترنت الكبيرة. بينما كان .NET Core 3.0 لا يزال قيد المعاينة ، قمنا باختبار Blazor Server لمعرفة كيف تبدو خصائص مقياس خط الأساس الخاصة به. لقد وضعنا تطبيق Blazor Server قيد التحميل مع العملاء النشطين ورصدنا كمون تفاعلات المستخدم. في اختباراتنا ، يمكن لمثيل Standard_D1_v2 واحد على Azure (1 وحدة تحكم في وحدة التخزين ، ذاكرة بحجم 3.5 جيجابايت) التعامل مع أكثر من 5000 مستخدم متزامن دون أي تدهور في زمن الوصول.

تمت معالجة مثيل Standard_D3_V2 (4 وحدات معالجة فردية وذاكرة سعة 14 جيجابايت) لأكثر من 20.000 عميل متزامن. وكان عنق الزجاجة الرئيسي للتعامل مع مزيد من الحمل الذاكرة المتاحة. هل ترى هذا المستوى من المقياس في التطبيق الخاص بك؟ سيعتمد ذلك في جزء كبير منه على مقدار الذاكرة الإضافية التي يتطلبها التطبيق لكل مستخدم. ولكن بالنسبة للعديد من التطبيقات ، نعتقد أن هذا المستوى من التدريج معقول للغاية. نخطط أيضًا لنشر تحديثات إضافية على التحسينات في قابلية Blazor Server للتحجيم في الأسابيع المقبلة. لذلك ترقبوا!

ما هو Blazor WebAssembly؟


Blazor هو إطار عمل لواجهة المستخدم يمكن تشغيله في بيئات مختلفة. عندما تقوم ببناء مكونات واجهة المستخدم باستخدام Blazor ، فإنك تحصل على المرونة لاختيار كيف وأين يتم استضافتها وتشغيلها. بالإضافة إلى تشغيل مكونات واجهة المستخدم الخاصة بك على الخادم باستخدام Blazor Server ، يمكنك تشغيل هذه المكونات نفسها على العميل باستخدام Blazor WebAssembly. تعني هذه المرونة أنه يمكنك التكيف مع احتياجات المستخدمين وتجنب خطر الارتباط بنموذج استضافة تطبيق معين.

تستضيف Blazor WebAssembly مكونات في المستعرض باستخدام وقت تشغيل .NET المستند إلى WebAssembly. تعالج المكونات أحداث UI وتنفذ منطق العرض الخاص بها مباشرةً في المستعرض. تستخدم تطبيقات Blazor WebAssembly معايير الويب المفتوحة فقط لتشغيل برنامج .NET code من جانب العميل ، دون الحاجة إلى أي ملحقات إضافية للمتصفح أو ترجمة الشفرة. تمامًا كما هو الحال مع تطبيقات Blazor Server ، يتعامل إطار عمل Blazor بين مقارنة الإخراج الذي تم تقديمه حديثًا مع ما تم تقديمه مسبقًا وتحديث DOM وفقًا لذلك ، ولكن مع Blazor WebAssembly ، تتم معالجة واجهة المستخدم من جانب العميل.



متى يجب علي استخدام Blazor WebAssembly؟


لا يزال Blazor WebAssembly قيد المعاينة ولم يعد جاهزًا للاستخدام بعد. إذا كنت تبحث عن حل جاهز للإنتاج ، فإن Blazor Server هو ما نوصي به.

بمجرد شحن Blazor WebAssembly (مايو 2020) ، سيمكن تشغيل مكونات Razor ورمز .NET في المستعرض على جهاز المستخدم. تساعد تطبيقات Blazor WebAssembly في إلغاء تحميل العمل من الخادم إلى العميل. يمكن لتطبيق Blazor WebAssembly الاستفادة من موارد حساب وذاكرة وتخزين جهاز العميل ، بالإضافة إلى الموارد الأخرى المتاحة من خلال واجهات برمجة التطبيقات القياسية للمستعرض.

لا تتطلب تطبيقات Blazor WebAssembly استخدام .NET على الخادم ويمكن استخدامها لإنشاء مواقع ثابتة. يعد تطبيق Blazor WebAssembly مجرد مجموعة من الملفات الثابتة التي يمكن استضافتها باستخدام أي حل لاستضافة المواقع الثابتة ، مثل صفحات GitHub أو Azure Static Website Hosting. عند دمجه مع أحد موظفي الخدمة ، يمكن أن يعمل تطبيق Blazor WebAssembly دون الاتصال بالإنترنت.

عند دمجها مع .NET على الخادم ، يمكّن Blazor WebAssembly تطوير شبكة مكدس كامل. يمكنك مشاركة التعليمات البرمجية والاستفادة من النظام البيئي .NET وإعادة استخدام مهاراتك والبنية التحتية .NET الموجودة لديك.

يؤدي تضمين وقت تشغيل .NET مع تطبيق الويب الخاص بك إلى زيادة حجم التطبيق ، مما سيؤثر على وقت التحميل. على الرغم من وجود مجموعة متنوعة من التقنيات لتخفيف ذلك (العرض المسبق على الخادم ، وتخزين HTTP المؤقت ، وربط IL ، وما إلى ذلك) ، فإن Blazor WebAssembly قد لا يكون الخيار الأفضل للتطبيقات الحساسة للغاية لحجم التنزيل ووقت التحميل.

تتطلب تطبيقات Blazor WebAssembly أيضًا مستعرضًا يدعم WebAssembly. يتم دعم WebAssembly بواسطة جميع المتصفحات الحديثة ، بما في ذلك المتصفحات المتنقلة وسطح المكتب. ومع ذلك ، إذا كنت بحاجة إلى دعم المتصفحات القديمة دون دعم WebAssembly ، فإن Blazor WebAssembly لا يناسبك.

تم تحسين Blazor WebAssembly لسيناريوهات تقديم واجهة المستخدم ، لكنه ليس جيدًا في الوقت الحالي لتشغيل أحمال عمل وحدة المعالجة المركزية المركزة. تستخدم تطبيقات Blazor WebAssembly اليوم مترجم .NET IL لتنفيذ تعليمات .NET البرمجية الخاصة بك ، والتي لا تتمتع بنفس الأداء مثل وقت تشغيل .NET الأصلي مع ترجمة JIT. نحن نعمل على معالجة هذا السيناريو بشكل أفضل في المستقبل عن طريق إضافة دعم لتجميع رمز .NET الخاص بك مباشرةً إلى WebAssembly بدلاً من استخدام مترجم.

يمكنك تغيير رأيك في وقت لاحق


بغض النظر عما إذا كنت تختار Blazor Server أو Blazor WebAssembly ، يمكنك دائمًا تغيير رأيك في وقت لاحق. تستخدم جميع تطبيقات Blazor نموذج مكون شائع ، مكونات Razor. يمكن استضافة نفس المكونات في تطبيق Blazor Server أو تطبيق Blazor WebAssembly. لذا ، إذا بدأت بنموذج استضافة Blazor ثم قررت فيما بعد أنك تريد التبديل إلى نموذج مختلف ، فإن القيام بذلك يكون صريحًا للغاية.

ما هو التالي لبلازور؟


بعد شحن Blazor WebAssembly ، نخطط لتوسيع Blazor لدعم ليس فقط تطبيقات الويب ، ولكن أيضًا تطبيقات الويب التقدمية (PWAs) والتطبيقات المختلطة وحتى التطبيقات الأصلية تمامًا.

  • Blazor PWAs: PWAs هي تطبيقات ويب تستفيد من أحدث معايير الويب لتوفير تجربة أكثر شبهاً بالوطن. يمكن أن تدعم PWAs السيناريوهات غير المتصلة بالإنترنت والإشعارات المباشرة وتكاملات نظام التشغيل ، مثل دعم تثبيت التطبيق على شاشتك الرئيسية أو قائمة Windows Start.
  • Blazor Hybrid: التطبيقات الهجينة هي تطبيقات أصلية تستخدم تقنيات الويب لواجهة المستخدم. من الأمثلة على ذلك تطبيقات Electron وتطبيقات الأجهزة المحمولة التي يتم عرضها لعرض الويب. لا تعمل تطبيقات Blazor Hybrid على WebAssembly ، ولكن بدلاً من ذلك تستخدم وقت تشغيل .NET أصليًا مثل .NET Core أو Xamarin. يمكنك العثور على عينة تجريبية لاستخدام Blazor مع Electron على GitHub.
  • Blazor Native: تقوم تطبيقات Blazor اليوم بتقديم HTML ، ولكن يمكن استبدال العارض لتقديم عناصر تحكم أصلية بدلاً من ذلك. يعمل تطبيق Blazor Native أصليًا على الأجهزة ويستخدم تجريد واجهة مستخدم شائع لتقديم عناصر تحكم أصلية لهذا الجهاز. هذا مشابه جدًا لكيفية عمل أطر مثل نماذج Xamarin أو React Native اليوم.

هذه الجهود الثلاثة كلها تجريبية حاليا. نتوقع أن يكون لدينا معاينات رسمية لدعم تطبيقات Blazor PWAs و Blazor Hybrid باستخدام Electron في الإطار الزمني .NET 5 (نوفمبر 2020). لا توجد خريطة طريق لدعم Blazor Native حتى الآن ، لكنها مجال نحقق فيه بنشاط.

ملخص


باستخدام .NET Core 3.0 ، يمكنك إنشاء واجهة مستخدم تفاعلية غنية من جانب العميل اليوم باستخدام Blazor Server. Blazor Server هو وسيلة رائعة لإضافة وظائف من جانب العميل إلى تطبيقات الويب الحالية والجديدة الخاصة بك باستخدام مهارات .NET الحالية والأصول. تم تصميم Blazor Server لتوسيع نطاق جميع احتياجات تطبيق الويب الخاص بك. لا يزال Blazor WebAssembly قيد المعاينة ، لكن من المتوقع أن يتم الشحن في مايو من العام المقبل. في المستقبل ، نتوقع مواصلة تطوير Blazor لدعم PWAs والتطبيقات المختلطة والتطبيقات المحلية. في الوقت الحالي ، نأمل أن تقوم بتجربة Blazor Server عن طريق تثبيت .NET Core 3.0 !

Source: https://habr.com/ru/post/ar473146/


All Articles