دليل القرار العملي Blazor
Blazor: خادم أم WebAssembly أم مختلط؟
عمليًا، يعد Blazor مفيدًا عندما تعرف العمل الذي يبقى على الخادم، والعمل الذي ينتقل إلى المتصفح، وعناوين URL التي يجب أن تكون موجودة كروابط HTML حقيقية.
عمليًا، يتخطى هذا الدليل إصدار الكتيب. وهو يركز على المقايضات التي عادةً ما تفاجئ الفرق لاحقًا: ذاكرة الخادم، والاتصالات المباشرة، وزمن الوصول، وحجم الحمولة، وتحسين محركات البحث، والتوجيه متعدد اللغات.
قبل اختيار وضع التقديم
ما هو بليزر في الواقع Blazor
عمليًا، Blazor هو إطار مكونات Microsoft لتطبيقات الويب .NET. يمكنك إنشاء واجهة المستخدم من مكونات Razor، وكتابة معظم منطق التفاعل في C#، والسماح لـ ASP.NET Core بعرض تلك المكونات على الخادم، أو في WebAssembly، أو داخل غلاف التطبيق الأصلي.
عمليًا، لقد نشأت من أفكار ASP.NET القديمة. حاولت نماذج الويب إخفاء الويب خلف عناصر تحكم الخادم. قامت MVC وRazor Pages بإنشاء منظف HTML للاستجابة للطلب. يضيف Blazor مكونات تفاعلية قابلة لإعادة الاستخدام، لكنه لا يجعل MVC أو Razor Pages قديمة بالنسبة لصفحات ونماذج المحتوى البسيطة.
قامت نماذج الويب وMVC وصفحات Razor بحل مشكلات مختلفة Razor Pages
عمليًا، كانت نماذج الويب مثمرة ولكنها ثقيلة ومفيدة. توفر MVC وRazor Pages HTML أكثر نظافة ومعالجة أبسط للطلبات. تظل جيدة عندما تقرأ الصفحة البيانات في الغالب، وتنشر نموذجًا، وترجع HTML.
تحافظ المكونات على منطق واجهة المستخدم بالقرب من العلامات
عمليًا، يمكن أن يحتوي مكون Razor على العلامات والمعلمات والأحداث والتحقق من الصحة والخدمات المحقونة والحالة المحلية. يعد ذلك مفيدًا للوحات المعلومات والمحررين والمعالجات والشبكات والأدوات التي تتغير فيها الصفحة دون إعادة تحميل كاملة.
يتيح لك .NET الحديث مزج أوضاع العرض
عمليًا، يمكن لتطبيقات Blazor الأحدث أن تجمع بين HTML الثابت المقدم من الخادم والمكونات التفاعلية. وهذا مهم لأن إحدى الصفحات قد تحتاج إلى محتوى قابل للزحف، بينما يحتاج جزء آخر إلى مكون مباشر.
فهرس المحتويات
ابدأ هنا
النسخة المختصرة المفيدة
عمليًا، Blazor ليست بنية واحدة. إنه نموذج مكون واحد مع العديد من أوضاع العرض. يعتمد الاختيار الصحيح بشكل أقل على بناء الجملة وأكثر على المكان الذي توجد فيه الحالة وزمن الوصول والذاكرة والارتباطات القابلة للزحف.
خادم Blazor ذو حالة
عمليًا، يمكن أن يبدو الأمر سريعًا عند التحميل الأول، لكن الخادم يحتفظ بالدوائر الحية. قم بتخطيط الذاكرة، وإعادة توصيل السلوك، والتوسع قبل نمو حركة المرور.
يدفع WebAssembly مقدمًا
عمليًا، فهو يزيل دوائر الخادم المباشرة، لكن الزيارة الأولى تؤدي إلى تنزيل وقت التشغيل والتطبيق. ذاكرة التخزين المؤقت، والتشذيب، والعرض المسبق مهمة.
الهجين هو قرار المنتج
عمليًا، استخدم Hybrid عندما يحتاج التطبيق حقًا إلى سطح مكتب أو جهاز محمول. بالنسبة للمحتوى العام، استخدم عرض الويب وعناوين URL الحقيقية.
Blazor Server
يحافظ Blazor Server على العمل حيًا بين النقرات
عمليًا، خادم Blazor ليس صفحة استجابة لطلبات عادية عديمة الحالة. تحصل علامة تبويب المتصفح المتصلة على دائرة. يحتفظ الخادم بحالة المكون والخدمات المحددة لتلك الدائرة أثناء اتصال المستخدم، وغالبًا ما يكون ذلك لفترة قصيرة لإعادة الاتصال بعد قطع الاتصال.
الذاكرة تنمو مع الدوائر النشطة
عمليًا، تحتوي كل علامة تبويب متصلة على دائرة. يمكن أن تظل حالة المكون والخدمات المحددة وحالة التحقق من الصحة وعمل واجهة المستخدم المعلق في الذاكرة حتى تنتهي الدائرة. يجب أن تحسب اختبارات التحميل عدد المستخدمين النشطين، وليس فقط الطلبات في الثانية.
يصبح الكمون جزءًا من واجهة المستخدم
عمليًا، قد تنتقل النقرة على الزر أو حدث الإدخال أو تفاعل الشبكة إلى الخادم والعودة. قم بالاستضافة بالقرب من المستخدمين وتجنب مكونات الدردشة عندما يكون الجمهور منتشرًا عبر المناطق.
التوسع يحتاج إلى خطة
عمليًا، غالبًا ما تحتاج مثيلات التطبيق المتعددة إلى جلسات ثابتة، أو لوحة الكترونية معززة SignalR، أو خدمة Azure SignalR، أو تصميم حالة دقيق. وإلا فإن عمليات إعادة الاتصال والدوائر الحية يمكن أن تهبط في الحالة الخاطئة.
مناسبا جيدا: المستخدمين الخاضعين للرقابة
عمليًا، يعد Blazor Server هو الأقوى بالنسبة للأدوات المعتمدة وشاشات الإدارة ولوحات المعلومات والتطبيقات الداخلية حيث يُعرف المستخدمون وزمن الوصول وقدرة الاستضافة.
Blazor WebAssembly
يقوم WebAssembly بنقل التكلفة إلى التحميل الأول
عمليًا، يقوم Blazor WebAssembly بإزالة دوائر الخادم، لكنه لا يزيل التكلفة. يجب أن يقوم المتصفح بتنزيل وقت تشغيل .NET والتجميعات وموارد الترجمة وأصول التطبيق قبل أن تصبح التجربة سريعة. يمكن أن تكون الزيارات المتكررة أمرًا جيدًا لأن التخزين المؤقت يساعد. الزيارات الأولى تحتاج إلى رعاية.
التحميل الأول هو الضريبة
عمليًا، يقوم المتصفح بتنزيل وقت تشغيل .NET وتجميعات التطبيقات والموارد والأصول الثابتة. التشذيب يساعد. يمكن أن يؤدي التجميع المسبق إلى تحسين العمل المثقل بوحدة المعالجة المركزية (CPU) ولكنه غالبًا ما يزيد حجم التنزيل.
الأسرار لا يمكن أن تعيش في العميل
عمليًا، يتم تشغيل تطبيق WebAssembly في متصفح المستخدم. تعامل معها مثل أي واجهة أمامية عامة: احتفظ بالأسرار على الخادم، وقم بحماية واجهات برمجة التطبيقات، وافترض إمكانية فحص رمز العميل.
يحتاج تحسين محركات البحث إلى محتوى معروض
عمليًا، بالنسبة للمقالات العامة وصفحات المنتجات والصفحات المقصودة، لا تعتمد على غلاف فارغ يصبح مفيدًا فقط بعد بدء WebAssembly. استخدم العرض من جانب الخادم، أو العرض المسبق، أو العرض الثابت، أو مسار محتوى منفصل.
مناسب تمامًا: التطبيقات غير المتصلة بالإنترنت أو التطبيقات كثيفة الاستخدام للعملاء
عمليًا، يعمل WebAssembly بشكل جيد عندما يعود المستخدمون كثيرًا، أو يحتاجون إلى سلوك دون الاتصال بالإنترنت، أو يقومون بعمل ثقيل من جانب العميل حيث تكون رحلة ذهابًا وإيابًا للخادم أسوأ.
الهجين وعرض الويب
الهجين مخصص للتطبيقات، وليس للصفحات المقصودة العامة
عمليًا، يعد Blazor Hybrid مفيدًا عندما يريد فريق .NET إعادة استخدام المكونات داخل تطبيق سطح المكتب أو الهاتف المحمول. يتم تشغيله في غلاف أصلي من خلال WebView، بحيث يكون قريبًا من الملفات المحلية وواجهات برمجة التطبيقات الخاصة بالجهاز ونشر المؤسسة. إنه ليس اختصارًا لمواقع الويب التي تركز على تحسين محركات البحث.
- عمليًا، استخدم Hybrid عندما تحتاج إلى الوصول إلى الملفات المحلية أو واجهات برمجة تطبيقات الأجهزة أو نشر سطح المكتب أو حزم الأجهزة المحمولة.
- عمليًا، لا تختر Hybrid فقط لإعادة استخدام مكونات الويب. يضيف الغلاف الأصلي أعمال التحديث والتخزين والتوقيع والدعم.
- بالنسبة إلى تحسين محركات البحث (SEO) وعناوين URL العامة القابلة للمشاركة، عادةً ما يكون Hybrid هو السطح الخطأ.
التوجيه متعدد اللغات
يجب أن تكون الروابط الواعية بالثقافة روابط حقيقية
عمليًا، يجب ألا يقوم موقع Blazor متعدد اللغات ببناء التنقل اللغوي فقط في معالجات النقر أو JavaScript بعد أن تصبح الصفحة تفاعلية. تحتاج محركات البحث والمستخدمون إلى علامات ربط حقيقية في HTML الأولي، مع قيم href مستقرة وعناوين URL الأساسية وبيانات hreflang.
- عمليًا، استخدم روابط الصفحة المركزية والمساعدين بدلاً من السلاسل المصممة يدويًا مثل مسار الشرطة المائلة.
- عمليًا، عرض روابط اللغة كعلامات ربط ذات قيم href أثناء عرض HTML الأولي.
- حافظ على مزامنة عناوين URL الأساسية وعناوين URL hreflang والتنقل المرئي باللغة.
- عمليًا، تجنب إخفاء الروابط المهمة خلف معالجات onclick أو JavaScript المؤجلة أو حالة Blazor التفاعلية فقط.
دليل القرار
اختر حسب عنق الزجاجة الذي تقبله
عمليًا، يقوم كل وضع عرض بنقل الضغط إلى مكان مختلف. اختر الضغط الذي يمكنك قياسه واستضافته وشرحه للفريق.
عندما يكون التحميل الأول وتكامل الواجهة الخلفية لـ .NET أكثر أهمية
عمليًا، اختر Blazor Server للتطبيقات المعتمدة التي يتم التحكم فيها حيث تكون ذاكرة الخادم والاتصالات المباشرة ووقت الاستجابة الإقليمي تكاليف تشغيل مقبولة.
عندما يكون عمل العميل والسلوك خارج الإنترنت أكثر أهمية
عمليًا، اختر WebAssembly عندما تكون الزيارات المتكررة أو التخزين المؤقت أو الاستخدام دون اتصال أو عمل وحدة المعالجة المركزية المحلية أكثر أهمية من أصغر عملية تحميل أولية.
عندما يكون المنتج تطبيقًا أصليًا حقًا
عمليًا، اختر Hybrid عندما ينتمي التطبيق إلى سطح المكتب أو الهاتف المحمول ويحتاج إلى التكامل المحلي أكثر من الوصول إلى الويب العام.
عندما يكون الموقع في الغالب وثائق ونماذج
عمليًا، غالبًا ما تكون صفحات ASP.NET Core MVC أو Razor الكلاسيكية أبسط بالنسبة للمواقع ذات المحتوى الثقيل والوثائق العامة والنماذج ذات التفاعل المحدود.
القسم المرجعي
اقرأ هذه التالي عندما تقوم ببناء هذا بشكل حقيقي
عمليًا، تكون هذه المراجع مفيدة بعد قرار التصميم، لأنها تغطي الأجزاء التي تجعل صفحة Blazor موثوقة في الإنتاج: البيانات الوصفية، وروابط اللغة، والاستضافة، وواجهة المستخدم القابلة لإعادة الاستخدام.
عمليًا، استخدم هذا عندما تحتاج كل صفحة إلى عنوان ووصف ورسم بياني مفتوح ومخرجات JSON-LD متسقة.
روابط ثقافية صديقة لـ SEOعمليًا، استخدم هذا عندما يحتاج التوجيه متعدد اللغات إلى روابط حقيقية قابلة للزحف، ومسارات ثقافية مستقرة، ومخرجات hreflang الصحيحة.
استضافة Blazor على UpCloudعمليًا، استخدم هذا عندما يحتاج تطبيق Blazor Server إلى VPS وNginx وTLS وsystemd وسجلات ونسخ احتياطية وعمليات نشر متكررة.
TablerForNetعمليًا، استخدم هذا عندما تكون القيمة هي واجهة المسؤول وجداول البيانات والنماذج وشاشات لوحة المعلومات بدلاً من صفحة التسويق.
Blazorعمليًا، استخدم مركز Blazor عندما تريد الأدلة ذات الصلة في مكان واحد قبل اختيار تفاصيل التنفيذ التالية.
FAQ
الأسئلة المتكررة
إجابات على أسئلة Blazor الشائعة
لماذا يحتاج خادم Blazor إلى ذاكرة أكبر من MVC؟
عمليًا، يمكن لـ MVC إنهاء الطلب وتحرير معظم حالات الطلب. يحتفظ Blazor Server بدائرة لكل علامة تبويب متصفح متصلة، بحيث تظل حالة المكونات والخدمات المحددة على قيد الحياة بين النقرات.
هل يمكنني تشغيل Blazor Server على مثيلات تطبيق متعددة؟
عمليًا، نعم، ولكن خطط لذلك عمدا. تحتاج الدوائر الحية واتصالات SignalR إلى توجيه مستقر، ولوحة الكترونية معززة أو خدمة SignalR مُدارة، وحالة التطبيق التي تبقى على قيد الحياة لإعادة الاتصال بشكل صحيح.
هل يمكن أن يكون Blazor WebAssembly صديقًا لكبار المسئولين الاقتصاديين؟
عمليًا، نعم، ولكن ليس عن طريق شحن صدفة فارغة وانتظار انتظار الزاحف. تحتاج الصفحات العامة إلى عرض HTML وبيانات التعريف والروابط الأساسية والبيانات المنظمة قبل أو أثناء الاستجابة الأولى.
كيف ينبغي بناء روابط Blazor متعددة اللغات؟
عمليًا، استخدم تعريفات المسار المركزي واعرض علامات ربط حقيقية لكل ثقافة. حافظ على محاذاة الروابط المرئية وعناوين URL الأساسية وبيانات hreflang حتى يتمكن المستخدمون وبرامج الزحف من رؤية بنية اللغة نفسها.