سنناقش في هذه المقالة عدة طرق لنقل البيانات بين صفحات ASP.NET ونأمل أن يساعد ذلك الجميع على فهم فائدة وملاءمة نقل البيانات بين صفحات ASP.NET بشكل صحيح.
0. مقدمة
تعتبر صفحات الويب عديمة الحالة. يعتبر الخادم أن كل طلب يأتي من مستخدم مختلف، لذلك لن يتم الاحتفاظ بحالة المتغيرات بين الطلبات المتتالية المتعددة لنفس الصفحة أو عند انتقال الصفحة. عند تصميم وتطوير نظام ويب باستخدام ASP.NET، هناك مشكلة مهمة تتم مواجهتها وهي كيفية التأكد من نقل البيانات بشكل صحيح وآمن وفعال بين الصفحات. يوفر Asp.net مجموعة متنوعة من التقنيات مثل إدارة الحالة لحل مشكلة الحفظ وفيما يتعلق بقضايا البيانات، فلنستكشف الطرق المختلفة لحل هذه المشكلة ضمن .NET والمناسبات الخاصة بكل منها.
1. طرق وتحليل مختلفة لنقل البيانات بين صفحات ASP.NET
1.1 استخدام طريقة سلسلة الاستعلام
تسمى QueryString أيضًا بسلسلة الاستعلام. تقوم هذه الطريقة بإلحاق البيانات المراد نقلها إلى نهاية عنوان صفحة الويب (URL) ونقلها. على سبيل المثال، للانتقال من الصفحة A.aspx إلى الصفحة B.aspx، يمكنك استخدام الأسلوب Request.Redirect("B.aspx? اسم المعلمة = قيمة المعلمة")، أو يمكنك استخدام الارتباط التشعبي:، بعد انتقال الصفحة ، سيكون متاحًا في الصفحة المستهدفة ["اسم المعلمة"] لتلقي المعلمات. ميزة استخدام طريقة QuerySting هي أنها سهلة التنفيذ ولا تستخدم موارد الخادم، والعيب هو أن القيمة التي تم تمريرها سيتم عرضها على شريط عنوان المتصفح، مع وجود خطر التلاعب بها، ولا يمكن التلاعب بالكائن؛ لا يمكن استخدام سلسلة الاستعلام إلا عندما يكون طلب الصفحة من خلال عنوان URL ممكنًا.
1.2 استخدام الحقول المخفية
لن يتم عرض الحقول المخفية في متصفح المستخدم، بشكل عام، تتم إضافة عنصر تحكم مخفي إلى الصفحة عند التفاعل مع الخادم، يتم تعيين القيمة لعنصر التحكم المخفي وإرسالها إلى الصفحة التالية. يمكن أن يكون المجال المخفي مستودعًا لأي معلومات مخزنة في صفحة ويب ذات صلة بصفحة الويب. عند استخدام حقل مخفي لتخزين قيمة، استخدم: Hidden control.value=numeric value. عند إخراج قيمة مستلمة، استخدم:variable=hidden control.value. تتمثل ميزة استخدام الحقول المخفية في سهولة تنفيذها. الحقول المخفية هي عناصر تحكم HTML قياسية ولا تتطلب منطق برمجة معقدًا. يتم تخزين الحقول المخفية وقراءتها على الصفحة، ولا تتطلب أي موارد للخادم، كما تدعم جميع المتصفحات وأجهزة العميل تقريبًا النماذج ذات الحقول المخفية. العيب هو أن لديها هياكل تخزين قليلة وتدعم فقط هياكل البيانات البسيطة. سعة التخزين صغيرة لأنها مخزنة في الصفحة نفسها، لذلك لا يمكنها تخزين قيم أكبر، وسيتم حظر كميات كبيرة من البيانات بواسطة جدران الحماية والوكلاء.
1.3 حالة العرض
ViewState هو حقل نموذج مخفي تتم إدارته بواسطة إطار عمل صفحة ASP.NET. عندما يقوم ASP.NET بتنفيذ صفحة، يتم جمع قيم ViewState وجميع عناصر التحكم الموجودة على الصفحة وتنسيقها في سلسلة مشفرة، ثم يتم تعيينها إلى خاصية القيمة لحقل النموذج المخفي. عند استخدام ViewState لنقل البيانات، يمكنك استخدام: ViewState ["variable name"]=قيمة رقمية عند استرداد البيانات، استخدم:variable=ViewState["variable name"]. تتمثل مزايا استخدام ViewState في: الاحتفاظ بالقيم تلقائيًا بين الطلبات المتعددة لنفس الصفحة، وعدم الحاجة إلى موارد من جانب الخادم، والتنفيذ بسيط، ويتم تجزئة القيم في حالة العرض وضغطها مشفرة لتنفيذ Unicode، ويتطلب أمانها أعلى من استخدام حقل مخفي، والعيب هو أنه نظرًا لتخزين ViewState في الصفحة نفسها، إذا تم تخزين قيمة أكبر، فقد يتباطأ المستخدم عند عرض الصفحة وإرسالها. . على الرغم من أن حالة العرض تقوم بتخزين البيانات بتنسيق مجزأ، إلا أنه لا يزال من الممكن التلاعب بها.
1.4 استخدام ملفات تعريف الارتباط
يمكن لملفات تعريف الارتباط نقل كمية صغيرة من المعلومات بين الصفحات ويمكن تخزينها في ملف نصي على العميل أو في ذاكرة العميل. تعد طريقة ملفات تعريف الارتباط مناسبة لتخزين المعلومات التي تتغير بشكل متكرر في كمية صغيرة من الصفحات، مثل حفظ أسماء مستخدمي تسجيل الدخول لمواقع الويب التي تم تسجيل الدخول إليها، وتوفير الراحة لإدخال المستخدم، وحفظ الإعدادات الشخصية للمستخدمين في بعض العناصر المحددة من قبل المستخدم. متاح عند استخدام ملفات تعريف الارتباط لنقل البيانات: Response.Cookies["key name"]=قيمة المفتاح؛ لاسترداد البيانات: اسم متغير=Request.Cookies["اسم المفتاح"]. مزايا استخدام ملفات تعريف الارتباط هي: يتم تخزين ملفات تعريف الارتباط على العميل، ولا تستخدم موارد الخادم، وسهلة التنفيذ، ويمكن تكوين وقت انتهاء الصلاحية. العيوب: كمية البيانات التي يمكن تخزينها صغيرة نسبيًا نظرًا لأن ملفات تعريف الارتباط غير مدعومة من قبل جميع المتصفحات وقد يتم حظرها أو حذفها من قبل المستخدمين، فلا يمكن استخدامها لحفظ البيانات المهمة. بالإضافة إلى ذلك، يتم تخزين ملفات تعريف الارتباط بنص عادي بسيط، وليس من المناسب تخزين بيانات حساسة وغير مشفرة فيها.
1.5 استخدام متغيرات التطبيق
يمكن أيضًا استخدام متغيرات التطبيق لنقل القيم بين الصفحات. تكون متغيرات التطبيق عمومية ويتشارك جميع المستخدمين في متغير التطبيق، وبمجرد تحديده، فإنه سيؤثر على جميع أجزاء البرنامج. إذا كنت تريد استخدام قيمة متغيرة معينة عبر التطبيق بأكمله، فسيكون كائن التطبيق هو الخيار الأفضل. عند تخزين البيانات، قم بإضافة القيمة إلى متغير التطبيق: التطبيق["اسم المتغير"]=قيمة رقمية؛ استخدمها لاسترداد البيانات:variable=Application["variable name"]؛ عندما لا تحتاج إلى استخدام التطبيق، قم بمسحها بشكل صريح :Application["quantity name"]=null.
مزايا التطبيق: سهل الاستخدام، ذو نطاق عالمي. متاح لجميع الصفحات في التطبيق. العيوب: إذا كانت عملية حفظ البيانات من جانب الخادم تالفة (على سبيل المثال بسبب تعطل الخادم أو ترقيته أو إيقاف تشغيله)، فسيتم فقدان البيانات، لذلك يجب أن يكون لديك استراتيجية مضمونة عند استخدام التطبيق لأنه يشغل ذاكرة من جانب الخادم ، مما قد يؤثر على أداء الخادم وقابلية تطوير التطبيق.
1.6 استخدام متغيرات الجلسة
يمكن استخدام كائنات الجلسة لتخزين معلومات حول المحادثات المحددة التي تحتاج إلى صيانة. يقوم العملاء المختلفون بإنشاء كائنات جلسة مختلفة. يتم استخدام الجلسة لتخزين المعلومات قصيرة المدى الخاصة بجلسة فردية. استخدام الجلسة وتنسيقها هما نفس التطبيق.
المزايا: إنه سهل التنفيذ، ويوفر درجة عالية من الأمان والمتانة، ويمكنه التعامل مع إعادة تشغيل IIS وإعادة تشغيل العملية المساعدة، ويمكن استخدامه في عمليات متعددة. العيب هو أنه يستهلك الذاكرة من جانب الخادم. لذلك لا تخزن الكثير من المعلومات. الاستخدام الأكثر شيوعًا للجلسة هو توفير وظائف تعريف المستخدم لتطبيقات الويب بالإضافة إلى ملفات تعريف الارتباط التي يمكن استخدامها أيضًا في المتصفحات التي لا تدعم ملفات تعريف الارتباط. ومع ذلك، يتطلب استخدام جلسة بدون ملفات تعريف الارتباط وضع معرف الجلسة في سلسلة الاستعلام، والتي تعاني أيضًا من مشكلات الأمان المذكورة في قسم سلسلة الاستعلام في هذه المقالة.
1.7 استخدام الخصائص الثابتة للفئات
تستخدم هذه الطريقة الخصائص الثابتة للفئة لنقل القيم بين الصفحتين. تحديد فئة تحتوي على سمات ثابتة؛ تعيين القيمة المراد نقلها إلى السمة الثابتة؛ يمكن للصفحة المستهدفة الحصول على القيمة المراد نقلها في الصفحة المصدر من خلال السمة الثابتة.
وتتمثل الميزة في أنه يمكنه نقل بيانات متعددة بسهولة، ولكن العيب هو أنه يتطلب برمجة إضافية، ويزيد من عبء عمل البرمجة، ويستهلك ذاكرة الخادم.
1.8 استخدام Server.Transfer
أثناء نقل تدفق التنفيذ من ملف ASPX الحالي إلى صفحة ASPX أخرى على نفس الخادم من خلال طريقة Server.Transfer، يمكن الاحتفاظ ببيانات النموذج أو سلسلة الاستعلام. تتمثل الطريقة في تعيين المعلمة الثانية للطريقة على True تستخدم الصفحة الأولى Server.Transfer("target page name.aspx"، true)؛ تستخدم الصفحة الهدف: Ruquest.Form["Control Name"] أو Ruquest.QueryString["Control Name"] لاسترداد البيانات. ويمكن استخدامه أيضًا في Asp.net2.0 بهذا الشكل، ويكون الكود كما يلي:
الصفحة السابقة pg1؛
pg1=(PreviousPage)Context.Handler;
Response.Write(pg1.Name);
توضيح: يتم استخدام هذا الرمز لاسترداد القيمة التي تم تمريرها من الصفحة المستهدفة. الصفحة السابقة هي اسم فئة الصفحة الأصلية، والاسم هو السمة المحددة في الصفحة الأصلية، ويتم تخزين البيانات التي يجب نقلها في هذه الصفحة. يصف.
باستخدام هذه الطريقة، تحتاج إلى كتابة بعض التعليمات البرمجية لإنشاء بعض الخصائص حتى تتمكن من الوصول إليها من صفحة أخرى. يمكنك الوصول إلى القيمة كخاصية كائن في صفحة أخرى. هذه الطريقة مفيدة بشكل خاص في تمرير القيم بين الصفحات. هذه الطريقة ليست بسيطة فحسب، ولكنها أيضًا موجهة للكائنات.
1.9 ذاكرة التخزين المؤقت
تحتوي ذاكرة التخزين المؤقت على وظائف قوية لتشغيل البيانات، فهي تقوم بتخزين البيانات في شكل مجموعة من أزواج القيمة الرئيسية. ويمكن إدراج عناصر البيانات واسترجاعها عن طريق تحديد الكلمات الرئيسية. تسمح إمكانات الإنهاء القائمة على التبعية لها بالتحكم بدقة في كيفية تحديث البيانات الموجودة في ذاكرة التخزين المؤقت وإزالتها في الوقت المناسب. يمكنه تنفيذ إدارة القفل داخليًا ولا يحتاج إلى استخدام طريقتي Lock() وUnlock() لإدارة التسلسل مثل كائن التطبيق. العيب هو أن طريقة الاستخدام معقدة، والاستخدام غير السليم سوف يقلل من الأداء.
2. طرق نقل القيمة التي يمكن استخدامها في مواقف القفز المختلفة للصفحة
2.1 السيناريو 1: يمكن للصفحة المصدر الانتقال إلى الصفحة المستهدفة، وتقوم الصفحة المصدر بتمرير البيانات إلى الصفحة المستهدفة.
يعد استخدام سلاسل الاستعلام طريقة بسيطة وشائعة الاستخدام لنقل كمية صغيرة من المعلومات من صفحة إلى أخرى ولا توجد مشكلات أمنية؛ استخدم طريقة Server.Transfer لتمرير بيانات النموذج أو سلاسل الاستعلام إلى صفحة أخرى HttpContext للصفحة الأولية يمكن استخدام هذه الطريقة عندما تكون الصفحة الهدف والصفحة المصدر على نفس الخادم.
2.2 الحالة 2: تقوم الصفحة بتمرير القيمة إلى صفحتها الخاصة
أي أنه من خلال الاحتفاظ بالقيم عبر طلبات متعددة لنفس الصفحة، توفر خاصية ViewState وظائف ذات أمان أساسي. يمكن أيضًا استخدام الحقول المخفية لتخزين كمية صغيرة من معلومات الصفحة التي يتم نشرها مرة أخرى على نفسها أو على صفحة أخرى، ويتم استخدامها عندما لا يتم أخذ مشكلات الأمان في الاعتبار.
2.3 الحالة 3: تقوم الصفحة المصدر بتمرير القيم إلى الصفحة المستهدفة، لكن لا يمكن ربط الصفحة المصدر مباشرة بالصفحة المستهدفة.
هناك طرق متعددة، وأي منها يعتمد على الموقف المحدد.
التطبيق: يقوم بتخزين المعلومات العامة التي يستخدمها العديد من المستخدمين ويتم تغييرها بشكل غير متكرر، عندما لا يكون الأمان مشكلة. لا تقم بتخزين كميات كبيرة من المعلومات. الجلسة: تقوم بتخزين المعلومات قصيرة المدى الخاصة بجلسة فردية وتتطلب أمانًا عاليًا. لا تقم بتخزين كميات كبيرة من المعلومات في حالة الجلسة. لاحظ أنه يتم إنشاء كائنات حالة الجلسة وصيانتها طوال مدة كل جلسة في التطبيق. في التطبيقات التي تدعم العديد من المستخدمين، يمكن أن يستهلك هذا موارد خادم كبيرة ويؤثر على قابلية التوسع.
ملفات تعريف الارتباط: تُستخدم عندما تحتاج إلى تخزين كمية صغيرة من المعلومات على جانب العميل ولا توجد مشكلات أمنية. السمات الثابتة للفئة تسهل نقل بيانات متعددة.
ذاكرة التخزين المؤقت: كائن لمستخدم واحد أو مجموعة من المستخدمين أو لجميع المستخدمين. يمكن حفظ البيانات لطلبات متعددة لفترة طويلة وبكفاءة. لا يتم استخدام الطرق المذكورة أعلاه في الحالة الثالثة فقط، ولكن أيضًا في الحالتين السابقتين، استخدمها بأقل قدر ممكن عندما تكون غير ضرورية، وإلا فإنها ستتسبب في إهدار الموارد أو زيادة تعقيد البرنامج.