الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

تقنية Soa

Featured Replies

بتاريخ:

أقوم بكتابة هذه المقالة استجابة لطلب المهندس أمجد بإلقاء الضوء على تقنية SOA ومكوناتها.

بداية يجب علينا أن نفهم المقصود بتقنية SOA ومجال استخدامها بحيث نصل إلى نتيجة مقنعة وهي أنه لو كان في مجال عملي نفس الاحتياج الذي توفره تقنية SOA فهذا يعني إمكانية استخدامها أما إذا لم يكن عندي هذا الاحتياج فإذن لا أحتاج هذه التقنية.
وللأسف العديد من الشركات يستغل عدم معرفة الجهات بالهدف الحقيقي من التقنية ويحاولون بيع التقنية لأغراض مادية فقط دون مراجعة ضميرهم وسؤال أنفسهم السؤال التالي: هل بالفعل ما باعوه يفيد الجهة أم لا ، وفي رأيي أن المسوقين والشركات الذين يفعلون ذلك فهم يفعلون شيئاً حراماً ، ولكن عموماً هذا ليس موضوعنا هنا.

لنعد إلى موضوعنا وهو تقنية SOA.
بداية SOA تعني بناء كافة أجزاء نظامك بطريقة تجعل التكامل سهلاً بين اجزاء الأنظمة المختلفة وبطريقة تجعل مكونات النظام عبارة عن مكونات Components بحيث لا يتم إعادة بناء نفس الوظيفة في نظام أخر.
سيتساءل البعض: إننا نستطيع فعل ذلك بل إننا بالفعل نفعله وننفذه بدون SOA عن طريق بناء مكتبة وتصديرها في ملف JAR (وفي ADF يمكننا تنفيذ مكتبة مشتركة Shared Library) ، إذن ما الداعي لتقنية SOA؟
الحقيقة أن الإجابة هنا هي ما يجعلنا نحدد ما إذا كنا نحتاج إلى تقنية SOA أم لا؟
لنستعرض معاً الحالات المختلفة.

الحالة الأولى هي أنه عندك مجموعة مختلفة من التقنيات التي تم بناء أنظمتك بها (كأن يكون عندك نظام بلغة جافا وأخر بلغة دوت نت وأخر يستخدم PHP ... إلخ) وتريد عمل تكامل بين هذه الأنظمة بحيث تكون عندك وظيفة معقدة مبنية بتقنية دوت نت مثلاً وتريد استخدامها في برنامج بلغة جافا دون إعادة البرمجة بلغة جافا مرة أخرى ، ففي هذه الحالة أحتاج إلى استدعاء وظيفة معينة مبنية بتقنية أخرى ، والحل المباشر والأفضل هنا هو استخدام Web Service بسيطة دون الاحتياج إلى تقنية SOA من الأساس.
وهذا يعني أنه لو كانت أنظمتي مبنية بتقنية واحدة (أو أنه في نيتي توحيد البيئة) فلا يوجد أي داعي لتقنية SOA كما أنه لو لم يكن عندي الاحتياج إلى استدعاء وظيفة معينة مبنية بتقنية أخرى فلن احتاج أيضاً إلى SOA ، وحتى لو احتجت إلى هذه الإمكانية فيمكنني استخدام Web Service بدون SOA.

الحالة الثانية هي أنه توجد بعض البيانات التي نحتاج تبادلها بين الجهات (وغالباً ستكون التقنية المستخدمة مختلفة) ففي هذه الحالة أيضاً يمكن تنفيذها باستخدام Web Service بدون SOA.

إذن ما الحالة التي نحتاج فيها إلى استخدام SOA؟
انظر معي لهذه الحالة:
يدخل العميل إلى موقع لطلب عمل سياحة من موقع سياحي ، سيقوم الموقع بعمل التالي:
1. أخذ بيانات العميل وتخزينها
2. إصدار تأشيرة زيارة لو كانت في دولة أخرى
3. حجز الفندق
4. حجز سيارة لتوصيل العميل من المطار إلى الفندق
5. حجز تذاكر الطيران

