مقدمة إلى دعم مكونات COM في سيلفرلايت 4

This article is available in English too, check it out here.

اقرأ: نماذج من دعم مكونات COM في سيلفرلايت 4

سيلفرلايتفي أبريل 2010 السابق أطلق الإصدار الرابع من سيلفرلايت، وكانت واحدة من أهم معالم ومميزات هذا الإصدار هو دعمه لمكونات COM في تطبيقات سيلفرلايت التي تعمل خارج المتصفح OOB (اختصارا لـ Out-of-Browser، أو يمكننا تسميتها بتطبيقات سطح المكتب الخاصة بسيلفرلايت.)

أولا: ما هي مكونات COM؟

مكونات COM (أو Common Object Model) هي تقنية خاصة بمايكروسوفت قدمت في عام 1993، وهي ببساطة عبارة عن مكتبات ثنائية Binary تحوي أوامر وأكواد يمكن تطبيقها، فيمكننا مثلا مقارنة مكونات COM بمكتبات الدوت نت Assemblies فهي مثلها تماما ولكن الفارق أن مكونات COM تم تطويرها بتقنيات أخرى وبلغات أخرى (مثل C++ وفيجوال بيزك 6) لهذا فهي يمكنها تنفيذ بعض العمليات التي من الصعب تطبيقها في بيئة الدوت نت.

اليوم هناك العديد من مكونات COM الموجودة على الساحة، فمثلا برمجة تطبيقات الأوفيس تقوم بشكل كامل على مكونات COM، أيضا العديد والعديد من إمكانيات الويندوز والمتوفرة فقط من خلال مكونات COM مثل إمكانية التحدث وقراءة الكلمات Text-to-Speech. بالإضافة إلى ذلك، فهناك العديد من مكونات وأدوات ActiveX، والعديد والعديد من التطبيقات التي توفر واجهة برمجية من خلال مكونات COM مثل قارئ أدوبي Adobe Reader والذي يمكنك من قراءة ملفات PDF من خلال واجهة برمجية تم تطويرها بتقنيات COM.

لهذا وذاك يمكننا القول بأنه لا يمكنك الاستغناء أبدا عن دعم COM سواء في تطبيقات سطح المكتب المعروفة بـ WinForms أو WPF، أو حتى في تطبيقات سيلفرلايت لسطح المكتب. ويمكننا أيضا إضافة أنه لا يمكنك إعادة برمجة هذه المكونات مرة أخرى في بيئة الدوت نت وذلك بسبب إما عدم توافر الوقت أو الخبرة اللازمة لديك أو لاستحالة تطبيقها نظرا لمحدودية بيئة الدوت نت.

ثانيا: ما هي تطبيقات سيلفرلايت لسطح المكتب Out-of-Browser Applications أو OOB؟

كلنا نعلم تعلم أن تطبيقات سيلفرلايت تعمل على الويب وأنها بديل مايكروسوفت للفلاش Adobe Flash، هذا صحيح ولكن الأمر لا يقتصر على ذلك!

في يوليو 2009 كان الإصدار النهائي من سيلفرلايت 3، وكانت واحدة من مميزاته العظيمة هو أنه يدعم تشغيل تطبيقات سيلفرلايت من على جهاز الكمبيوتر وبدون الحاجة لتكون متصلا بالشبكة، وتمت تسمية هذه الميزة بتطبيقات سطح المكتب أو التطبيقات الخارجة عن المتصفح Out-of-Browser Applications (وتختصر إلى OOB.) وبالطبع فهذه الميزة جاءت بفائدة كبرى على مطوري التطبيقات، فالآن يمكن لبرنامجك العمل على الويب أو تنصيبه على الجهاز واستكمال العمل به حتى بدون الاتصال بالشبكة، أيضا فالميزة الكبرى هو أن هذه التطبيقات مثل نظيرتها في الويب تعمل في أي مكان، فيمكنك تشغيل تطبيق سيلفرلايت لسطح المكتب على نظام لينوكس وبدون أي تعديلات. (مثير أليس كذلك؟)

ثالثا: موقف سيلفرلايت من مكونات COM؟

بدءا من الإصدار 4 من سيلفرلايت أصبح يمكنك التعامل مع مكونات COM من خلال سيلفرلايت، ولكن، ربما لا تجده غريبا، فنظرا للقيود الخاص بتأمين المستخدم Security فلا يمكنك التعامل مع مكونات COM إلا بشرطين:

  1. أن يعمل تطبيقك على سطح المكتب OOB.
  2. أن يحصل تطبيقك على ثقة أعلى Elevated Trust يعطيها لك المستخدم.

ربما تظن عند قراءتك لهذه الشروط أن الأمر معقدا ولكن الحقيقة أنه أبسط من ذلك بكثير ببساطة ضغطتين بزر الفأرة، فيمكنك من خلال خصائص مشروع سيلفرلايت 4 أن تحدد سطح المكتب كبيئة عمل، وأن تحدد أيضا أن تطبيقك يتطلب الثقة الأعلى Elevated Trust كي يستطيع إكمال مهامه.

