سيناريوهات استخدام خادم Blazor والأداء في .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 ، وليس استبدالها. يمكنك الاستمرار في استخدام صفحات 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 vCPU ، 3.5 جيجابايت من الذاكرة) التعامل مع أكثر من 5000 مستخدم متزامن دون تقليل التأخير.

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

ما هو Blazor WebAssembly؟


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

تستضيف تطبيقات Blazor WebAssembly مكونات في مستعرض باستخدام وقت تشغيل .NET استنادًا إلى WebAssembly. مكونات التعامل مع أحداث واجهة المستخدم وتنفيذ منطق التقديم مباشرة في المتصفح. تستخدم تطبيقات Blazor WebAssembly معايير الويب المفتوحة فقط لتشغيل رمز عميل .NET دون الحاجة إلى أي مكونات إضافية للمستعرض أو ترقية التعليمات البرمجية. كما هو الحال مع تطبيقات 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. بالاشتراك مع عامل الخدمة ، يمكن أن يعمل 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؟


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

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

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

في المجموع


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

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


All Articles