بنيان خدمي التوجه
بنيان خدمي توجه
Service Oriented Architecture (SOA) -
غيداء ربداوي
هندسة التطبيقات الموجّهة بالخدمات
يقوم مصمّموا التطبيقات المعلوماتية بنمذجة التطبيق البرمجي على نحو مجموعة خدمات يقدّمها المخدّم، ويتصل به الزبون للحصول على الخدمة المرغوِبة. يُسمى هذا البنيان عادةً البنيان زبون-مخدّم. غير أن انتشار الشابكة (الإنترنت)، أتاح للمستخدمين استخدام المتصفّح browser للوصول إلى المخدّمات البعيدة، وهذا ما سمح ببناء تطبيقات موزّعة بين عدة مخدّمات، يقدّم كل منها خدمة مختلفة بدلاً من أن تكون الخدمات كلها مخزّنة في مخدّم وحيد، وهذا هو مبدأ النظم البرمجية الموزّعة. بيد أن نفاذ المستخدم عبر المتصفّح والوصول إلى المعلومات التي توفّرها التطبيقات الأخرى مباشرةً لا يكفي دوماً، فقد ترغب بعض المخدّمات في الاتصال بعضها ببعض مباشرة ًللوصول إلى المعلومات (مثلاً للحصول على أدلة تتعلق بالنشاط التجاري) من دون المرور بالمستخدم.
لحلّ هذه المشكلة ظهر مفهوم خدمات الوِب web services، وبني عليه مفهوم البنيان الخدمي التوجهService-Oriented Architecture (SOA).
تُعرَّف خدمة الوِب عموماً بأنها تمثيل معياري لمورد معلومات أو مورد حسابي يمكن للبرامج الأخرى أن تستخدمه؛ فمثلاً، يمكن تعريف خدمة «التصريح عن الضرائب» على أنها خدمة وِب حيث يقوم المستخدمون بملء الاستمارات الخاصة بالتصريح، وتُدقّق هذه الاستمارات آلياً وتُرسل إلى الجهات المعنية.
وقد توسّع تعريف خدمة الوِب فعرّف بأنه عمل أو إنجاز يقدّمه أحد الأطراف إلى الطرف الآخر، وقد ينتج من ذلك العمل منتج مادي، ولكن الإنجاز يكون عادةً غير مادي، ولا ينتج منه تملّك لأي من عوامل الإنتاج.
يكمن جوهر الخدمة إذاً في أن تقديمها مستقل عن التطبيق الذي يستخدمها. وهكذا يمكن أن يُطوِّر مزوّدو الخدمات خدمات متخصّصة ويقدّموها إلى طيف واسع من المستخدمين العاملين على تطوير برمجيات متنوعة في مؤسسات مختلفة. يجب على المؤسسة التي تطوّر خدمة وِب لديها أن تنشرها لكي يتمكن الباحثون عن الخدمة من العثور عليها، كما تُعرِّف واجهة لخدمة وِب تبيّن المعطيات المتوفرة لديها وكيف يمكن النفاذ إليها والتعامل معها برمجياً.
تُبنى التطبيقات بربط الخدمات التي يقدّمها مزوّدون مختلفون، وذلك باستخدام لغات برمجة خاصة أو بلغة متخصّصة بتنسيق الخدمات مثل Business Process Execution Language for Web Service (BPEL4WS).
وعلى الرغم من توفر عدة نماذج للخدمات، لكنها جميعاً تعمل وفق النموذج الممثَّل في الشكل (1). يقوم مزوّد الخدمة بتقديم الخدمة عبر تعريف واجهتها وتحقيق وظيفتها، في حين يقوم طالب الخدمة بربطها مع تطبيقه، وهذا يعني أنه يضمّن تطبيقه الرماز code الذي يستدعي هذه الخدمة ويعالج ما يحصل عليه عند استدعائها. ولكي يضمن مزوّد الخدمة أن يكون مستخدمو الخدمة الخارجيون على علم بهذه الخدمة وإتاحة النفاذ إليها؛ عليه أن يصنع قيداً لخدمته في سجل الخدمات ويضمّنه معلومات عن الخدمة وعملها.
الشكل (1) البنيان المفاهيمي لنظام موجّه بالخدمات. |
مجموعة من المبادئ والمنهجيات لتصميم وتطوير برمجيات تتألف من خدمات تتفاعل فيما بينها.
مثال:
يعرض هذا المثال بنية تطبيق يستخدم خدمات الوِب في بناء تطبيق من تطبيقات الحكومة الإلكترونية. إن أهم فوائد تطبيقات الحكومة الإلكترونية هي تمكين المواطن من إنجاز الإجراءات إلكترونياً.
تتوفر مثلاً لدى هيئة الأحوال المدنية قاعدة معطيات من نوع أي بي إم دي بي 2 IBM DB2 تتضمن أسماء المواطنين وأرقام هوياتهم ومعلوماتهم، ويتوفر لدى الإدارة العامة للجوازات قاعدة معطيات من نوع أوراكل Oracle، كما يتوفر لدى وزارة العمل قاعدة معطيات من نوع أكسس Microsoft Access. أما مصلحة الضرائب فليس لديها إلا ملف إكسل Excel بمعلومات الضرائب الخاصة بالمواطنين، ويُطلب ربط هذه الدوائر ببعضها إلكترونياً لإتمام إجراءات المواطنين؛ فمثلاً عندما تحتاج مصلحة الضرائب إلى معلومات عن المواطن، يجب أن تستطيع الحصول عليها إلكترونياً من هيئة الأحوال المدنية.
قد يقترح المهندسون بناء قاعدة معطيات مركزية لهذا التطبيق، بحيث تُدمج جميع قواعد معطيات المؤسسات فيها، وتكون مشتركة لكي تستطيع جميع الدوائر النفاذ إليها. تُعدّ هذه الطريقة من الطرائق الشائعة لبناء تطبيقات من هذا النوع، غير أنها تواجه عدة مسائل تقنية:
-
صعوبة دمج أنواع مختلفة من قواعد المعطيات؛ إذ يحتاج الأمر إلى إعادة هندسة ووضع تصميم جديد لقاعدة المعطيات.
-
في حال الدمج تصبح عملية تحديث قاعدة المعطيات الجديدة بالمعلومات المتغيرة عملية معقدة.
يبيّن الشكل (2) رسماً توضيحياً لبنيان التطبيق في هذه الطريقة، ويُعدّ بنياناً ذا قاعدة معطيات مركزية.
الشكل (2) مثال على بنيان ذي قاعدة معطيات مركزية. لتفادي المسائل التقنية المشار إليها آنفاً يمكن استخدام خدمات الوِب. تقوم كل دائرة ببرمجة خدمة الوِب الخاصة بها، ومن ثمّ يمكن للدوائر الاتصال فيما بينها عن طريق خدمات الوِب أو عن طريق دائرة مركزية تربط بينها وتضمن حماية التراسل بين خدمات الوِب، أو تُجمع هذه الخدمات في بوابة واحدة portal. يبيّن الشكل (3) رسماً توضيحياً لبنيان التطبيق في هذه الطريقة، وهو بنيان خدمي التوجه.
الشكل (3) بنيان خدمي التوجه. وفق الطريقة الأخيرة عندما تريد إدارة الجوازات مثلاً الاستعلام عن معلومات مواطن، ترسل طلباً لخدمة الوِب التابعة للأحوال المدنية. فتقوم هذه الخدمة بالرد بإرسال ملف بمصاغة XML يتضمن المعلومات الخاصة بالمواطن، وذلك بغض النظر عن الطريقة التي ترتّب بها دائرة الأحوال المدنية معلومات المواطنين؛ إذ يكفي أن تعرِّف هذه الخدمة الواجهة البرمجية للاتصال بها والسماح بإرسال معلوماتها إلى الدوائر الأخرى أو إلى المستخدم مباشرةً. وبالمماثلة تعرّف مصلحة الضرائب واجهةً لخدمة الوِب لديها، وإن كانت المعلومات مخزّنة في ملف إكسل أو في ملفات نصية.
مع رواج خدمات الوِب والبنيان الخدمي التوجه وُضعت معايير تشمل جميع نواحي البنيان الخدمي التوجه؛ انطلاقاً من الآلية الأساسية لتبادل المعلومات بين الخدمات وفق البروتوكول Simple Object Access Protocol (SOAP)؛ وصولاً إلى لغة البرمجة المعيارية BPEL4WS. تعتمد هذه المعايير على المصاغات XML، وهي لغة تأشير يستطيع قراءتها كل من الإنسان والحاسوب، وتسمح بتعريف بنى المعطيات. يدعم هذه اللغة عدد من التقانات مثل XML Schema Document (XSD) التي تسمح بتعريف المخطط العام لبنية المعطيات وتساعد على التعامل مع التوصيفات XML وتوسيعها. ومن المعايير الرئيسة في البنيان الخدمي التوجه:
1- بروتوكول النفاذ إلى الأغراض البسيطة SOAP: معيار لتبادل الرسائل يدعم الاتصال بين الخدمات. يعرّف هذا المعيار المكوّنات الأساسية والاختيارية للرسالة التي يجري تبادلها بين الخدمات.
2- لغة توصيف خدمات الوِب Web Services Description Language (WSDL): يهتم بهذا المعيار مزوّدي خدمات الوِب؛ إذ يعرّف طريقة تمثيل واجهات خدمات الوِب (العمليات التي تقدّمها الخدمة، وموسطاتها وأنماط هذه الموسطات).
3- التوصيف العميم والاكتشاف والتكامل Universal Description, Discovery and Integration (UDDI): معيار يعرّف طريقة تنظيم معلومات توصيف الخدمة، وهي المعلومات التي يستخدمها طالب الخدمة لاكتشاف الخدمات، تتضمن معلومات عن المزوّد والخدمات التي يقدّمها وموقع توصيف الخدمة، وأخرى حول علاقة الخدمة بالأعمال، وتساعد السجلاتُ UDDI المستخدمين على استكشاف الخدمات التي يحتاجون إليها.
4- اللغة :WS-BPEL معيار للغة تدفق الأعمال المستخدمة في تعريف برامج المعالجة التي تتضمن عدة خدمات.
تجدر الإشارة إلى أن خدمات الوِب لا تتعلق ببروتوكول محدّد لنقل المعلومات وتبادلها، وإن كان البروتوكولان HTTP وHTTPS هما أكثر البروتوكولات استخداماً.
يبيّن الشكل (4) توضّع المعايير الأساسية التي أُنشئت لدعم خدمات الوِب.
يبيّن الشكل (4) توضّع المعايير الأساسية التي أُنشئت لدعم خدمات الوِب. هندسة التطبيقات الموجّهة بالخدمات
يعدّ البنيان الخدمي التوجه طريقة لتطوير النظم الموزّعة التي تضم في مكوّناتها خدمات مستقلة منفّذةً على حواسيب موزّعة جغرافياً، ولذا لا بدّ أن تكون طريقة التطوير مستقلة عن البيئة وعن اللغة التي نُفّذت بها هذه الخدمات المتنوعة، وأن يجري التعامل بين الخدمات باستخدام البروتوكولات المذكورة آنفاً. ويمكن إذاً تطوير أنظمة برمجية انطلاقاً من خدمات يقدمها مزوّدون مختلفون من دون أن يظهر أثر ذلك في التطبيق عند استخدامه، ويشمل ذلك المحورين التاليين:
1- هندسة الخدمات: هنا يجري بناء خدمات موثوقة وقابلة لإعادة الاستخدام على ثلاث مراحل:
- تحديد الخدمة المرشّحة للبناء وتعريف متطلباتها.
- تصميم الخدمة، وهنا تُصمّم الواجهة المنطقية للخدمة (أي التوابع التي يمكن استدعاؤها مع الموسطات) والواجهة WSDL.
- تنجيز الخدمة واختبارها ونشرها.
2- بناء البرمجيات باستخدام الخدمات: يجري بناء أنظمة برمجية موثوقة تستخدم الخدمات، سواء بمفردها أم بعد دمجها مع مكوّنات برمجية أخرى. وتُبنى هذه البرمجيات على مفهوم تركيب الخدمات للحصول على خدمات جديدة، وهنا جرى تعريف خطة عامة لتركيب الخدمات، تعتمد الخطوات التالية:
- صياغة المخطط العام لتدفق الأعمال اعتماداً على متطلبات المسألة.
- اكتشاف الخدمات ضمن السجلات المعتمدة.
- اختيار الخدمات المناسبة من تلك المكتشفة في المرحلة السابقة.
- تفصيل تدفق الأعمال السابق مع أخذ الخدمات التي جرى اختيارها في الحسبان.
- بناء برنامج تدفق الأعمال باستخدام لغات برمجة عالية المستوى أو لغات مخصّصة لتدفق الأعمال.
- اختبار الخدمة الجديدة أو التطبيق الجديد.
يُعدّ البنيان الخدمي التوجه طريقة مهمة من طرائق تطوير تطبيقات الأعمال، فهو يسمح ببناء التطبيقات باستخدام خدمات الوِب، ويكون بعضها مزوّداً محلياً وبعضها الآخر مقدّماً من مزوّد خارجي، وقد يجري خلط خدمات الوِب مع بعض المكوّنات المطوّرة محلياً، وهذا ما يحقق مرونة كبيرة عند بناء التطبيقات. كما يسمح هذا البنيان للشركات بحفظ استثماراتها الكبيرة في البرمجيات التي طوّرتها قديماً عبر تغليف تلك البرمجيات بغلاف يسمح بتقديمها خدمات، ويعود ذلك عليها بالنفع ويحفظ لها تميّزها ومكانتها في نشاطها التجاري أو الخدمي، ويؤكد مفهوم إعادة الاستخدام في بناء البرمجيات.
يسمح استخدام البنيان الخدمي التوجه أيضاً بالتعامل مع بيئات وتقانات تنجيز مختلفة في أجزاء مختلفة من المؤسسة الواحدة، بل يجعلها في منأى عن الوقوع في المطبّات الناتجة من عدم التجانس الذي يسبّبه استخدام تقانات جديدة لا تنسجم مع التقانات السابقة. غير أن أهم ما يوفّره هذا البنيان هو إمكان بناء تطبيقات تسمح للشركات بالتعاون مع المؤسسات الأخرى واستفادة بعضها من وظائف بعضها الآخر، وهذا من شأنه أن يسهل أتمتة الأنظمة التي تحتاج إلى تبادل معلومات كثيف يخترق حدود المؤسسة.
إضافة إلى ما سبق ترتبط مكوّنات هذا البنيان فيما بينها ارتباطاً رخواً يسمح بتغيير ربط الخدمات في أثناء التنفيذ، وهذا ما يُعطي النظام قوته ومرونته. ومثال ذلك نظام معلومات مضمّن في السيارة يزوّد السائق بمعلومات تتعلق بالطقس وحركة السير ومعلومات محلية وغيرها، يتصل هذا النظام بمذياع السيارة بحيث تُبثّ هذه المعلومات على قناة خاصة، والسيارة مزوّدة بنظام تحديد الموقع GPS، وبناءً على هذا الموقع يتصل النظام بخدمات تمدّه بالمعلومات، كما تُبثّ المعلومات بلغة السائق الخاصة.
يوضّح الشكل (5) تنظيم هذا التطبيق. تتضمن البرمجية خمسة مجتزآت تعالج الاتصال بالسائق وبمستقبِل النظام GPS وبمذياع السيارة. يعالج المجتزآن الخاصان بالإرسال والاستقبال جميع الاتصالات بالخدمات الخارجية.
الشكل (5) بنية نظام مضمّن في السيارة يعتمد البنيان الخدمي التوجه. تتصل السيارة بخدمة خارجية نقّالة تجمع معلومات من عدد من الخدمات الأخرى التي تقدّم معلومات حول الطقس وحركة السير والتسهيلات المحلية. يقدّم هذه الخدمة عدد من المزوّدين في أماكن مختلفة. ويستخدم النظام البرمجي المحمول في السيارة خدمة الاستكشاف لتحديد الخدمة المناسبة والربط بها. كما تُستخدم خدمة الاستكشاف من قبل خدمة المعلومات النقّالة التي تحقق الربط بالخدمات المناسبة للحصول على معلومات الطقس وحركة السير والتسهيلات المحلية. تتبادل الخدمات رسائل SOAP تتضمن معلومات الموقع الواردة من النظام GPS التي تحتاج إليها الخدمات لاختيار المعلومات المناسبة، ومن ثم تُجمّع المعلومات وتُعاد إلى السيارة عبر خدمة تقوم بترجمة المعلومات إلى لغة السائق.
انتشر بناء التطبيقات باستخدام البنيان الموجّه بالخدمات انتشاراً واسعاً، وغدا مبرمجو التطبيقات يقدّمون تطبيقاتهم على شكل خدمات ويقدّمون معها واجهة الخدمة. ومثال ذلك المعاجم المستخدمة في العديد من التطبيقات، ومعلومات الطقس، والتقويم، والآلة الحاسبة وغيرها.
ولعل أشهر خدمات الوِب هي تلك التي تقدمها شركة غوغل Google، فمثلاً يمكن للمبرمج أن يستخدم خدمات بحث غوغل في أي برنامج يبرمجه، وكل ما يحتاج إلى فعله هو تحميل واجهات الخدمات Application Programming Interface (API) الخاصة بخدمات البحث.
ولا بدّ أن التقدم التقني في المستقبل سيلحظ انتشاراً أوسع لهذا البنيان وتطوير خدمات أكثر في مجالات عديدة مثل الهواتف المحمولة والتعلّم الإلكتروني والحكومة الإلكترونية والترفيه وغيرها.
مراجع للاستزادة: - T. Erl, Service-Oriented Architecture: Concepts, Technology & Design, Prentice Hall, 2016. - T. Erl, R. Puttini , Z. Mahmood, Cloud Computing: Concepts, Technology & Architecture, Prentice Hall, 2013. - J. Ingeno, Software Architect’s Handbook: Become a successful software architect by implementing effective architecture concepts, Packt Publishing 2018. - I. Sommerville, Software Engineering, Addison- Wesley, 2007. |
- التصنيف : كهرباء وحاسوب - النوع : كهرباء وحاسوب - المجلد : المجلد الخامس مشاركة :