Cover image

مدخل إلى Web Services

أولا : تعريف Web Services

هناك تعريفات كثيرة لكن التعريف الذي أجده أكثر شمولية وبساطة في نفس الوقت هو التالي:
web services تسمح للأنظمة المختلفة بالتحدث مع بعضها البعض عبر الإنترنت. هذه الأنظمة يمكن ان تكون اي مجموعة من الأجهزة أو التطبيقات المختلفة. يمكن أن تكون ويندوز أو لينكس سيرفر ... جهاز كمبيوترك الشخصي أو هاتفك الذكي. كل تلك النظم يمكنها مشاركة البيانات والمعلومات عبر web services.
عندما تتصفح الإنترنت لتقوم بأي من الأنشطة الإعتيادية كمراسلة صديق عبر الماسنجر أو ملئ إستمارة. عادة ما تكون كل تلك الأنشطة متاحة من قبل سيرفر (خادم) لكل الزوار (العملاء) أو لمجموعة معينة لديها الصلاحيات بذالك. دور web services في هذه العلاقة ... علاقة العميل (هاتفك الذكي مثلا) والسيرفر (موقع غوغل مثلا) كدور مستقبل الطلبات عند أي منفذ إداري أو حكومي. على متلقي الطلبات إلقاء نظرة على الأوراق المقدمة ليتأكد من مطابقتها للشروط وأن المتقدم مؤهل للتقديم قبل أن يقرأ الطلب ويعطي صاحبه الرد. في حالة web service فإن مطابقة الأوراق تكون بإلقاء نظرة على هيكلة الطلب والتأكد من مطابقته لشروط أحد أنواع web services. وكذالك أن العميل لديه صلاحيات الولوج لهذه الخدمة قبل الرد الذي عادة ما يكون بلغة XML. كما أن مستقبل الطلبات يتم توظيفه وتكوينة من قبل الإدارة المعنية التابع لها فإن web services يتم برمجتها وإعدادها للتعامل مع طلبات الزوار أو عملاء (clients) جهة الخادم من قبل مبرمجين بأحد لغات برمجة الخوادم المعروفة.

ثانيا : أنواع Web Services

هناك نوعين أساسين هما SOAP Web Services و REST Web Services . في هذه المقال سنتناول REST على سبيل المثال . ربما لي عودة في مقال آخر لتناول SOAP بتفصيل.

REST: representational state transfer

عادة ما تقدم الطلبات الى REST API من خلال HTTP (Hypertext Transfer Protocol) . والرد عادة ما يكون من خلال (RESTful APIs أو RESTful web services) بأحد الصيغ التالية : HTML, XML, plain text, أو JSON.
لكي يكون الطلب مستوفي شروط RESTfull عليه التوفر على ٦ شروط أساسية وهي :
١ - عميل / خادم : التبادل يجب أن يكون بين عميل (Client) و خادم (Server) مع توفر البيانات أو الموارد.
٢ - لا تخزين مؤقت على الخادم : بمعني أن الخادم لايحتفظ بأي معلومات لأي طلبات أو ردود سابقة. كل عملية أو طلب هو مستقل بحد ذاته .
٣ - التخزين المؤقت جهة العميل : كل إستجابة من قبل الخادم عليها تحديد ما إذا كان الرد قابل للتخزين المؤقت جهة العميل ومدته.
٤ - واجهة موحدة : السيرفر (الخادم) عليه أن يوفر إلى جانب البيانات العمليات المتاحة عليها. كل الموارد عليها أن تكون متوفرة من خلال HTTP GET مثلا وعلى نفس الصعيد هناك عمليات أخرى تمكننا من التعديل على البيانات أو حذفها مثلا إذا توفرت لدينا الصلاحيات.
٥ - نظام الطبقات : الطبقات بين العميل والخادم هي خوادم. تؤدي هذه الخوادم العديد من المهام كتحسين الأداء مثلا ولا يؤثر بأي شكل من الأشكال إضافة طبقات أو إزالتها على الرسائل المرسلة بين العميل والخادم.
٦ - كود عند الطلب : يمكن إحتواء استجابة الخادم على كود برمجي قابل للتنفيذ جهة العميل.