.

التوافقية في بيئة الدوت نت #Interoperability in DotNet C

csharpdotnet

(Interoperability) بالإمكان ترجمتها الى اللغة العربية بـ (التوافقية) أو (التشغيل المشترك) كذلك ومن اجل اللاحقة في الكلمة يمكن ترجمتها بـ (امكانية التشغيل التفاعلي) وهي المفضلة لدي, ماذا تعني.

الكلمة تشير الى طرفين يمكن تشغيلهما سوية بصورة متوافقة ومتفاعلة على رغم من اختلافهما لذلك لنقم بتعريف الطرفين.

الطرف الاول هو لغة البرمجة (ومن غيرها): تتميز لغة البرمجة #C في اصدارات بيئة DotNet من سنة 2000 وللأن والى ما شاء الله .... بصفه مهمه جدا وهي ادارة اللغة وبالمصطلح المعروف Managed اي عند كتابتك شفرة برمجية بلغة #C تكون هذه الشفرة Managed Code اي شفرة مدارة.

- ممن مدارة؟ هذا يؤدي بنا الى ركن من اركان بيئة DotNet ومن اهم اركانها وهو CLR اختصارا لـ (Common Language Runtime)

https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx

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

الطرف الثاني: هو كل الكائنات والمكتبات والبرامج خارج بيئة العمل والتي تكون غير مدارة UnManaged وغير مسيطر عليها من قبل الـ DotNet والـ CLR. مثلا: COM, COM+, C++components, ActiveX components, and Microsoft Win32 API

https://msdn.microsoft.com/en-us/library/ff647812.aspx

عليه عندما تريد استخدام مكتبة في الويندوز (غالبا ماتكون موجودة في مجلدات system على شكل ملفات ربط DLL) او API لأجهزة خارجية او لبرامج مثل الأوفيس يكون لديك خيارين:

 اما استدعاء هذه الدوال المكتبية بصورة مباشرة حيث يرتبط برنامجك مباشرة بها ويكون قيد التوقفات والاستثناءات وظروف عملها والتي تكون عادتاً غير مألوفة لديك

او تستخدم طريقة عمل Interoperability والتي تعزل هذه الدوال عن برنامجك وتربطها بربط مسيطر عليه لتكون الشفرة البرمجية محمية بشكل أكبر.

لم يبقى سوى مثل لتوضيح ما سبق (vs2010) (ورب مثال خيرا من مقال)

سوف نستخدم Interop هنا من اجل الاتصال بالـ COM الخاص بمايكروسوفت اكسل من اجل تكوين ملف اكسل ووضع بعض البيانات في مدى خلايا معين، هذا المثال تستطيع إيجاده في MSDN  هنا

https://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx

1. تأكد اولا من تنصيب الكسل في الكمبيوتر

2. انشئ مشروع جديد من نوع Console

3. اختر Add Reference في المشروع ومن ثم اختر تبويب COM

4. اختر (Excel 12 Object Library) او حسب نسخة الاوفس المنصبة لديك 12,11,10,….

5. اضغط OK ,وهنا تم اضافة جميع ما يتعلق بالـ Interop   لديك وسوف تستخدمه بالشفرة البرمجة التالية

6. افتح ملف Program.cs واضف في قسم الـ Using

using System.Reflection;

using Microsoft.Office.Interop.Excel;

1- في دالة الـ Main الصق الكود

2-  التالي:

           

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

              if (xlApp == null)

              {

              Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct.");

              return;

              }

              xlApp.Visible = true;

              Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

              Worksheet ws = (Worksheet)wb.Worksheets[1];

              if (ws == null)

              {

              Console.WriteLine("Worksheet could not be created. Check that your office installation and project references are correct.");

              }

              // Select the Excel cells, in the range c1 to c7 in the worksheet.

              Range aRange = ws.get_Range("C1", "C7");

              if (aRange == null)

              {

              Console.WriteLine("Could not get a range. Check to be sure you have the correct versions of the office DLLs.");

              }

              // Fill the cells in the C1 to C7 range of the worksheet with the number 6.

              Object[] _args = new Object[1];

              _args[0] = 6;

            aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, _args);

              // Change the cells in the C1 to C7 range of the worksheet to the number 8.

              aRange.Value2 = 8;

3. نفذ البرنامج لتحصل على ملف اكسل.

 

اعداد المهندس سامر سامي

Joomla Templates - by Joomlage.com