الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف فعلوها في الانترنت اكسبلورر ؟

بدأه Esam_rabba في 16 أكتوبر 2010 · 2 رد · 1,057 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوه الأعزاء

عند برمجة نظام كبير ومتشعب , احيانا تصدم بجدار مدى قدرة النظام على التحمل وأداء النظام الذي يقل بزيادة مهام النظام

فكانت الحلول بالهندسة الجيده للنظام وبإستحداث تقنيات جديده مثل ال threading وجديدا ما أنتجته مايكروسوفت في ال tasks في ال .net freamwork 4.0 ولكن عند الفحص المتمعن للإنترنت أكسبلورر الإصدار الثامن

نجد أنهم استحدثوا خاصية ال Multi Tab فيه ولكن عند تفحص ال Task Manager سوف تجد أن كل Tab هي عباره على برنامج منفصل بحد ذاته Iexplorer.exe , السؤال هنا كيف نستطيع صنع برنامج واحد مكون من عدة برامج ضمن شاشة واحده ونضمن عملية التخاطب بين كل شاشة فرعية والشاشة الرئيسية ؟

ونشكر لكم هذا المنتدى الرائع

#2

الأمر ليس كما تعتقد، برنامج IE - و الممثل بالملف التنفيذى iexplore.exe - ينقسم إلى جزئين أساسيين هما UI Manager و الـ Explorer حيث الـ UI Manager هو الممثل بالنافذه المفتوحه امامك و الـ Tabs و الـ Status Bar، أما الـ Explorer فهو الأداه التى تعتبر قلب المتصفح و الذى يتم من خلالها تنفيذ الـ Requests و عمل Render للنتائج عليها.

حيث أن أداة المتصفح نفسها موجوده داخل الملف التنفيذى iexplore.exe فإنه يوجد وسيلتين لإظهار الـ Tabs، الأولي تتم عن طريق تحميل الـ Tabs داخل ذاكرة الـ Manager الأساسيه و يعيب هذه الطريقه أنه إذا حدث Hang لـ Tab معين فسيتوقف الـ Manager عن العمل حتى ينتهى هذا الـ Tabمن عمله (لو تتذكر هذا كان أسلوب عمل IE6 و لكن بدلا من Tabs كان Frames و عندما كان يتوقف Frame عن العمل و تقوم بإغلاقه فكان يتم إغلاق الجميع).

الطريقه الثانيه هى أنشاء Child Process و الذى يحتوى على أداة الـ Explorer الخاصه به و يقوم الـ Manager بربط الـ Tab بأداة الـ Explorer الموجوده بالـ Child Process ذاك و ذلك حتى يستطيع الـ Manager التحكم فيه بشكل مرن فإذا حدث أن تم إغلاق هذا الـ Tab يستطيع الـ Manager أن يعرف أيهم الذى تم إغلاقه و ما البيانات التى كانت بداخله مباشرة قبل الإغلاق (و ذلك من خلال الكاش الموجوده داخل الـ Manager) و عندها يتم تحميل نسخه Explorer جديده داخل الذاكره و يتم ربط محتويات الكاش بها (و هذا يعنى أنك تستطيع رؤية الـ History لذلك الـ Tab و اعتقد ان الـ Session الخاص به يتم إسترجاعه ايضا - لم ابحث فى هذه النقطه).

و الله ولي التوفيق

5

مدونتي: C++ Tips and Tricks

#3
محمد علاء الدين كتب:

الأمر ليس كما تعتقد، برنامج IE - و الممثل بالملف التنفيذى iexplore.exe - ينقسم إلى جزئين أساسيين هما UI Manager و الـ Explorer حيث الـ UI Manager هو الممثل بالنافذه المفتوحه امامك و الـ Tabs و الـ Status Bar، أما الـ Explorer فهو الأداه التى تعتبر قلب المتصفح و الذى يتم من خلالها تنفيذ الـ Requests و عمل Render للنتائج عليها.

حيث أن أداة المتصفح نفسها موجوده داخل الملف التنفيذى iexplore.exe فإنه يوجد وسيلتين لإظهار الـ Tabs، الأولي تتم عن طريق تحميل الـ Tabs داخل ذاكرة الـ Manager الأساسيه و يعيب هذه الطريقه أنه إذا حدث Hang لـ Tab معين فسيتوقف الـ Manager عن العمل حتى ينتهى هذا الـ Tabمن عمله (لو تتذكر هذا كان أسلوب عمل IE6 و لكن بدلا من Tabs كان Frames و عندما كان يتوقف Frame عن العمل و تقوم بإغلاقه فكان يتم إغلاق الجميع).

الطريقه الثانيه هى أنشاء Child Process و الذى يحتوى على أداة الـ Explorer الخاصه به و يقوم الـ Manager بربط الـ Tab بأداة الـ Explorer الموجوده بالـ Child Process ذاك و ذلك حتى يستطيع الـ Manager التحكم فيه بشكل مرن فإذا حدث أن تم إغلاق هذا الـ Tab يستطيع الـ Manager أن يعرف أيهم الذى تم إغلاقه و ما البيانات التى كانت بداخله مباشرة قبل الإغلاق (و ذلك من خلال الكاش الموجوده داخل الـ Manager) و عندها يتم تحميل نسخه Explorer جديده داخل الذاكره و يتم ربط محتويات الكاش بها (و هذا يعنى أنك تستطيع رؤية الـ History لذلك الـ Tab و اعتقد ان الـ Session الخاص به يتم إسترجاعه ايضا - لم ابحث فى هذه النقطه).

و الله ولي التوفيق

شكرا أخي العزيز

السؤال الآن هل نستطيع أن نعمل مثل هذه برامج بإستخدام تقنيات الدوت نت ؟

وجزاك الله خيرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…