محاضرة ASP 10: اكتب المكونات بنفسك
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:54:53
في المحتوى السابق، تعلمنا كيفية استخدام المكونات على الرغم من وجود العديد من المكونات على الإنترنت، إلا أنه غالبًا ما يتطلب منك مكون صغير صرف دولارات أمريكية، وهناك عدد قليل جدًا من المكونات المنتجة محليًا. لا يمكنك العثور على المكان، إنه أمر سهل، انسَ الأمر، فقط اكتبه بنفسك. في الواقع، إن الأمر يتعلق فقط بالبدء في كتابة مكونات منخفضة المستوى والبدء ببطء في كتابة مكونات عالية المستوى. لكتابة مكونات خادم ActiveX، هناك العديد من الأدوات للاختيار من بينها: Visual Basic، وC++، وJava، وما إلى ذلك. وهنا نختار أبسط VB6.0، طالما أنك استخدمت VB من قبل، فيمكنك إنشاء واحدة في أقل من ساعة واحدة القطعة يخرج.
1. كتابة المكونات بسرعة - الخطوات الأساسية لكتابة المكونات يشرح هذا الجزء بشكل أساسي الخطوات الأساسية لكتابة المكونات إذا كانت لديك الرغبة في معرفة المزيد، فيرجى الرجوع إلى قسم "إنشاء ActiveX DLL" في تعليمات VB6.0. المستند (الوثائق في مكتبة MSDN اسم الملف هو Vbcon98.chm).
الغرض: كتابة أبسط مكون جامع. هذا المكون له خاصيتين وطريقة واحدة. لنبدأ من المكان الأكثر شيوعًا، وهو افتراض أن هذا المكون موجود بالفعل وننظر إلى الكود الذي يستخدم هذا المكون في ASP:
<%
ديم أوبجسوم
'قم بإنشاء المكون أولاً، معرف المكون هو TestDll.Sum
تعيين objSum = Server.CreateObject("TestDll.Sum")
'تذكر "TestDll" و"Sum" في TestDll.Sum.
objSum.augend = 10.52 'السمة augend هي المجموع
objSum.addend = 382.41 'سمة الإضافة هي الإضافة
النتيجة = objSum.Plus 'مجموع أسلوب زائد
الرد.اكتب النتيجة
تعيين objSum = لا شيء
%>
يرجى التأكد من تذكر هذه الكلمات الرئيسية: TestDll، Sum، augend، addend، Plus، والتي ستكون مرتبطة ارتباطًا وثيقًا بالعمل التالي. فيما يلي الخطوات التفصيلية:
1. قم بتشغيل VB6.0، في القائمة "ملف"، انقر فوق "مشروع جديد" ← في مربع الحوار "مشروع جديد"، انقر نقرًا مزدوجًا فوق أيقونة "ActiveX DLL" ← سيقوم Visual Basic تلقائيًا بإضافة وحدة نمطية للفئة إلى الإصدار الجديد مشروع Class1 (يمكن رؤيته في "Project Explorer"، كما هو موضح في الشكل 1).
2. اضغط على المفتاح F4 لفتح نافذة الخصائص. انقر نقراً مزدوجاً فوق سمة "الاسم" وقم بتغيير "Class1" إلى Sum.
3. من القائمة المشروع، انقر فوق خصائص المشروع 1 لفتح مربع الحوار خصائص المشروع. املأ TestDll في "اسم المشروع" و"إنشاء مثال ActiveX DLL" في "وصف المشروع". كما هو مبين في الشكل 2.
نصيحة: هل تفهم معنى المعرفين TestDLL.Sum الموجودين في مكون إنشاء ASP؟
4. في القائمة "ملف"، انقر فوق "حفظ المشروع" واحفظ ملفات المشروع بالأسماء التالية: SetupDll.cls وSetupDll.vbp.
5. إنشاء خصائص لفئة Sum:
(1) في قائمة "الأدوات"، حدد "إضافة عملية" لفتح مربع الحوار "إضافة عملية". في مربع "الاسم"، أدخل augend، وانقر فوق "خصائص"، ثم انقر فوق "موافق"، كما هو موضح في الشكل 3 (ملاحظة: يجب أن يكون التركيز الحالي على نافذة التعليمات البرمجية، وإلا فإن قائمة "إضافة إجراء" ستكون غير صالحة ).
(2) في قائمة "الأدوات"، حدد "إضافة عملية" لفتح مربع الحوار "إضافة عملية". في مربع الاسم، أدخل ملحق، وانقر فوق خصائص، ثم انقر فوق موافق.
6. قم بإنشاء طريقة لفئة Sum:
من القائمة أدوات، انقر فوق إضافة إجراء لفتح مربع الحوار إضافة إجراء. في مربع "الاسم"، أدخل علامة الزائد. في النوع، يمكنك تحديد "الروتين الفرعي" أو "الوظيفة". في هذا المثال، نظرًا لأنك تريد إرجاع مجموع الإضافة والجمع، انقر فوق "وظيفة" ثم انقر فوق انقر فوق موافق.
الآن، تم استخدام الكلمات الخمس الرئيسية في كود ASP السابق، والآن أنت تفهم الكثير من الأشياء.
7. جميع الرموز الموجودة في نافذة Sum code لوحدة الفصل هي كما يلي:
الخيار صريح
mdbl_augend خاص كمزدوج
mdbl_addend خاص كمزدوج
الملكية العامة احصل على augend() كمزدوج
augend = mdbl_augend
نهاية الملكية
السماح للملكية العامة بالزيادة (ByVal vNewValue As Double)
mdbl_augend = vNewValue
نهاية الملكية
الملكية العامة احصل على الإضافة () كمزدوج
addend = mdbl_addend
نهاية الملكية
الملكية العامة تسمح بإضافة (ByVal vNewValue As Double)
mdbl_addend = vNewValue
نهاية الملكية
الوظيفة العامة بلس ()
زائد = أوجيند + إضافة
وظيفة النهاية
لقد لاحظت أن الكود أعلاه يختلف قليلاً عن الكود الذي أنشأه النظام، ويرجع ذلك أساسًا إلى استبدال جزء الملكية العامة Get augend() As Variant بنوع البيانات الفعلي Double.
ملاحظة: في الواقع، عند تنفيذ عبارة x = objSum.augend، يتم استدعاء إجراء Property Get للحصول على قيمة mdbl_augend. عند تنفيذ عبارة objSum.augend = 10.52، يتم استدعاء إجراء Property Let ويتم تعيين 10.52. إلى mdbl_augend.
8. الخطوة الأخيرة هي النقر فوق "إنشاء .Dll(K)..." في القائمة "ملف" لإنشاء الملف SetupDll.dll.
في هذه المرحلة، تم إنشاء المكون. الآن، يمكننا أولاً كتابة مشروع اختبار في VB6 لاختبار ما إذا كان الملف صحيحًا.
1. في قائمة "ملف"، انقر على "مشروع جديد" ← انقر نقرًا مزدوجًا على "Standard EXE".
2. في قائمة "المشروع"، انقر فوق "مرجع" ← اضغط على الزر "استعراض" في مربع الحوار "المرجع"، وحدد ملف "SetupDll.dll" الذي تم تجميعه للتو ← انقر على "موافق".
3. وأخيرًا، قم بكتابة الكود التالي في نافذة الكود:
الخيار صريح
نموذج فرعي خاص_تحميل()
خافت objSum كـ TestDll.Sum
تعيين objSum = مجموع جديد
objSum.augend = 10.52
objSum.addend = 382.41
MsgBox objSum.Plus
نهاية الفرعية
قم بتشغيله والنتيجة صحيحة بعد ذلك نستخدم هذا المكون في ASP. انسخ SetupDll.dll إلى خادم الويب، واستخدم الأمر "Regsvr32.exe setupdll.dll" لتسجيل المكون، ثم قم بتنفيذ برنامج ASP في بداية هذا القسم في المستعرض. إذا لم ينجح ذلك، يمكنك محاولة حزمه باستخدام أداة التعبئة VB6 أولاً، ثم تثبيته. سيتم تسجيل المكونات تلقائيًا، وسيتم أيضًا تثبيت بعض ملفات تشغيل VB6 الضرورية تلقائيًا.
ملاحظة: كافة البرامج الموجودة في هذا الجزء موجودة في ملف Setupdll.zip الخاص بحزمة التنزيل.
في المثال أعلاه، نستخدم إجراءات الخاصية Property Get وProperty Let لإضافة خصائص (يقوم Property Get بقراءة قيمة الخاصية، ويقوم Property Let بتعيين القيمة للخاصية، إذا كنت بحاجة إلى التحقق من القيمة المحددة، فيمكنك ذلك). اكتب الكود المناسب في كود عملية Property Let. مثل الكود التالي:
السماح للملكية العامة بالزيادة (ByVal vNewValue As Double)
إذا كانت vNewValue <100 ثم
MsgBox "ماذا تفعل! إذا كانت القيمة أقل من 100، فقط قم بالحساب بنفسك."
آخر
mdbl_augend = vNewValue
نهاية إذا
نهاية الملكية
2. طرق أخرى لإضافة خصائص وأساليب إلى المكونات
1. أبسط طريقة لإضافة السمات: إضافة المتغيرات العامة، كما في المثال أعلاه، أبسط كود هو كما يلي:
الخيار صريح
ugend العام كمزدوج ' أضف سمة ugend
الإضافة العامة كمزدوجة ' أضف سمة الإضافة
الوظيفة العامة Plus () مزدوجة
زائد = أوجيند + إضافة
وظيفة النهاية
ومع ذلك، يمكن لهذه الطريقة فقط تعيين خصائص القراءة/الكتابة ولا يمكنها التحقق من القيمة المعينة. إذا كنت بحاجة فقط إلى إضافة سمة للقراءة فقط: في المثال أعلاه، احذف عملية Public Property Let augend(ByVal vNewValue As Double)، ثم تصبح augend سمة للقراءة فقط ولا يمكن تعيين قيمة لها. بالطبع، إذا كنت تريد إضافة خاصية للكتابة فقط، فما عليك سوى حذف إجراء Property Get.
2. باستخدام الأداة المساعدة منشئ الفئة
توجد أيضًا أداة لإضافة خصائص وأساليب في VB6: في قائمة "الوظائف الإضافية"، انقر فوق "إدارة الوظائف الإضافية"، وحدد "VB Class Builder Utility" في مربع الحوار "إدارة الوظائف الإضافية" المنبثق، و تحميل حدد "تحميل/تفريغ" في السلوك (الشكل 4). ثم انقر فوق Class Builder Utility في قائمة الوظائف الإضافية وستعرف كيفية استخدامها.
3. أخبرك ببعض المشكلات التي يجب الانتباه إليها
1. المثال أعلاه عبارة عن مكون بسيط للغاية، وعادة ما تحتوي المكونات الأكثر عملية على وحدة واحدة على الأقل.
2. إذا لم تكن حذراً، يمكن لـ Visual Basic إنتاج مكونات "مفردة الترابط".
ربما يكون أحد المزالق الأكثر شيوعًا هو استخدام مكونات غير مصممة للتشغيل ضمن ASP، مثل المكونات "ذات الترابط المفرد". لذلك، تأكد من تعيين وحدة الترابط على "ترابط الوحدات" في علامة التبويب "عام" في صفحة "خصائص المشروع".
3. حول الخطأ "عدم تطابق النوع".
الاقتراح الجيد هو إعلان المعلمة Out كمتغير. لاحظ أن هذا لم يتم تعيينه في المثال أعلاه.
4. حول استخدام المتغيرات العالمية.
حاول تجنب استخدام المتغيرات العامة في المكونات. في مصطلحات Visual Basic، هذا يعني أنه لا توجد متغيرات عامة أو عمومية في وحدة نمطية .BAS قياسية. لأن المتغيرات العالمية ليست عالمية حقًا. كل موضوع له نسخته الخاصة، وإذا تم تنفيذ عدة طرق في نفس الموضوع، فسوف يرون نفس المتغيرات، وإلا فسيصلون إلى نسخ مختلفة من هذه المتغيرات. هذا يعني أنه يمكنك تعيين قيمة لمتغير عام (في مؤشر الترابط A)، ولكن لا يمكن لمستخدم آخر له (ينفذ في مؤشر الترابط B) رؤية القيمة الجديدة. والسبب في ذلك هو أن Visual Basic يستخدم داخليًا "التخزين المحلي لمؤشر الترابط (TLS)" للإشارة إلى المتغيرات العمومية. وهذا يعني أن كل مؤشر ترابط لديه نسخته الخاصة من المتغير العام، ونظرًا لوجود نسخ متعددة منه، فإن البيانات العامة ليست "عامة" حقًا. أي أن المستخدمين الذين يعملون في نفس الموضوع سيصلون إلى نفس المتغير، سواء كانوا يتوقعون ذلك أم لا.
وأخيراً، بالمناسبة، يقدم VB6.0 نوعاً جديداً من تطبيقات Visual Basic: تطبيق IIS. يمكنك إنشاء تطبيقات IIS تمامًا مثلما تقوم بإنشاء ActiveX DLLs. ويمكن إنشاء أي تطبيق تم إنشاؤه باستخدام Active Server Pages في بيئة تطوير VB. ويمكنك استبدال كافة صفحات Active Server بالكامل بتطبيق VB واحد.