الدرس التاسع: مكوناتCOM، استخدامها و بنائها …
نموذج كائن المكون Microsoft Component Object Model هو إحدى التقنيات البرمجية
المقدمة من مايكروسوفت كخطوة إيجابية تجاه مبدأ "الكود القابل لإعادة الاستعمال"،
حيث تمثل مكونات COM مجموعة من الدوال المغلفة داخل وحدات(أصناف) والتي يمكن
استخدامها من قبل التطبيقات الأخرى، فمثلا تستطيع إنشاء عدد من الدوال التي تتعامل
مع الملفات وبعد تغليفها في مكون COM، تستطيع الاستفادة منها في أي من تطبيقاتك
المستقبلية بعملية اتصال بسيطة بين تطبيقك ومكون COM، ومن الجدير بالذكر أن COM
أسلوب موحد، وهذا يعني إمكانية إنشاءها بأكثر من لغة كـ VC++ أو VB كما تستطيع
استخدامها في العديد من اللغات.
استعمال مكونات COM في VBScript
يمكن اعتبار المكون كوعاء يحتوي على صنف أو أكثر وكما رأينا من قبل فإنه قبل
استخدام صنف معين يجب علينا إنشاء كائن منه، وهذا ينطبق على مكونات COM ايضا، وفيما
يلي مثال يوضح كيفية استخدام هذه المكونات من خلال لغة VBScript والمثال مطبق على
أتمتة اكسيل أحد برامج طقم أوفيس من مايكروسوفت ..
كود:
--------------------------------------------------------------------------------
Dim objExcelApp,objExcelWk
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.visible = True 'إظهار برنامج اكسيل
Set objExcelWk = objExcelApp.WorkBooks.Add 'إضافة ورقة عمل
With objExcelApp.ActiveSheet 'إدراج قيم
.Cells(1,1) = "اسم الموقع"
.Cells(2,1) = "www.c4arab.com"
End With
objExcelWk.SaveAs "C:Site.xls" 'حفظ الملف باسم
objExcelApp.Quit 'إغلاق برنامج اكسيل
Set objExcelApp = Nothing 'تحرير الذاكرة
--------------------------------------------------------------------------------
لا شك انك لاحظت من خلال المثال السابق قوة COM وإمكانياتها التي ستخدمك كثيراً،
حيث استطعت زيادة قوة شيفرتك مئات المرات بعدد قليل من الأسطر.
كيفية ربط مكونات COM في VBScript
الربط Binding هو الأسلوب الذي يحدد متى وكيف يتم الاتصال بمكون COM وهناك أسلوبان
للربط هما الربط المبكر الذي يتم فيه تصريح المتغير كنمط كائن بعد إضافة مرجع
للصنف، أما الثاني فهو الربط المتأخر والذي يمثل الأسلوب الوحيد للربط في VBScript
حيث نستخدم الدالة CreateObject لإنشاء نسخة من مكون COM، أيضا يجب ملاحظة أن
الأسلوب الذي اتبعناه سابقا لإنشاء كائن من صنف داخلي يعتبر ربطا متأخرا أيضا.
نظرات أعمق إلى تقنية COM
كمبرمج VBScript لست بحاجة إلى معرفة المزيد حول COM ولكن المعرفة سوف تجعلك أكثر
ثباتا عند التعامل مع COM ومشكلاتها. وقد رأيت أنه من المفيد ذكر بعض الأمور
الرئيسة بشكل مختصر جدا، ولكنك ستتعرف أكثر على هذه التقنية عند استخدامها في لغات
متقدمة كـ VB، وربما عانيت منها الكثير إذا كنت من مبرمجي VC++ ..
واجهات الكائن Object Interfaces
جميع الكائنات تملك واجهة أو أكثر والتي تستخدم لتأسيس الاتصال بين العميل ومكون
COM، كما تقوم هذه الواجهات بتعريف الخصائص والطرق والأحداث التي يحويها المكون،
وفيما يلي بعض أهم واجهات COM.
الواجهة IUknown
وتعد من أهم الواجهات حيث تتعرف على كافة كائنات مكون COM كما تستخدم لمعرفة إذا
ما كان يدعم واجهات أخرى.
الواجهة IDispatch
و
تسمى الأتمتة وهي عنصر هام لاستخدام المكونات من لغات النصوص البرمجية.
الواجهة Dual
أو الواجهة المضاعفة وهي تمكننا من الاستفادة من مميزات الربط المبكر والمتأخر
بالشكل الملائم.
التسجيل Registration
قبل استخدام مكونات COM يجب تسجيلها، ويتم التسجيل في مسجل النظام حيث يتم إعطاء
المكون معرف فريد تقوم بإنشائه خوارزمية خاصة لهذا الغرض ويسمى GUID.
ويمكن تسجيل المكونات من نوع DLL من خلال البرنامج Regsvr32 كالتالي ..
كود:
-----------------------------------------------------------
Regsvr32 svr.dll
---------------------------------------------------------
أما المكونات من نوع EXE فيتم تسجيلها تلقائيا عند تشغيلها وتمرير الوسيطة
/Regserver لها.
مكونات COM مدعومة في VBScript بشكل واسع
تعتبر المكتبة Scripting Runtime أحدى مكونات COM المفيدة جدا لمستخدمي VBScript
وهذه المكتبة يتم تركيبها عند تركيب اللغة وتحتوي على الصنفين Dictionary و
FileSystemObject . أيضا هناك كائنان مبنيان داخل اللغة أي أننا لا نحتاج لاستخدام
الدالة CreateObject لإنشائهما وهما Err و RegExp وتعتبر المكونات السابقة أكثر
المكونات استعمالا لدى مطوري VBScript. وسنتطرق لها بشكل أكثر تفصيلا في دروس لاحقة
باذن الله.
بناء مكوناتك الخاصة
تستطيع تطوير مكون باستخدام لغة VBScript! ... بالطبع ليس بشكل كلي قادر على العمل
بمفرده ولكن بشكل اكثر بساطة، حيث تقوم بإنشاء الأصناف ثم باستخدام برنامج Windows
Script Component تقوم بتحويلها إلى مكونات وهي عبارة عن ملفات معتمدة على تقنية
XML، وتستطيع تحويل ملفاتك إلا مكونات بسهولة باستخدام المعالج الخاص بالبرنامج
السابق وهو على الرابط
http://www.msdn.microsoft.com/scrip...lets/wz10en.exe ، و بالنسبة لواجهات
COM فهي في الملف Scrob.dll الذي يعمل كوسيط بين مكوناتك المنشأة باللغات النصية
وبين البرنامج العميل.
ملاحظات عامة
· تستطيع استكشاف مكونات COM الموجودة في جهازك من خلال برنامج OLEView.exe والمرفق
مع حزمة Visual Studio والذي يعد أداة قوية لاستكشاف هذه المكونات.
· COM+ هي تطوير لفكرة COM وذلك لاستخدامها في تطبيقات n-tier الموزعة حيث يمكن
اعتبار COM+ أنها ناتج دمج أساس تقنية COM مع تقنيات اخرى، في مقدمتها MTS ملقم
معاملات مايكروسوفت.