الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

COM Interoperability Explained

مغلق
بدأه Eclipse في 26 أكتوبر 2004 · 2 رد · 677 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

COM Interoperability Explained

بسم الله الرحمن الرحيم

سأقوم اليوم بشرح موضوع ال COM Components و كيفية استخدامها في التطبيقات المبنيه في الدوت نت, و هذا هو اول مقال اقوم بكتابته و خاصة باللغة العربية فارجو من الاخوة ان وجد خطأ ان ينبهني و سأقوم بتصحيح الخطأ

تخيل انك مطور للغة الفيجوال بيسك و قمت بكتابه العديد من المكونات عن طريق هذه اللغة و انك تعتمد و بشكل اساسي علي مكوناتك التي قمت بتطويرها علي مدار الوقت في بناء اغلب تطبيقاتك , و مع ظهور بيئة الدوت النت اردت التحويل الي هذا البيئة و الاستفادة من جميع مميزاتها.

فمن المؤكد ان قرار الانتقال الي بيئة تطوير جديدة سيكون امر صعب لانه ليس من السهل التخلص من نتاج سنين من العمل و التطوير!

و لكن ميكروسوفت عندما اصدرت بيئة الدوت , ادركت ان قرار الانتقال الي الدوت نت لن يكون سهلا علي الاطلاق و ذلك للعديد من الاسباب منها مثلا : ان الدوت نت بيئة غنية جدا بالادوات و المكونات و هذا سيتطلب وقت من المطور لكي يتقن استخدامها.

و لذا قد اتاحت ميكروسوفت للمطور استخدام المكونات التي تم بنائها خارج بيئة الدوت النت لكي تستخدم في بناء تطبيقات الدوت نت من خلال ما يسمي بال Com Components Interoperability

كلنا نعرف ان الكود او المكونات التي تبني في بيئة الدوت نت يطلق عليها Managed Code و معني managed ان الكود يتمتع بالمميزات و الخواص التي تعطيعها ال CLR مثل ال garbage collection , و ال memory management و ال security .

و العكس فالمكونات التي لا تخضع لسيطره ال CLR و الخواص التي تتيحهاالدوت نت يطلق عليه unmanaged code .

كيفيه تداخل الmanaged code مع ال unmanaged code في بيئة الدوت نت:

المكونات المبنة في بيئه الدوت نت او ال managed code تعتقد ان كل المكونات الموجوده و المتداخله معه تخضع لسيطره ال CLR و الخواص التي تتيحها و هنا تظهر المشكلة !!

فكيف يمكن للمكونات المبنية في بيئات اخري غير الدوت نت ان تتداخل مع المكونات المبنية في الدوت نت؟

فكان و لابد من انشاء بيئه وسيطه ليتم التداخل بينهما و هنا يأتي دور ال runtime callable wrapper

ال runtime callable wrapper هو عباره عن بروكسي ( بوابة ) يتلقي الاوامر من مكون و يقوم بادخال تعديلات عليه ثم تمريرها الي مكون اخر لكي يتم التداخل بينهما

و لكي نبسط الموضوع فيمكننا ان نتخيل ال

runtime callable wrapper كمترجم بين شخصين فهو يتلقي الحديث من شخص ثم يقوم بترجمته و تحويله الي اللغه التي يفهما الاخر و العكس

طرق استخدام ال unamaged components في تطبيقات الدوت نت

سنعرض الان الطرق المختلفه لاستخدام ال com compnents في تطبيقات الدوت نت

و للعلم فان هذه الطرق تنطبق علي ActiveX Controls و ال Com Components و ال Com + Components.

اولا هناك طريقتين الاولي استخدام ال tlbimp.exe ( Type Library Importer Tool) و الاخري الاستخدام المباشر للمكون عن طريق ال Visual Studio.Net .

ملحوظه :1.لكي تتمكن من تطبيق الخطوات التاليه يمكنك استخدام أي dll مبني بلغه اخري مثل ال Visual Basic او ال Visual Basic.Net او ان تقوم بانشاء مشروع عن طريق الvisual studio V.06