أيضا نلفت نظرك إلى أن مكونات COM خاصة بنظام تشغيل ويندوز، وبالتالي لا يمكن للتطبيقات المعتمدة على تطبيقات COM أن تنجز مهامها على نظام آخر مثلا لينوكس.

برمجيا، يدعم سيلفرلايت 4 تطبيقات COM عن طريق شيئين:

  1. الكلاس AutomationFactory الموجود في النطاق System.Runtime.InteropServices.Automation والموجود في المكتبة الرئيسية System.Windows.dll والذي يحوي أوامر إنشاء مكونات وعناصر COM.
  2. تقنية الأكواد الديناميكية Dynamic Code والتي أطلقت في أول مرة في بيئة الدوت نت 4 والتي تستطيع من خلالها التعامل مع تطبيقات COM بحرية وبساطة أكثر وبدون الحاجة إلى إضافة عناصر من هذه المكونات إلى التطبيق وغيرها.

في الدروس القادمة بإذن الله تعالى نعطي عدة أمثلة وعدة نماذج على الاستفادة من مكونات COM في سيلفرلايت 4 ونشرح تفصيليا كيفية الاستفادة من هذه الميزة الخطيرة لتطوير تطبيقات متطورة إلى أبعد درجة.

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

اخترنا لك:

أحدث المواضيع:

هل أعجبتك؟ شارك بها...
  • Pingback: Introducing COM Automation in Silverlight 4 | Just Like a Magic()

  • Pingback: مع الدوت نت » المواضيع » نماذج من دعم مكونات COM في سيلفرلايت 4()

  • wasim

    اولا اشكرك على التدوينة الرائعة .. لاكن اود ان اسأل
    “مثل نظيرتها في الويب تعمل في أي مكان، فيمكنك تشغيل تطبيق سيلفرلايت لسطح المكتب على نظام لينوكس وبدون أي تعديلات. (مثير أليس كذلك؟)”
    هل تقصد أن السيلفر لايت يعمل على نظام اللينكس اذا لم يكن يستخدم COM ؟؟
    وهل الامر ممكن بالنسبة ل WinForms
    ام انه يقتصر فقط على تطبيقات السيلفرلايت ؟؟

    • نعم بالتأكيد، واحدة من أهم مميزات تطبيقات سيلفرلايت (وربما هذا ما يجعلها بهذه القوة) هي أنها غير مرتبطة بنظام معين، فيمكنك مثلا تشغيل تطبيق سيلفرلايت لسطح المكتب على ويندوز، لينوكس، أو غيره. ولكن بالطبع إذا كان تطبيقك يعتمد على تقنية خاصة بنظام معين (مثل اعتمادك على تقنية COM الخاصة بالويندوز) فإن وقتها لن يستطيع برنامجك تنفيذ الأكواد الخاصة بهذه التقنية، سوف تستطيع تشغيل البرنامج بدون أي مشكلات ولكن عندما تحاول تنفيذ الأكواد الخاصة بـ COM مثلا سوف يحدث خطأ ويفشل التطبيق في الاستمرار.

      وأيضا، فهذه الميزة الجبارة غير مرتبطة بتطبيقات سطح المكتب فقط، بل إنها تمتد إلى تطبيقات سيلفرلايت للويب، فيمكنك ببساطة جدا وبدون أي تغييرات أو تعديلات في الكود (حتى بدون إضافة سطر واحد)، يمكنك أن تقوم برفع تطبيق سيلفرلايت على سيرفر لينوكس وبدون أي مشاكل، فلست بحاجة إلى سيرفر ويندوز أو أي إعدادات خاصة على السيرفر أو غيره.

      من ناحية أخرى فتطبيقات النماذج WinForms وكذلك تطبيقات WPF مرتبطة ارتباطا وثيقا بنظام تشغيل ويندوز ولا يمكنها العمل على نظام آخر، ولكن هناك مشروع يسمى بـ MonoProject (الموقع: http://www.mono-project.com) وهو عبارة عن بيئة متكاملة (شبيهة بالفيجوال ستوديو ولكنها بالطبع أقل منه بكثير) مجانية مفتوحة المصدر يمكنك من خلالها كتابة أكواد سي شارب وترجمتها إلى تطبيقات تعمل على أنظمة تشغيل لينكس/ماك/إلخ. ولكن لاحظ أن هذا يتطلب منك فهم آلية برمجة النظام المستهدف والمكونات التي يدعمها مشروع Mono. أيضا لاحظ أنه حتى الآن لا يمكنك من خلال هذا المشروع إنشاء تطبيق يعمل على جميع الأنظمة، بل أنه يجب عليك إعادة برمجة التطبيق لكل نظام تشغيل. هذا بالنسبة لتطبيقات WinForms ونظيرتها في لينكس، أما WPF فللأسف لا يدعمها Mono ولم أجد حتى الآن ما يدعمها.

      وأخيرا، نشكركم على مروركم الكريم وتواصلكم معنا.