سؤال

أنا مطور ويب ذو خبرة في العديد من مداخن تكنولوجيا الويب المختلفة. أنا أعمل حاليا في .NET وأصبحت فضولية حول إعادة النشر الجزئية.

أنا أفهم ما هي وظيفة إعادة النشر الجزئية وكيفية العمل معها برمجيا، لكنني لا أحب استخدام التكنولوجيا التي لا أفهمها، كيف يتم تنفيذ عملية إعادة النشر الجزئية.

أفهم طلبات HTTP وطلبات غير متزامنة، والشيء الذي يعترض بي عن عونك الجزئي هو أنه يبدو أنه كلاهما.

ربما أنا فقط أفتقد شيئا ما، لكنني يبدو لي أن الطلب الجزئي يفعل كلاهما، أولا إطلاق طلب آخر غير متزامن ولكن يبدو أن المتصفح يدرك ومؤشر النشاط يبدأ في الدوران، والذي يحدث عادة خلال صفحة طلب HTTP يقدم - يجعل.

لذلك يمكن لأي شخص أن يسيطر على بعض الضوء على كيفية تطبيق Microsoft، على مستوى طلب HTTP، أو إعادة النشر الجزئية؟

هل كانت مفيدة؟

المحلول

من كيفية كتابة عون البريد الجزئي الخاص بك في ASP.NET 2.0:

في قلب الإنشاءات الخلفية الجزئية هو Xmlhttprequest، API DOM. يمكن استخدامه داخل لغة البرمجة النصية لمتصفح الويب، مثل JavaScript، لإرسال طلب HTTP مباشرة إلى خادم ويب دون الحاجة إلى إعادة تحميل الصفحة بأكملها ومعالجة الاستجابة من الخادم مرة أخرى داخل لغة البرمجة النصية. هذه البيانات، في شكل XML، يمكن بعد ذلك استخدامها لمعالجة عناصر الصفحة على جانب العميل.

عند النقر فوق الزر الموجود في صفحة ASPX، يتم تقديم طلب HTTP جانب العميل باستخدام API XMLHTPRequest. يتم التعامل مع هذا الطلب بواسطة httphandler على خادم الويب. يتلقى HTTHANDLER الطلب، ويعالجه، ويرسل الاستجابة إلى كائن XMLHTTP في صفحة ASPX. يستهلك كائن XMLHTTP بدوره الاستجابة ويشعر بتغييرات UI المناسبة دون المستعرض للقيام بالتحديث الكامل للصفحة.

لا يقوم برنامج UpdatePanel بتحديث عناصر التحكم فحسب، بل يقوم أيضا بتحديث قيمة ViewState مع تلك التي تم الحصول عليها من الخادم، بعد المعالجة.

نصائح أخرى

وأنا أعلم أن هذا السؤال قد تم الرد عليه بالفعل، لكنني لا أتفق مع الإجابة ...

في رأيي المتواضع، يتم إساءة استخدام مصطلح "إعادة النشر الجزئي" في المادة المذكورة أعلاه "كيفية كتابة عون البريد الجزئي الخاص بك في ASP.NET 2.0". وبعد في هذه المقالة، يوضح لك المؤلف كيفية إجراء مكالمة AJAX إلى httphandler. هذه عملية مختلفة جدا من إجراء مكالمات PartialPostBack في ASP.NET.

أعتقد أن هذا "الفرق" يحرز في (الإجابات أعلاه) بعد تعليق الفكر الذي ينص على ما يلي:

"لا يقوم برنامج UpdatePanel بتحديث عناصر التحكم فحسب، بل يقوم أيضا بتحديث قيمة ViewState مع تلك التي تم الحصول عليها من الخادم، بعد المعالجة."

في حين أن هذا التعليق النهائي - يوضح إلى حد ما، فإن تعريف "إعادة النشر الجزئي" باستخدام ASP.NET UpdatePanel ... لا يفسر ما هو الخطأ الجزئي (الذي، مرة أخرى، عملية مختلفة تماما عنها مكالمة AJAX العادية).

لتوضيح ...


Microsoft ASP.NET AJAX باستخدام UpdatePanel:
على المستوى الأساسي، يدعم Microsoft AJAX الطلبات غير المتزامنة عبر إعادة الإرسال الجزئي. تكرر أعصات إعادة التشغيل الجزئية من خلال دورة حياة الصفحة نفسها كإعادة إرسال صفحة كاملة متزامنة، ولكن يتم تحديث مناطق أو عناصر تحكم محددة فقط - وبالتالي تحقيق تقديم الصفحات الجزئية. وبعد تعتمد Microsoft ASP.NET AJAX على نمط اعتراضي لتوليد وتعامل مع عاج جزئي. عند التهيئة، تضيف مكتبات Microsoft ASP.NET AJAX JavaScript مجموعة من معالجات أحداث العميل لاعتراض المكالمات التي من شأنها أن تبدأ عادة بعد إعادة نشر صفحة كاملة. وظائف المعالج اعتراض مكالمات إعادة النشر من عناصر التحكم المسجلة، وإنشاء عون عاج جزئي، وعالج محتوى الاستجابة ثم تحديث محتوى الصفحة بشكل غير متزامن. نظرا لأن Microsoft ASP.NET AJAX مبني على بنية ASP.NET Postback الحالية، فإنه يستخدم التحقق من صحة الأحداث والحفاظ على حالة العرض في جميع أنحاء عملية إعادة النشر الجزئي. مكالمة AJAX العادية العادية الخاصة بك لا تفعل هذه الأشياء!

لوضعها قريبا ...

يستخدم Microsoft ASP.NET AJAX "عادي" AJAX إلى "ajax-ify"إنها صفحات وتحقيق التحديثات الجزئية ... وفي القيام بذلك، تقوم بتحديثها وتدير عرضها عدة مرات خلال مكالمة واحدة. هذا هو السبب في أنه يسمى "عون جزئي". وبعد في وقت لاحق، وهذا أيضا لماذا وصفوا في الأصل upderpanel كوسيلة لجعل صفحاتكajaxy'(لأنه ليس هو نفس الشيء الذي يستخدمه AJAX).


مكالمات AJAX العادية:
تؤدي الطلبات غير المتزامنة التي بدأت باستخدام JavaScript في المستعرض اتصالا جديدا بخادم. نعم ... قد يتضمن ذلك عاطفية دعوة إلى صفحة، ولكن أيضا طلبات عديمة الجنسية للموارد بصرف النظر عن الصفحة الحالية. ومع ذلك، في حالة إعادة النشر غير المتزام، يتم تمرير المعلومات التي يجب معالجتها إلا من خلال الصفحة الحالية على الخادم في الطلب (ويمكنك التحكم في هذا الأمر). بمعنى، لا يلزم تقديم محتويات الصفحة بأكملها، لا يمكن إدارة أي من المشاهدة أن تتمكن من إدارتها & (الأصلية) المضمنة في دورة حياة الصفحة يمكن تجاوزها. وفي الوقت نفسه، يستدعي عملية إعادة بعد غير متزامنة فقط من أحداث الخادم المرتبطة بمعالجة الطلب الحالي. هذا هو السبب في أن أياكس العادي أسرع بكثير من أعصات العملاء الجزئية!

هذه النقاط توضح ...

ليس فقط ما هو "إعادة النشر الجزئي" ... ولكن لماذا هناك فرقا بين "إعادة النشر الجزئي" ومكالمة "AJAX". وهذا هو السبب في أن هذه إجابة أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top