تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
درس - كيف تصنع تطبيق Plug-Ins في في .Net
#1
كاتب الموضوع : أبو يعقوب

السلام عليكم ورحمة الله وبركاته

اليوم وأنا غارق في التفكير ببرنامجي القادم كانت احدى خططي هي جعل برنامجي قابل للتمدد (يعني قابل للتعديل حتى بعد بناء الملف التنفيذي له)

بحثت في Google ووصلت إلى مرادي في إحدى المدونات الأجنبية

الفكرة تتلخص في التالي

بناء واجهة لتكون حلقة الوصل بين التطبيق المضيف والمضاف (Plug-In)

نأتي الآن التطبيق:

سنقوم بإنشاء مشروع من نوع Windows Application
وليكن اسمه : PlugInHost ....... وهذا هو التطبيق الذي نريد تمديده
سننشئ مشروع اخر في نفس ال Solution (أفترض ان من يحتاج الى صناعة نظام قابل للتمدد ان يعرف كيف يفعلها J ) من نوع Class Library
وليكن اسمه : PlugIn ........ وهو الاضافة الى التطبيق

والآن ننشئ المشروع الاهم ( في نفس Solution ) من نوع Class Library وهو حلقة الوصل بين المشروعين السابقين

وليكن اسمه : PlugInLinker

الآن أول ما نبدأ به هو المشروع الثالث وسنقوم بإنشاء واجهة Interface (مجرد مثال) تحتوي على اجراء ShowMessage
ليكن اسمها مثلاً : IPlugIn