كما يمكن عمل العديد والعديد من الخدمات الأخرى ونحتاج إلى متابعة كافة هذه الخدمات لأنك أكيد لاحظت أن معظم الخدمات ستتم من خلال مؤسسات خارجية وبالتالي نحتاج إلى عملية متابعة دقيقة حتى يتم تقديم خدمة جيدة للعميل.
برغم أنه يمكنني بناء هذا المتطلب بالكامل باستخدام Web Service إلا أنه سأقوم بعمل التكامل بين كافة الأجزاء المترتبة على بعض وسأبني المكونات التي تتيح متابعة تنفيذ هذه العمليات ، وهنا مربط الفرس لأن تنفيذ مثل هذه العمليات المعقدة تحتاج إلى وقت وجهد لا يستهان به في التطوير ، ومن هنا برز الاحتياج إلى تقنية SOA حيث تتيح لنا عمل العديد من الـ Web Services وربطها وتكاملها بشكل دقيق من خلال ما يعرف باسم BPEL (Business Process Execution Language) ، ويجب أن أنوه هنا أن BPEL لا يستخدم للتحليل والتصميم بل يستخدم لربط أكثر من Web Service لتحقيق متطلب معين ، فمثلاً لو لم أجد حجز في فندق معين للسياحة فإذن لا داعي لحجز تذاطر الطيران ولا داعي لحجز سيارة ، أيضاً لو لم أستطع الحصول على تأشيرة زيارة فسيتم إلغاء الموضوع بالكامل وهكذا.

إذن بالنظر إلى المؤسسات الحكومية التي تقدم الخدمات المعتادة فنجد أنها ليست في حاجة إلى SOA أصلاً حيث يكفيها استخدام Web Service فقط ، ولو حدث أنه توجد مؤسسة حكومية تحتاج إلى تنفيذ العديد من العمليات المعقدة التي تحتاج إلى جهات خارجية كثيرة ففي هذه الحالة يمكنها استخدام تقنية SOA في هذه الوظيفة فقط وليس في النظام بأكمله.

إذن ما الضرر في بناء أنظمتي بالكامل بتقنية SOA؟
الحقيقة أنه توجد الأضرار التالية:
1. تزيد تعقيد الأنظمة
2. تزيد الوقت المطلوب للتنفيذ
3. تزيد التكلفة بشكل كبير
4. تحتاج إلى مجموعة أكبر من التراخيص
5. تحتاج إلى تعلم مجموعة كبيرة من التقنيات المتقدمة

ولكي نفهم لماذا يزيد التعقيد فيكفي أن أذكر مكونات SOA التالية:
Service Infrastructure
Oracle Mediator
Oracle Adapters
Business Events and Events Delivery Network
Oracle Metadata Repository
Oracle Business Rules
Oracle WSM Policy Manager
Oracle BPEL Process Manager
Human Workflow
Oracle Business Activity Monitoring
Oracle User Messaging Service
Oracle B2B
Oracle JDeveloper
Oracle Enterprise Manager

هل تتخيل الحجم الكبير من التقنيات المطلوبة؟

والحقيقة أنه توجد العديد من المواقع التي تنتقد SOA ومنها
http://graegert.com/programming/no-soa-criticism-somewhere
http://weblog.raganwald.com/2007/08/soa-for-dummies.html

الملخص:
استخدم SOA إذا كان بالفعل لديك الحالة التي تحتاجها فيه وليس على الإطلاق لمجرد أنها تقنية جديدة.

بتاريخ:

السلام عليكم ورحمة الله

الأخ المهندس / مصطفى

شكرا لك على هذا الموضوع وهذا الإيضاح

الرابط الأول : حرر فى عام 2007 هل حدث اختلاف فى الرؤية بناء على تطور التقنية حتى الآن ؟
الرابط الثاني : لا يعمل


جزاك الله خيرا

بتاريخ:
  • كاتب الموضوع

لم يحدث اختلاف لأن أساس التقنية ومفهومها واحد وبالتالي الكلام الذي تم ذكره في المقالة ينطبق حتى وقتنا الحاضر
الرابط الثاني كان يعمل ولكن يبدو أن الصفحة تغيرت. عموماً يمكن البحث في جوجل بالكلمات soa criticism وستجد الكثير من المقالات التي توضح الانتقادات لتقنية SOA ولا زلت أكرر أنه ليس معنى وجود انتقادات ألا يتم استخدام تقنية SOA على الإطلاق بل يجب استخدامها في مكانها الصحيح وليس بصورة مطلقة

بتاريخ:

ما شاء الله
دائماً مفيد
بارك الله فيك وزادك من علم وحلم

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.