إنشاء مكونات من جانب الخادم asp باستخدام vb
تقدم هذه المقالة كيفية استدعاء مكونات vb في كود asp من خلال مقارنتها بطرق التصميم التقليدية. في هذه المقالة، نفترض أن القارئ لديه المعرفة التمهيدية ذات الصلة بـ VB وASP.
مقارنة المكونات من جانب الخادم والمكونات من جانب العميل
هناك العديد من الاختلافات بين المكونات من جانب الخادم والمكونات من جانب العميل. المكونات من جانب الخادم هي ملفات dll مسجلة على خادم الكمبيوتر، ويتم تسجيل المكونات من جانب العميل على الكمبيوتر الذي يعمل عليه المستعرض في IE، تسمى هذه المكونات من جانب العميل مكونات المكونات الإضافية لمتصفح activex.
يمكن كتابة مكونات عميل ActiveX بلغة VB وإرسالها إلى المتصفح عبر الإنترنت أو الإنترانت لإنشاء تأثيرات رائعة. تكمن المشكلة في أن مكونات جانب العميل Activex تقتصر على أي، بينما يمكن لمكونات جانب الخادم المكتوبة بلغة vb إنشاء تعليمات برمجية بتنسيق html خالصة وهي مناسبة لجميع المتصفحات. أكبر مشكلة في المكونات من جانب الخادم هي أن المكون يجب أن يعمل في بيئة Windows+IIS أو تطبيق متوافق مع واجهة برمجة تطبيقات IIS. بالمقارنة، يبدو من الأسهل تحقيق هذا التوافق على جانب الخادم.
يوجد المكون من جانب خادم IIS في نفس مساحة الذاكرة مثل IIS ويكون جاهزًا دائمًا للمكالمات إلى صفحات ويب ASP التي تتم معالجتها على الخادم. من الناحية النظرية، يمكننا إدراج أي نص أو رمز في كود ASP الذي يتم إرجاعه إلى المتصفح، ولكن بشكل عام، يتم استخدام معظم المكونات من جانب الخادم للتعامل مع العمليات الحسابية أو عمليات البحث عن معلومات قاعدة البيانات التي تتطلب الكثير من الوقت، ومن ثم النتيجة يتم إرجاعها إلى المتصفح في شكل كود html.
تحليل مكونات vb
بما أن هذه المقالة تهدف إلى مناقشة الطرق الأساسية لكتابة مكونات VB، فإن الأمثلة ستكون بسيطة جدًا إذا كانت قادرة على توضيح المشكلة. قبل مناقشة كتابة مكونات VB بالتفصيل، سنقوم أولاً بتحليل مكونات VB من الناحية المفاهيمية.
عند استخدام VB لكتابة مكونات من جانب الخادم، هناك ثلاثة مفاهيم هرمية (تُستخدم في كل من كود VB وASP) يجب الانتباه إليها:
· اسم المشروع
· اسم الفئة
· اسم الطريقة
اسم المشروع VB هو اسم المشروع. العديد من المطورين يعتبرون اسم المشروع كاسم المكون، لكن VB يعتبره اسم المشروع فقط. في مثالنا، اسم المشروع هو exampleproject. بالطبع، يمكننا تسمية مشروعنا بشكل عشوائي؛
يمكن أن يكون اسم المشروع (اسم المكون) أيضًا اسم ملف dll الذي تم تجميعه من كود المكون. سيحتوي ملف dll على كود vb المترجم الذي يستخدمه iis لإرجاع النص أو كود html إلى المتصفح.
يشير اسم الطريقة إلى جزء التعليمات البرمجية لـ Visual Basic الذي يدير وظيفة تعليمات برمجية محددة، مثل حساب تاريخ أو عرض قائمة بجميع المؤلفين في قاعدة البيانات. تعد أساليب المكونات نوعًا من الصناديق السوداء التي تؤدي عملاً محددًا أو تُرجع معلومات محددة بناءً على معلومات الإدخال. بشكل عام، يمكن أن يكون هناك طرق متعددة في المكون. من أجل إدارة أساليب المكونات بشكل أكثر فعالية، يمكن تجميع الأساليب معًا وفقًا لتصنيفات مماثلة. وهذا هو دور فئات المكونات.
يمكن لفئة المكون إنشاء نسخة من رمز فئة المكون في الذاكرة. عند استخدام كود asp لإنشاء كائن، يطلق عليه أيضًا إنشاء مثيل. بمجرد أن يكون لدينا مرجع كائن لمثيل رمز فئة المكون، يمكننا استدعاء الأساليب الموجودة في الفئة من كود asp.
في مثالنا، سيتم استخدام أسماء المشروع والفئات والطرق لإنشاء مثيل لمكون VB في كود ASP، وتمرير القيم من كود ASP إلى كود VB في شكل معلمات الأسلوب، والتي يتم تلقيها في رمز ASP من أسلوب VB القيمة التي تم إرجاعها.
استدعاء مكون vb من ملف asp
سيستخدم ملف asp الذي نستخدمه لاستدعاء مكون vb متغيرات الكائن لحفظ المراجع إلى كائن vb. في ملف asp، يمكنك إنشاء كائن باستخدام طريقة createobject() لكائن خادم asp، والذي سيعيد مرجعًا إلى الكائن الذي أنشأه. في المثال، سوف نستخدم objreference كمتغير كائن للمكون. يوضح التعليمة البرمجية التالية أن كود asp يحتاج إلى استخدام اسم مشروع المكون واسم الفئة (exampleproject وexampleclass) عند إنشاء مكون vb.
كود ASP لإنشاء مكون vb:
تعيين objreference = server.createobject(exampleproject.exampleclass)
سيقبل مكون vb قيم 3 متغيرات من كود asp ويعيد قيمة إلى كود asp، والتي سيتم تخزينها في متغير asp المسمى strmethodreturn. يوضح التعليمة البرمجية التالية كيف يحصل كود asp على القيمة التي يتم إرجاعها بواسطة مكون vb، ويقوم بتمرير قيم المعلمات الثلاثة المسماة param1 وparam2 وparma3 إلى طريقة vb:
strmethodreturn = objreference.examplemethod(param1, param2, param3)
يجب أن تكون المعلمات الثلاثة param1 وparam2 وparam3 مماثلة تمامًا لتعريفات الأساليب الموجودة في مكون VB. وفيما يلي مثال لسطرين من تعليمات ASP البرمجية التي تقوم بإنشاء مثيل لفئة مكون VB وتستدعي أسلوب الفئة إلى. الحصول على قيمة الإرجاع:
تعيين objreference = server.createobject(exampleproject.exampleclass)
strmethodreturn = objreference.examplemethod(param1, param2, param3)
يوضح الرسم البياني أدناه بشكل مرئي كيفية تنسيق أسماء المشروع والفئات والأساليب الخاصة بمكون VB مع رمز إنشاء مثيل المكون في ملف ASP. يمكنك استخدام المخطط أدناه كمرجع بينما تتعلم خطوة بخطوة كيفية كتابة كود vb وملفات asp في المثال.
دور طريقة vb
سيحصل مكون VB البسيط في مثالنا على اسم المستخدم وعمره، ثم يعيد عمر المستخدم بالأيام، وهناك خيار لتذكير المستخدم ما إذا كان عمره يزيد عن 45 عامًا.
إذا قمنا بتمرير إيريك كلابتون الخيالي إلى المكون كقيمة المعلمة الأولى للطريقة، وقمنا بتعيين المعلمة الثانية على 56، فسنحصل على سلسلة الإرجاع التالية:
يبلغ عمر إيريك كلابتون أكثر من 20440 يومًا.
إذا قمنا بتعيين المعلمة الثالثة الاختيارية على true (ستجعل هذه المعلمة الطريقة تحدد ما إذا كان عمر المستخدم أكبر من 45 عامًا)، فسنحصل على سلسلة الإرجاع التالية:
يبلغ عمر إيريك كلابتون أكثر من 20440 يومًا.
نظرًا لاستخدام ثلاثة متغيرات مختلفة تمامًا - اسم المستخدم وعمره وما إذا كان عمره أكبر من 45 عامًا، نحتاج إلى استخدام ثلاثة معلمات أسلوب لنقل هذه المعلومات من ملف ASP إلى رمز VB. في VB، من المهم جدًا مراعاة أنواع البيانات التي سيتم استخدامها. سوف نستخدم متغير سلسلة يسمى strname لتمثيل اسم المستخدم، ومتغير عدد صحيح يسمى intage لتمثيل عمر المستخدم، ومتغير منطقي يسمى blnageemphasison للإشارة إلى ما إذا كان عمر المستخدم أكثر من 45 عامًا.
ثلاث معلمات للطريقة (تم تمرير المتغيرات إلى كود الطريقة الخاص بمكون vb):
اسم السلسلة (سلسلة)
كمية (عدد صحيح)
التأكيد على blnage (منطقي)
إنشاء مكونات جانب الخادم في vb
بعد بدء تشغيل vb، انقر نقرًا مزدوجًا فوق أيقونة "activex dll" في نافذة "مشروع جديد". بمجرد قيام VB بتحميل مشروع activex dll الجديد، سترى نافذتين مفتوحتين على الأقل: نافذة المشروع ونافذة الخصائص. إذا تعذر عرض النافذة، يمكنك تحديد عنصر القائمة "عرض" من قائمة VB (استخدم "عرض" -> "مدير المشروع"، "عرض" -> "نافذة الخصائص" على التوالي).
نظرًا لأن الأسماء الافتراضية للمشروع الأول والفئة في VB هي project1 وclass1 على التوالي، فيمكننا تغييرهما إلى exampleproject وexampleclass على التوالي. يمكن تعديل اسم المشروع في نافذة المشروع. يوجد مربع صغير به + أو - على يسار اسم المشروع الذي تم إدخاله حديثًا في نافذة المشروع. إذا تم عرض علامة +، حدد المربع الصغير، وستتحول علامة + إلى علامة -، وسيتم عرض اسم الفئة الافتراضية (class1) أسفل اسم المشروع. حدد اسم الفئة الافتراضية في نافذة المشروع، وقم بتغيير اسم الفئة الافتراضية إلى exampleclass في نافذة الخصائص.
عند حفظ المشروع، سيحفظ VB الكود الذي يحتوي على الفئة في ملف بامتداد cls. امتداد ملف المشروع هو vbp، الذي يخزن الإعدادات المختلفة للمشروع واسم الملف وموقع تخزين الملف.
قيم الخصائص للمكونات من جانب الخادم
قم بعرض خصائص فئة exampleclass في نافذة الخصائص. لاحظ أن قيمة خاصية المثيل هي "5 متعددة الاستخدامات". إذا تم تعيين نوع المشروع على مشروع exe قياسي، فستتغير قيمة هذه الخاصية وفقًا لذلك.
حدد "مشروع" -> "خصائص المشروع النموذجي" في قائمة VB، وسيتم عرض نافذة خصائص المشروع. يجب تعيين قيمة خاصية "وضع الترابط" الموجودة في الجزء السفلي الأيمن من علامة التبويب "عام" على "ترابط الوحدات"، مما سيمكن العديد من الزوار من استخدام مثيلات مختلفة لفئة المكونات الخاصة بنا في نفس الوقت. بالإضافة إلى ذلك، حدد خياري "التنفيذ غير المراقب" و"الذاكرة المقيمة" لتجنب تسرب الذاكرة في VB6.
رمز طريقة vb
نحتاج الآن إلى استخدام نافذة كود vb لإدخال كود vb. إذا ظلت نافذة التعليمات البرمجية فارغة، فأدخل الرمز التالي:
الخيار صريح
"سوف يتطلب منا تحديد جميع المتغيرات."
طريقة المثال للوظيفة العامة (اسم السلسلة byval كسلسلة، _
intage byval كعدد صحيح، _
اختياري byval blnageemphasisison كـ boolean = false) كسلسلة
في الكود أعلاه، قمنا بتعريف الطريقة على أنها وظيفة عامة، مما يعني أنه يمكن لأي كود خارج المكون أن يستدعيها، نظرًا لأنها دالة، فإنها ستُرجع أيضًا قيمة إلى الكود الذي يستدعيها.
الدالة العامة examplemethod() كسلسلة
يشير الكود أعلاه إلى أن الدالة examplemethod() ستعيد قيمة نوع سلسلة إلى المتصل بها.
تأتي طريقة vb الخاصة بنا مع 3 متغيرات معلمات تقبل القيم من كود asp، ومتغير المعلمة الأخير اختياري. يجب تعريف جميع متغيرات المعلمات المستخدمة لتلقي القيم من خارج مكون VB واستخدامها بين أقواس طريقة VB. يمكننا استخدام المتغيرات المحددة بهذه الطريقة كمعلمات طريقة تمامًا مثل المتغيرات المحددة داخل الطريقة بينهما هو رمز ASP الخارجي الذي يحدد قيمهم.
فيما يلي المتغيرات الثلاثة وأنواع البيانات الخاصة بها:
byval strname كسلسلة
byval intage كعدد صحيح
اختياري byval blnageemphasis كـ boolean = false
يحدد الكود أعلاه أنواع البيانات لمعلمات الطريقة الثلاثة، مما يشير إلى أنه تم تمريرها حسب القيمة، والمعلمة الثالثة اختيارية. إذا لم تكن هناك معلمة ثالثة، فإن قيمتها الافتراضية تكون خاطئة.
بعد ذلك، سنضيف بعض الفواصل والمسافات والشرطات السفلية (_) الضرورية في تعريف الطريقة حتى تتمكن من تلبية المتطلبات النحوية لـ VB. سنضع قائمة المعلمات بين قوسين تعريف الطريقة، وسيكون تعريف الطريقة الناتج كما يلي:
طريقة المثال للوظيفة العامة (اسم السلسلة byval كسلسلة، _
intage byval كعدد صحيح، _
اختياري byval blnageemphasisison كـ boolean = false) كسلسلة
أدخل تعريف الطريقة أعلاه في نافذة التعليمات البرمجية VB، وسيتم إنشاء بيان وظيفة النهاية. بين تعريف الطريقة والوظيفة النهائية، نكتب الكود الخاص بنا.
السطر الأول من التعليمات البرمجية الذي نضيفه في نص الطريقة هو تحديد متغير سلسلة لتخزين بيانات السلسلة التي ترجعها الطريقة. بدلاً من استخدام متغير سلسلة، يمكننا استخدام سلسلة لإرجاع البيانات النصية إلى الكود الذي يستدعي الطريقة.
سلسلة خافتة كسلسلة
بعد ذلك يمكننا إنشاء السلسلة التي تم إرجاعها. يمكننا استخدام قيمة متغير strname التي تم تمريرها بواسطة كود asp من خلال قائمة المعلمات الخاصة بهذه الطريقة. قم أولاً بتسلسل قيمة متغير معلمة strname مع السلسلة "انتهى". بعد ذلك سوف نستخدم متغير المعلمة intage لحساب عدد الأيام التي عاشها الشخص، ثم نضيف سلسلة "العمر بالأيام" إلى السلسلة السابقة. تجدر الإشارة إلى أننا بحاجة إلى تحويل منتج عددين صحيحين * 365 إلى سلسلة قبل دمجها في سلسلة strreturnstring، يمكن لطريقة cstr() في VB تحقيق هذا الغرض.
strreturnstring = strname & انتهى & cstr(intage * 365)
إذا كان من المفترض أن الاسم الذي تم تمريره إلى المكون من كود asp هو eric clapton، والمعلمة age هي 56، لذلك، يجب أن تحتوي strreturnstring على المحتوى التالي:
إيريك كلابتون تجاوز 20440
ستتم إضافة السلسلة النهائية بناءً على ما إذا كانت قيمة المتغير intage تتجاوز 45 وما إذا كان المتغير blnageemphasison مضبوطًا على true.
"قبل أيام" أو "قبل أيام". يمكن للكود التالي تحقيق هذه الوظيفة:
إذا blnageemphasis و intage > 44 ثم
strreturnstring = strreturnstring والأيام القديمة.
آخر
strreturnstring = strreturnstring والأيام القديمة.
نهاية إذا
إذا لم يمرر رمز asp قيمة متغير blnageemphasison إلى المكون كمعلمة طريقة، فسيتم تعيين قيمته على خطأ افتراضيًا وفقًا لتعريف طريقتنا. إذا تم ضبطه على true وكانت قيمة المتغير intage أكبر من 45، فسنحصل على الإخراج التالي:
يبلغ عمر إيريك كلابتون أكثر من 20440 يومًا.
وإلا فإننا نحصل على الإخراج التالي:
يبلغ عمر إيريك كلابتون أكثر من 20440 يومًا.
من أجل إرجاع السلسلة أعلاه إلى رمز asp الخاص بالمكون المستدعي، نقوم بتعيين قيمة السلسلة لاسم الطريقة:
examplemethod = strreturnstring
رمز الطريقة الكامل هو كما يلي:
طريقة المثال للوظيفة العامة (اسم السلسلة byval كسلسلة، _
intage byval كعدد صحيح، _
اختياري byval blnageemphasisison كـ boolean = false) كسلسلة
'///// إنشاء متغيرات محلية
سلسلة خافتة كسلسلة
'///// قم بإنشاء قيمة المتغير الذي تم إرجاعه
strreturnstring = strname & انتهى & cstr(intage * 365)
'///// تحسين strreturnstring
إذا blnageemphasis و intage > 44 ثم
strreturnstring = strreturnstring والأيام القديمة.
آخر
strreturnstring = strreturnstring والأيام القديمة.
نهاية إذا
'///// سلسلة العودة
examplemethod = strreturnstring
وظيفة النهاية
استدعاء طريقة vb في كود asp
إنشاء كائن vb في رمز asp
تمت مناقشة معظم كود ASP الذي نحتاجه في نظرة عامة مفاهيمية أعلاه. في كود asp، ما زلنا بحاجة إلى إكمال العمل التالي بالتسلسل:
· استخدم طريقة createobject() لكائن خادم asp لإنشاء مثيل لمكون vb.
·استدعاء أساليب المكون باستخدام متغيرات معلمة الطريقة المناسبة.
· قم بتعيين قيمة السلسلة التي تم إرجاعها من أسلوب vb إلى متغير في متغير asp.
· ثم استخدم هذا المتغير في طريقة Response.write() لإرسال السلسلة إلى المتصفح.
سنستخدم بعض التعليمات البرمجية الموجودة في ملف asp لإنشاء مثيل لفئة مكون vb، وفيما يلي رمز إنشاء مكون vb:
تعيين objreference = server.createobject(exampleproject.exampleclass)
تقوم طريقة createobject() لكائن خادم ASP بإرجاع عنوان كائن رمز VB، حتى نتمكن من استدعاء أي طريقة عامة للفئة في ASP. تجدر الإشارة إلى أنه نظرًا لأن معلمة الطريقة لطريقة asp createobject() هي اسم مشروع وفئة vb، يتم استخدام objreference للحفاظ على مرجع إلى مثيل الكائن لفئة المكون.
كيفية استخدام المكونات في ملفات asp
الآن، يمكننا استخدام طريقة المثال لطريقة فئة المكون للحصول على إشارة إلى عمر الشخص بالأيام. تستخدم التعليمة البرمجية التالية قيمة المعلمة وتقوم بتعيين قيمة السلسلة التي يتم إرجاعها من الطريقة إلى متغير يسمى strmethodreturn:
strmethodreturn = objreference.examplemethod(إريك كلابتون، 56، صحيح)
نصيحة: عندما يتم إنشاء مثيل للمكون الخاص بنا، يمثل objreference الفئة exampleproject.example التي ظهرت في طريقة createobject() . على الرغم من أننا يمكن أن نفكر في objreference.examplemethod كمعادل للمثال exampleproject.exampleclass.examplemethod()، إلا أنه لا يمكننا استخدامه بهذه الطريقة.
بالطبع، يمكننا أيضًا استخدام المتغيرات بدلاً من القيم المباشرة كمعلمات الطريقة. لا يلزم أن تكون أسماء متغيرات المعلمات المحددة هي نفسها الموجودة في قائمة معلمات طريقة VB عدد ونوع وعدد المعلمات غير الاختيارية في قائمة المعلمات هو نفسه.
aspname = إيريك كلابتون aspage = 56 aspemphasis = true strmethodreturn = objreference.examplemethod(aspname, aspage, aspemphasis)
استخدام المتغيرات بدلاً من القيم يجعل التعليمات البرمجية الخاصة بك أكثر وضوحًا وأكثر قابلية للإدارة، خاصة عندما تصبح طويلة.
الآن نحتاج فقط إلى إرجاع strmethodreturn إلى المتصفح الذي يصل إلى رمز asp في طريقة asp Response.write(). يوجد أدناه رمز asp الكامل، وفي نهاية الكود، نضيف سطرًا من التعليمات البرمجية يفصل بين عنوان كائن المكون لمسح رمز كائن المكون:
<%
'///// إنشاء كائن مكون
تعيين objreference = server.createobject(exampleproject.exampleclass)
'///// قم بتعيين المتغيرات المحلية كمعلمات للطريقة
aspname = إيريك كلابتون
الصفحة=56
aspephasis = صحيح
'///// اتصل بطريقة المكون وقم بتخزين القيمة المرجعة
strmethodreturn = objreference.examplemethod(aspname، aspage، aspemphasis)
'///// أرسل القيمة المرتجعة إلى المتصفح الزائر
الاستجابة.الكتابة (strmethodreturn)
'///// امسح الكائن المكون
تعيين objreference = لا شيء
%>
سيؤدي تخزين كود asp أعلاه في ملف asp إلى إنتاج مخرجات السلسلة التالية:
يبلغ عمر إيريك كلابتون أكثر من 20440 يومًا.
تمكين كود asp لاستدعاء ملفات dll
يتمثل اختبار المكون الخاص بنا في السماح لنظام التشغيل Windows بمعرفة مكان تخزينه ومتى يستدعيه رمز ASP. أولاً، حدد رمز "تشغيل" أو "تشغيل/بدء" في قائمة VB، وسيقوم VB بتسجيل المكون مؤقتًا في النظام.
نصيحة: لا يمكنك استخدام المتصفح لتحميل ملفات ASP مباشرة مثل تحميل ملفات html التي يجب تحميلها في المتصفح من خلال خادم الويب.
سيعرض المتصفح الكلمات "عمر إريك كلابتون يزيد عن 20440 يومًا".
لكي يتم تشغيل المكون على خوادم أخرى، يجب تجميعه في ملف dll ثم تسجيله على الخادم. بالطبع، إذا كنت تريد استخدام المكون بشكل دائم على كمبيوتر التطوير، فستحتاج أيضًا إلى تجميعه وتسجيله. الملف الوحيد المطلوب لتشغيل هذا المكون على أجهزة كمبيوتر أخرى هو ملف dll المترجم. بالطبع، يتطلب هذا تثبيت ملف مكتبة وقت التشغيل vb على الكمبيوتر.
إن كيفية تجميع الكود المصدري للمكون للحصول على ملف dll وكيفية تسجيل المكون على الكمبيوتر هي خارج نطاق هذه المقالة، لذلك لن نقوم بوصفها بالتفصيل.
كمنتج ثانوي لكتابة مكونات خادم IIS، يمكننا استدعاء أساليب المكونات المكتوبة من أي ملف ASP ومكونات VB الأخرى، مما سيؤدي إلى تحسين مرونة ونمطية التعليمات البرمجية.