الاستخدام العام لرد الاتصال بسيط نسبيًا ويكفي الرجوع مباشرة إلى تعليمات وأمثلة msdn. ولكن إذا كنت تريد حقًا استخدامه بشكل جيد ودقيق، أو ترغب في تطوير بعض مكونات الويب بناءً على آلية رد الاتصال، فيجب عليك أولاً أن يكون لديك فهم متعمق لآلية تنفيذ رد الاتصال. في هذه المقالة، سيعمل تيدي معك لتحليل آلية الاستدعاء والتعليقات الكاملة لرد الاتصال، وأعتقد أنه سيكون من المفيد مساعدتك على استخدام رد الاتصال بشكل أفضل.
Callback vs Atlas
أولاً، دعونا نتحدث عن Atlas. قد يجد العديد من الأصدقاء أنه من الغريب وجود رد اتصال بالفعل، فلماذا نحتاج إلى إصدار Atlas مرة أخرى؟ فيما يتعلق بهذه المسألة، لم أحقق في كيفية تفسيرها من قبل مؤلف الأطلس. ولكن من تجربتي الشخصية في استخدام رد الاتصال والأطلس، أشعر أن رد الاتصال كواجهة يشبه إلى حد كبير إعادة النشر، ويجب أن يسمح للمستخدمين باستخدامه بشكل مشابه لإعادة النشر. ومع ذلك، ينبغي القول أن آلية إعادة النشر الخاصة بها ليست مناسبة للاستخدام بشكل خاص وليس من السهل توسيعها، بالطبع، مقارنة بتطبيقات إطار عمل AJAX الأخرى. لذلك، تعلمت Microsoft من العديد من تطبيقات AJAX الموجودة، مثل Prototype وBackbase وAJAX.NET، ودمجتها مع بعض الوظائف الفريدة لـ ASP.NET 2.0 لإنشاء إطار عمل AJAX الذي يعتمد على نقاط قوة الآخرين. من الصعب تحديد مدى جودة تطوير تطبيقات AJAX استنادًا إلى Atlas، لكنها بالتأكيد ليست أسوأ من أطر عمل AJAX الأخرى، بالإضافة إلى الواجهة الخلفية لمايكروسوفت وتطبيقات المواقع ذات الوزن الثقيل مثل Live.com Promotion، فإن تأثيرها يستحق بالتأكيد نتطلع إلى.
ومع ذلك، هذا لا يعني أن تنفيذ رد الاتصال عديم الفائدة، فنحن كمبرمجين بحاجة إلى التصرف الصحيح واستخدام التكنولوجيا الصحيحة في حالة الاستخدام الصحيحة. لا يوجد إطار عمل قادر على كل شيء ومناسب لأي بيئة استخدام، تمامًا كما يناقش الجميع أي طريقة لتطوير البرمجيات هي الأفضل، CMMi، RUP، XP، AGILE ~~، في الواقع، لا يوجد أفضل، والأكثر ملاءمة هو الأنسب أكثر ما يجب علينا فعله هو فهم مبادئ ومزايا وعيوب الحلول المختلفة، حتى نتمكن من استخدام الأدوات المناسبة بشكل عقلاني لحل المشكلات العملية.
ابدأ من البرنامج النصي للعميل
نعلم جميعًا أنه في المستوى الأدنى، لا تحتوي جميع أجهزة AJAX على أكثر من آليتين للتنفيذ: XMLHTTP وIFRAME. قبل أن تحظى كلمة AJAX باهتمام واسع النطاق، في الواقع، كانت الأطر الوظيفية القائمة على هذين التطبيقين الأساسيين، أو تطبيقات التأثير غير التحديثي المستندة إلى هاتين التقنيتين، مستخدمة بالفعل على نطاق واسع. بالطبع، مع التطور الحالي، فيما يتعلق باستخدام الواجهات، غالبًا ما يتم إخفاء تفاصيل هذه الآليات الأساسية بواسطة الإطار، وأصبح استخدام الواجهات بسيطًا بشكل متزايد، ويحتاج المستخدمون فقط إلى استدعاء هذه الواجهات البسيطة، وليست هناك حاجة إلى معرفتها كيفية تحقيق التأثير المحدد.
ومع ذلك، نظرًا لأننا هنا لتحليل آلية تنفيذ رد الاتصال، فلنبدأ باستدعاء البرنامج النصي للعميل لاستدعاء رد الاتصال لمعرفة كيفية تنفيذ Microsoft لآلية رد الاتصال هذه.
1. ClientScript.GetCallbackEventReference(...)
لبدء رد اتصال، بالطبع، يجب إصدار مكالمة في البرنامج النصي للعميل. صيغة الاتصال النموذجية هي كما يلي:
<script language="javascript" type="text/javascript">
وظيفة Any_script_function(arg, context)
{
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
}
</script>
سيعيد ClientScript.GetCallbackEventReference(...) البرنامج النصي لرد الاتصال الفعلي وفقًا للمعلمات التي تم تمريرها. تحتوي هذه الوظيفة على عدة إصدارات مثقلة، لذا يمكنك الرجوع إلى MSDN لمعرفة معنى هذه المعلمات. خذ المعلمات المحددة في نموذج التعليمات البرمجية أعلاه:
- هذا يعني أن عنصر تحكم الخادم الذي ينفذ رد الاتصال هو الصفحة الحالية. يجب أن تقوم الصفحة الحالية بتنفيذ واجهة ICallbackEventHandler، بما في ذلك السلسلة GetCallbackResult() وRaiseCallbackEvent(eventArgument) الفارغة وظيفتان للواجهة، يمكن أن تكون هذه المعلمة أيضًا مرجعًا لعنصر تحكم WEB، بالطبع، يجب أن تنفذ هذه المساحة أيضًا واجهة ICallbackEventHandler
- "arg" هي قيمة معلمة eventsArgument التي سيتم تمريرها إلى RaiseCallbackEvent، والتي تسمح للأشخاص بذلك. سلسلة تحدد التنسيق
- "ReceiveServerData" هو اسم وظيفة البرنامج النصي للعميل التي تعالج المحتوى الذي تم إرجاعه بعد نجاح رد الاتصال. يجب أن تكون هذه الوظيفة موجودة في الصفحة التي يتم فيها تنفيذ رد الاتصال، ويمكن أن تحتوي هذه الوظيفة على معلمتين على سبيل المثال:
<script type="text/javascript">
functionReceiveServerData (النتيجة، السياق)
{}
</script>
هاتان المعلمتان هما نتيجة البيانات المرتجعة لرد الاتصال، ومعلمة السياق التي يتم إرجاعها دون تغيير عندما نقوم بتشغيل رد الاتصال. بالطبع، هاتان المعلمتان من نوع السلسلة.
- ليست هناك حاجة لشرح "السياق". فقط تذكر أنه سيتم تمرير هذه المعلمة سليمة إلى وظيفة معالجة البيانات المرتجعة المحددة. تقول الوثائق الرسمية لـ MSDN أنه يمكن استخدام السياق عمومًا لتمرير كود البرنامج النصي الذي يجب استدعاؤه في وظيفة معالجة بيانات الإرجاع الخاصة بالعميل، ولكن في الواقع، يمكنك التفكير في الأمر على أنه رد اتصال مشغل من العميل إلى قناة نقل المعلمة بين الأجزاء المستقبلة التي تعالج البيانات التي يتم إرجاعها.