و قم بتسميته MyComComponent ثم اضف Class ا لي المشروع و ليكن اسمه MyClass

ثم قم بتحويله الي dll عن طريق

File à Make MyComComponent.dll

2. لكي تتمكن من استخدام أي مكون فلابد ان يكون مسجلا!

فاذا منت قد بنيته مستخدما Visual studioV.06 فقد تم تسجيله تلقائيا اما اذا كنت تريد استخدام مكون من الانترنت او من مطور اخر فلابد من تسجيله اولا مستخدما الاداة regsvr32.exe

مثلا regsvr32.exe ExternalComCompnent.dll

فExternalComComponent.dll هو المكون المراد تسجيله

اولا استخدام ال tlbimp.exe :

قم بفتح ال Command Prompt الخاصه بال Visual Studio.Net عن طريق الخطوات التالية

Start à Programs àMicrosoft Visual Studio.Net à Visual Studio.Net Tools à Visual Stduio.Net Command Prompt

و من داخل ال Command Prompt قم الدخول الي الملف الدذي يحتوي علي ملف ال dll

ثم قم بكتابة هذا الامر

Tlbimp.exe MyComComponent.dll /out:MyManagedComCompnent.dll

الخطوة الثانية و هي انشاء ًهىWindows application لنختبر الCom Compnent و لكي تتمكن من استخدام ال dll في تطبيق الدوت نت , انشيء ال windows application

ثم من ال Solution Expolrer اخترReferences ثم Add Reference

استخدم Browse لكي تصل الي الملف الذي يحتوي ال MyManagedComCompnent.dll ثم Ok

الان يمكنك الذهاب الي الكود الخاص بالفورم المبني في ال Visual Studio.Net و قم بوضع reference الي MyManagedComComponent في اعلي الكود

Using MyManagedComComponent ;

و الان بعد اضافة الDirective الخاص ب MyManagedComComponent يمكنك الاشارة الي MyClass من داخل الكود و استخدام جميع ال Functions التي يحتويها MyClass كأنك تستخدم class مبني بلغه السي شارب

عن طريق الاشاره اليه

مثلا

MyClass aaa = new MyClass();

ثم استخدام ال functions مثلا

aaa.function

الطريقه الثانية استخدام ال Com Component مباشرة:

هي الاسهل و الابسط

كل ما عليك فعله هو : من خلال ال Solution Explorer à References à Add Reference

ثم اختر COM Tab و استخدام Browse حتي تصل الي MyComComponent.dll ثم Select ثم Ok.

ثم يمكنك من خلال الكود استخدام ال المكتبه داخل الكود الخاص بك مثلا

MyComComponent.MyClass aaa = new MyComComponent.MyClass();

هذا الطريقه توفر خطوات استخدام ال tlbimp.exe و تنشيء ال wrapper لك

و بعد ان تعرفنا علي كيفية استخدام ال unamanged components من خلال الدوت نت

يبقي لنا ان نوضح متي يتم تفضيل طريقة علي الاخري

فمثلا اذا كان ال Com Component سيستخدم في تطبيق واحد فالطريقه الافضل هي استخدامه مباشره عن طريق ال Visual stduio.Net اما اذا كان الComponent مشترك بين عده تطبيقات Shared Component

فالافضل لك هو استخدام ال tlbimp.exe ثم تسجيل الملف الناتج في ال GAC

Global Assembly Cache

#2

مقاله رائعه و تهم مطورى الدوت نيت و تحفز المطورين القدامى للانتقال للدوت نيت

اتمنى ان نرى المزيد منك إن شاء الله

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

بالصدفه وجدت الموضوع فى منتدى الفريق العربى للتكنولوجيا مع مداخله من حبيبكم هانى الاتاسى 015

http://www.arab-team.com/forum/index.php?showtopic=1812

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

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