كود :
[color=#000000][COLOR=#007700]Public Interface [/color][COLOR=#0000bb]IPlugIn
    Sub ShowMessage[/COLOR][color=#007700]([/color][color=#0000bb]ByVal text [/color][color=#007700]As [/color][color=#0000bb]String[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Interface  
[/COLOR][/COLOR]


إحفظ ملفات هذا المشروع ونقوم بإضافته كمرجع Refrence للتطبيقين الآخرين
===============================
الآن نقوم ببناء فئئة Classداخل المشروع PlugIn ونضمن الواجهة بداخلها

وليكن اسمها مثلاً : PlugInClass

كود :
[color=#000000][COLOR=#007700]Public Class [/color][COLOR=#0000bb]PlugInClass
    [/COLOR][color=#007700]Implements [/color][COLOR=#0000bb]IPlugIn
    [/COLOR][color=#007700]Public [/color][color=#0000bb]Sub ShowMessage[/color][color=#007700]([/color][color=#0000bb]ByVal text [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700]) Implements [/color][color=#0000bb]PlugInLink[/color][color=#007700].[/color][color=#0000bb]IPlugIn[/color][color=#007700].[/color][COLOR=#0000bb]ShowMessage
        MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]text[/color][COLOR=#007700])
    [/COLOR][COLOR=#0000bb]End Sub
End [/COLOR][COLOR=#007700]Class  
[/COLOR][/COLOR]

ونحفظ هذا المشروع


الآن طريقة ربط ال Plug-In مع التطبيق الاساسي

دبل كلك على Form1

الآن سنقوم ببناء دالة لتحميل Plug-In (في وقت التنفيذ)

كود :
[color=#000000][COLOR=#007700]Function [/color][color=#0000bb]LoadPlugIn[/color][color=#007700]([/color][color=#0000bb]ByVal PlugInFile [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700]) As [/color][COLOR=#0000bb]IPlugIn
        [/COLOR][COLOR=#007700]Try
            [/COLOR][COLOR=#dd0000]'تحميل ملف ال plug-in داخل فئة من نوع assembly  
            Dim PlugInAssembly As Reflection.Assembly = Reflection.Assembly.LoadFrom(PlugInFile)

            Dim PlugInClass As IPlugIn
            Dim Types() As Type
            Dim FoundInterface As Type
            '[/COLOR][COLOR=#0000bb]للحصول على كل الانواع المعرفة داخل المجمع  
            Types [/COLOR][color=#007700]= [/color][color=#0000bb]PlugInAssembly[/color][color=#007700].[/color][COLOR=#0000bb]GetTypes
            حلقة تكرارية للبحث عن الفئة التي تحقق الواجهة المشتركة IPlugIn  
            [/COLOR][color=#007700]For [/color][color=#0000bb]Each PlugInType [/color][color=#007700]As [/color][COLOR=#0000bb]Type In Types
                FoundInterface [/COLOR][color=#007700]= [/color][color=#0000bb]PlugInType[/color][color=#007700].[/color][color=#0000bb]GetInterface[/color][color=#007700]([/color][color=#0000bb]GetType[/color][color=#007700]([/color][color=#0000bb]IPlugIn[/color][color=#007700]).[/color][color=#0000bb]FullName[/color][COLOR=#007700])
                If [/COLOR][COLOR=#0000bb]FoundInterface IsNot Nothing Then
                    PlugInClass [/COLOR][color=#007700]= [/color][color=#0000bb]DirectCast[/color][color=#007700]([/color][color=#0000bb]PlugInAssembly[/color][color=#007700].[/color][color=#0000bb]CreateInstance[/color][color=#007700]([/color][color=#0000bb]PlugInType[/color][color=#007700].[/color][color=#0000bb]FullName[/color][color=#007700]), [/color][color=#0000bb]IPlugIn[/color][COLOR=#007700])
                    Return [/COLOR][COLOR=#0000bb]PlugInClass
                End [/COLOR][COLOR=#007700]If
            [/COLOR][COLOR=#0000bb]Next
        [/COLOR][color=#007700]Catch [/color][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception

        End [/COLOR][COLOR=#007700]Try
        Return [/COLOR][COLOR=#0000bb]Nothing
    End [/COLOR][COLOR=#007700]Function  
[/COLOR][/COLOR]

والآن في حدث تحميل الفورم نقوم بتحميل المجمع plug-in

كود :
[color=#000000][COLOR=#0000bb]Dim PlugInPath [/color][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][color=#0000bb]IO[/color][color=#007700].[/color][color=#0000bb]Path[/color][color=#007700].[/color][color=#0000bb]GetDirectoryName[/color][color=#007700]([/color][color=#0000bb]Application[/color][color=#007700].[/color][color=#0000bb]ExecutablePath[/color][color=#007700]) & [/color][COLOR=#dd0000]"\PlugIn.dll"
        [/COLOR][color=#0000bb]Dim PlugIn [/color][color=#007700]As [/color][color=#0000bb]IPlugIn [/color][color=#007700]= [/color][color=#0000bb]LoadPlugIn[/color][color=#007700]([/color][color=#0000bb]PlugInPath[/color][COLOR=#007700])
        If [/COLOR][COLOR=#0000bb]PlugIn IsNot Nothing Then
            PlugIn[/COLOR][color=#007700].[/color][color=#0000bb]ShowMessage[/color][color=#007700]([/color][color=#dd0000]" بنجاح Plug-In تم تحميل وتشغيل"[/color][COLOR=#007700])
        Else
            [/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#dd0000]" Plug-In لم يتم تحميل "[/color][COLOR=#007700])
        [/COLOR][color=#0000bb]End [/color][COLOR=#007700]If  
[/COLOR][/COLOR]


وهكذا انتهى الدرس المختصر جداص والذي ليس للمبتدئين (اتمنى يخيبوني J )

آمل انكم فهمتم الطريقة ... انا عن نفسي مبسوووط اوي اوي اوي لاني واخيرا عرفت اعمل plug-in لبرامجي المستقبلية والبرنامج القادم سيكون كذلك ان شاء الله
والآن ادركت فائدة إحدى الفوائد الحقيقية لاستخدام الواجهات

المصدر
http://vbnotebookfor.net/2007/10/09/...-ins-in-vbnet/
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف تصنع نسخة إحتياطية لملفات الداتا بيز silverlight 0 375 31-01-16, 12:37 AM
آخر رد: silverlight
  تعلم كيف تصنع برنامج Notepad او مايسمى بالمفكرة AHMED`AMIN 8 1,911 10-10-12, 02:45 PM
آخر رد: مبرمج أوتار
  مقال- كيف تصنع ملفات المساعدة Help Files وتربطها مع برنامجك RaggiTech 0 731 05-10-12, 07:30 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت كبف تصنع ColorPicker RaggiTech 0 442 05-10-12, 06:53 PM
آخر رد: RaggiTech
  كيف تصنع ملف مصادر خارجى (Res) RaggiTech 0 335 05-10-12, 01:57 AM
آخر رد: RaggiTech
  درس- تعلم كيف تصنع برنامج ftp بالتفصيل + مثال RaggiTech 0 842 03-10-12, 02:14 PM
آخر رد: RaggiTech
  تعلم كيف تصنع HotKey باي مفتاح يعجبك حتي الموس لبرنامجك(طريقة سهلة جدا) RaggiTech 0 396 03-10-12, 09:52 AM
آخر رد: RaggiTech
  تطبيق تأثير الزجاج على الفيستا RaggiTech 0 296 03-10-12, 08:59 AM
آخر رد: RaggiTech
  تطبيق العمليات الحسابية بمرونة (فقط تكتب معادلتك) DynamicCalculate RaggiTech 1 467 03-10-12, 08:55 AM
آخر رد: RaggiTech
  تطبيق العمليات الحسابية بمرونة (Real Dynamic Calculate) -مـا بعد التطوير- RaggiTech 0 212 03-10-12, 08:53 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم