دعونا نتحدث قليلا عن ناحية يهملها المبرمج العربي على الأغلب
ألا و هي تحسين أداء التطبيق بشكل عام و تطبيقات الأجهزة الكفية بشكل خاص
قد يظن البعض ان تحسين أداء التطبيق يكون في مجال التعامل مع الرسوميات فقط
لكن هذا الكلام غير صحيح
يشمل تحسين أداء التطبيق العديد من النقاط منها تحسين التعامل مع الرسوميات و إدارة الذاكرة
و التعامل مع البيانات و كيفية الوصول إليها و أساليب البحث و حتى الخوارزميات الحسابية
فلنبدأ و لننطلق من الخطوة الأولى :
* - تحدثنا في هذا القسم عن تقنية تدعى PInvoke
الان انت تعلم ما هي PInvoke
قلت بأن هذه التقنية قد مرت معنا في القسم عدة مرات و هي تعتمد على استدعاء بعض الدوال و التوابع الموجودة في
نظام التشغيل من خلال الدوت نت لسد النقص الموجود في .NET Compact Framework
حسنا اذا كنت اريد القيام بأمر و كان هذا الامر يتم من خلال PInvoke فقط فلا بد ان أستخدمها
لكن في الحالة التي يكون لدي حل من خلال PInvoke و يكون لدي حل باستخدام Managed Code
(managed Code يعني اي كود مكتوب بإحدى لغات الدوت نت)
فأيهما يجب أن استخدم ؟
قد يقول البعض يجب ان نستخدم PInvoke طالما انها تستخدم دوال النظام نفسه و بالتالي ستكون اسرع خاصة انها Native Code
(Native Code هي الكود المكتوبة بلغة غير لغات الدوت نت و على الاغلب يقصد بها الكود المكتوب بالـ C++)
بينما استخدام Managed Code يعني ان الكود سيكون مخزنا كـ IL و من ثم سيحول إلى لغة الألة عند التنفيذ (خاصة ان .NET CF
لا يملك Native Image)
قد أخالفكم الرأي في هذا
اذا كان عندي حلان أحدهما باستخدام PInvoke و الاخر عن طريق .NET Compact Framework
سأختر الثاني بالطبع
لأن القيام بعملية من خلال PInvoke يستغرق من خمس مرات إلى ست مرات أكثر من القيام بعملية مماثلة باستخدام Managed Code
كما ان استخدام Managed Code له ميزة إضافية ألا وهي انك قادرة على التعامل مع المشاكل التي قد تحدث بشكل أفضل
كما ان ادارة الذاكرة ستكون افضل حيث ان الـ GC في .NET Compact Framework سيدير الذاكرة التي
يستخدمها Managed Code لكن في حالة PInvoke عليك تحرير المصادر التي استخدمتها بنفسك