السلام عليكم ورحمة الله وبركاتة
موضوعي اليوم عن واجهة تطبيقات برمجية API قمت بتصميمها وتحمل اسم NetworkService
وهي خاصة لبرمجيات الشبكات المكتوبة بلغة JAVA..
برمجة الشبكات في لغات البرمجة الحديثة-منها الJAVA- لا تتطلب خبرة كبيرة من المبرمج في مفاهيم الشبكات
حتى أن الأدوات البرمجية المتوفرة غير معقدة الإستخدام أو الفهم. ومع التصميم السليم يستطيع المبرمج إنشاء برامج فعالة تعمل على الشبكة وفي وقت قصير.
بل ان التحدي الذي يواجهة المبرمج في هذا المجال هو في مسائل -في الغالب- لا علاقة لها بكيفية نقل البيانات او البروتوكولات المستخدمةاو دور الاجهزة من كروت الشبكة وغيرة أو حتى إستخدام الادوات البرمجية API .
تلك المسائل التي تشكل التحدي هي متعلقة بمفهومين رئيسيين وهما Multithreading وMemory optimization
معروف عن البرامج التي تكون multithreaded انها أسرع في التنفيذ من البرامج التي هي single-threaded ولكنها تستهلك الذاكرة بشكل اكبر,واذا لم يتم تصميمها بشكل سليم فإنها لا تعتبر برامج فعالة.
والعكس صحيح بالنسبة للبرامج ال single-threaded ,حيث أن استخدامها للذاكرة اكثر كفائة (مقارنة بالبرامج الmultithreaded المصممة بشكل رديء ) ولكنها ابطأ في التفيذ أوالإستجابة.
في برمجة الشبكات (أو بالأصح تطبيقات الكمبيوتر التي تستخدم الشبكات) فإنك تحتاج لإستخدام تقنية ال multithreading بسبب أن برنامجك- ببساطة- يتعامل مع بيئة خارجية (الشبكة) والتي هي خارج حدود سيطرتة.
فأنت لا تتحكم بحجم ولا بوقت وصول البيانات التي يفترض ببرنامجك أن يستقبلها ويعالجها(والتي قد تكون قادمة من مصدر واحد أو اكثر), ولا تتحكم بقدرة الشبكة على الإستجابة كلما حاول برنامجك إرسال بيانات ما وأمور كثيرة أخرى تتطلب من برنامجك القدرة على المعالجة المتوازية concurrent processing. وفي نفس الوقت عدم إستهلاك الذاكرة بلا طائل.
كما أن برامج الشبكات عادة ما تكون مصممة للعمل لساعات طويلة وفي ظروف متقلبة قد تتعرض لها الشبكة كما أن بعض هذة البرامج يجب أن يعمل ك"خدمة خلفية " أي غير مرئية للمستخدم وغير مؤثرة على أداء برامجة (في الأجهزة التي يتم مراقبتها اوالتحكم فيها عن بعد مثلا). ولذلك وإستنادا على هذا المفهوم تم تصميم هذة الأداة .
NetworkService او NS عبارة عن خلاصة جهد متواضع بعد فترة لا بأس بها امضيتها في مجال تصميم برامج
Server-Client والتي تعمل على الشبكات الخاصة.
تم تصميم هذة الأداة لتمكن المبرمج من إستغلال امكانات برمجة الشبكات الهائلة المتوفرة في لغة الJAVA وفق طرق مجربة ومحترفة.وهي تعمل كخدمة Service في بيئة multithreaded مصممة بعناية لتحافض على أداء عالى لأغراض مختلفة ولساعات طويلة مع استهلاك معقول لموارد الكمبيوتر. والأهم .. سهولة الإستخدام.
البرامج التي تستخدم هذة الأداة ستكون لها القدرة على التواصل في ما بينها عبر الشبكة بإستخدام بروتوكولات TCP وUDP بفعالية وبدون كتابة سطر واحد متعلق بالشبكات .
بإستخدام هذة الأداة تستطيع انشاء برامج تعمل ك client ,هذا الclient لة القدرة على التعرف على بقية الclients عبر الشبكة ومعرفة حالة كل واحد منهم (يعمل أم لا) ومن ثم إرسال وإستقبال البيانات إما على شكل رسائل نصية,أو
أي شكل أخر من أشكال البيانات.
البرنامج سيظل قادرا على الإستجابة بنفس الفعالية تقريبا سواء كان هناك بضعة clients اوحتى مئات (تمت تجربتها في ظروف مشابهة).
طبعا الأداة ليست كاملة فهي مازالت تحت التجربة ولا زالت قيد التطوير , وأود أن أشارك النسخة الأولى منها مع الزملاء مبرجي لغة JAVA (أو حتى مبرمجي أي لغة اخرى حيث يمكن أن يستفيدوا من الفكرة والتصميم).
وها أنا اضعها بين أيديكم مفتوحة المصدربالإضافة للJavadoc الخاص بها. ومع أنها مصممة لتكون سهلة الإستخدام وغير معقدة,فأنا على أتم إستعداد لمناقشة كيفية إستخدامها ووظيفة كل جزء فيها. وتقبلوا مني فائق إحترامي لقبولي كعضو جديد في منتداكم الرائع ...(واعذروني لكثرة إستخدام مصطلحات بالإنجليزية) والله من وراء القصد.

