بتاريخ: 12 مارس 201214 سنة comment_221766 أقوم بكتابة هذه المقالة استجابة لطلب المهندس أمجد بإلقاء الضوء على تقنية 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-somewherehttp://weblog.raganwald.com/2007/08/soa-for-dummies.htmlالملخص:استخدم SOA إذا كان بالفعل لديك الحالة التي تحتاجها فيه وليس على الإطلاق لمجرد أنها تقنية جديدة. تقديم بلاغ
بتاريخ: 17 مارس 201214 سنة comment_221929 السلام عليكم ورحمة اللهالأخ المهندس / مصطفىشكرا لك على هذا الموضوع وهذا الإيضاحالرابط الأول : حرر فى عام 2007 هل حدث اختلاف فى الرؤية بناء على تطور التقنية حتى الآن ؟الرابط الثاني : لا يعملجزاك الله خيرا تقديم بلاغ
بتاريخ: 17 مارس 201214 سنة كاتب الموضوع comment_221930 لم يحدث اختلاف لأن أساس التقنية ومفهومها واحد وبالتالي الكلام الذي تم ذكره في المقالة ينطبق حتى وقتنا الحاضرالرابط الثاني كان يعمل ولكن يبدو أن الصفحة تغيرت. عموماً يمكن البحث في جوجل بالكلمات soa criticism وستجد الكثير من المقالات التي توضح الانتقادات لتقنية SOA ولا زلت أكرر أنه ليس معنى وجود انتقادات ألا يتم استخدام تقنية SOA على الإطلاق بل يجب استخدامها في مكانها الصحيح وليس بصورة مطلقة تقديم بلاغ
بتاريخ: 18 مارس 201214 سنة comment_221943 ما شاء اللهدائماً مفيد بارك الله فيك وزادك من علم وحلم تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.