رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
معماري خدمت گرا در توليد نرم افزار
#1
در اين مقاله يكي از آخرين معماري ها در توليد نرم افزارها با نام معماري خدمت گرا معرفي مي گردد.Service Oriented Architecture


چكيده مقاله: در اين مقاله به بررسي معماري خدمت گرا در توليد نرم افزار، به عنوان يكي از آخرين دستاوردهاي صنعت مهندسي نرم افزار، پرداخته مي شود.

مقدمه: معماري خدمت گرا به عنوان يكي از آخرين دستآوردها در توليد نرم افزار، به نظر مي رسد، در سالهاي آتي معماري غالب صنعت فناوري اطلاعات و ارتباطات باشد. علت بوجود آمدن اين معماري، ايده اي بود كه در ذهن تعدادي از معماران آن وجود داشت و آن نرم افزار به عنوان خدمت بود. در مدل نرم افزار به عنوان خدمت شما نرم افزار خود را بگونه اي طراحي مي كنيد كه قابل استفاده توسط سيستم هاي ديگر باشد يعني ديگران مي توانند براي استفاده از خدمت شما ثبت نام كنند و هر موقع كه لازم داشتند از خدمات آن بهره ببرند، همانند حالتي كه در مورد شبكه هاي تلويزيون كابلي وجود دارد. تا زماني كه شما به خدمت متصل هستيد، شما مي توانيد هر لحظه كه خواستيد از خدمت استفاده كنيد.

براي مدتهاي طولاني برنامه نويسان سعي مي كردند تا، كدهاي خود را بصورت modular بنويسند، تا بتوان از آن در توليد نرم افزارهاي ديگر استفاده كرد. تفاوت نوشتن كد بصورت modular و بر اساس معماري خدمت گرا در حجم مخاطبان آن است. دوباره به همان مثال اول برمي گريم، وقتي شما كد خود را به منظور قابل استفاده بودن توسط نرم افزارهاي ديگر، به شكل modular مي نويسيد مانند اين است كه، يك شبكه تلويزيون كابلي درون يك ساختمان خاص داريد و بنابراين فقط ساكنين آن ساختمان مي توانند از آن بهره برداري كنند. در جهان امروز طيف مخاطباني كه بالقوه مي توانند از خدمت شما استفاده كنند، كل كاربران روي شبكه اينترنت است. بنابراين بايد مكانيزمي بوجود مي آمد، كه مي توانست پاسخگوي اين محيط جديد (اينترنت) و كاربران آن باشد و بنابراين معماري خدمت گرا بوجود آمد. اين معماري توسط دو شركت IBM, Microsoft بوجود آمد، كه هر دو شركت طي سالهاي اخير از حاميان اصلي خدمتهاي وب و عامل بسياري از ابداعات جديد در حيطه خدمت هاي وب، مانند UDDI ,WSE بوده اند.

قابل ذكر است، كه در آخرين معماري در حال توسعه، در توليد نرم افزار كه هنوز هم در مرحله تحقيقاتي است ( MDA) ، تدابيري جهت هماهنگي با معماري خدمت گرا در نظر گرفته شده است. از نمونه هاي استفاده از اين معماري در كشور خودمان، سازمان ثبت احوال كشور است كه موظف شده تا پايگاه هاي اطلاعاتي خود را بصورت خدمت وب و مبتني بر اين معماري به ساير نهادها مانند نيروي انتظامي و ساير دستگاه ها ارائه دهد.

معماري خدمت گرا چيست؟ همان طور كه در عنوان آن مشخص است، به مفهومي در سطح معماري، اشاره مي كند و بنابراين در مورد چيزي پايه اي و اساسي در سطوح بالا است، كه پايه و اساس آن تجربيات بدست آمده در توليد سيستم هاي نرم افزاري مبتني بر CBD و دو اصل اساسي در صنعت مهندسي نرم افزار يعني توليد نرم افزار بصورت با همبستگي زياد و در عين حال با چسبندگي كم است. بنابراين ايده هاي برنامه نويسي خدمت گرا ايده اي جديد نيست و شما شايد قبلا از آن استفاده كرده باشيد. اما جمع آوري بهترين تجربيات از توليد چنين سيستمهايي بصورت مجتمع و ناظر به وضعيت تكنولوژيكي امروز بشر، كه همان مفاهيم مطرح شده در معماري خدمت گرا است چيز جديدي است. در زير بصورت دقيق تر اين بحث را ادامه مي دهيم آيا توليد سيستم هاي خدمت گرا مفهوم جديدي است؟ مهندسان نرم افزار، هميشه مي گفتند و گفته اند كه نرم افزار بايد به شكلي نوشته شود كه همبستگي زياد ولي در عين حال اتصال كمي داشته باشد.

شركتهاي بزرگ نرم افزاري هم در جهت گام برداشتن براي رسيدن به اين دو اصل، تكنولوژي هايي را بوجود آوردند كه به برنامه نويسان اجازه دهد تا به اين دو هدف در توليد نرم افزارهاي خود تا حد زيادي دست يابند. براي مثال مي توان به تكنولوژي هايي مانند COM+ , CORBA و RMI و موارد ديگر، اشاره كرد. خوب پس مشاده كرديد كه موضوع برنامه نويسي خدمت گرا، مفهموم جديدي نيست و اين معماري تلاشي ديگر در جهت توليد نرم افزارهاي با همبستگي زياد و در عين حال با چسبندگي و اتصال كم است. ممكن است بپرسيد، پس چرا با وجود تكنولوژي هاي قدرتمندي چون CORBA,COM+,RMI چيز جديدي بوجود آمد؟ مگر تكنولوژي هاي قبلي موفق نبودند؟ بله مهمترين اشكال در معماري هاي قدرتمندي چون موارد مذكور اين بود كه توليد كنندگان آنها سعي داشتند، كه تكنولوژي خود را بر بازار غالب نمايند. رويايي كه هرگز به حقيقت نمي پيوست.

بنابراين با توجه به اين موضوع كه اين تكنولوژيها قادر به تعامل مناسب با يكديگر نبودند عملا اصل همبستگي زياد بصورت خود بخود رد مي شد. البته معماري هاي مذكور اشكالات ديگري هم داشتند كه نسبت به مورد بالا از اهميت كمتري برخوردار است كه از جمله آنها مي توان به عدم هماهنگي با اصول امنيتي مورد استفاده در اينترنت اشاره كرد. البته بعدها راه حل هايي هم براي اين مشكل بوجود آمد (مانند RPC Over HTTP) اما به اين علت كه از روز اول، در طراحي اين تكنولوژي ها اين امر در نظر گرفته نشده بود، از كارايي مناسبي برخوردار نبودند. مفهموم همبستگي زياد و در عين حال با چسبندگي و اتصال كم، وقتي بخواهد در جهت ارزيابي يك سيستم نرم افزاري يا تكنولوژي، مورد استفاده قرار گيرد بسيار مبهم مي شود. حتي كسي مي تواند ايده هاي همبستگي و چسبندگي را باهم تركيب كند!. براي جلوگيري از چنين ابهاماتي، شما مي تواند از ويژگي هاي معماري خدمت گرا به عنوان يك راه براي ارزيابي ميزان همبستگي و چسبندگي و اتصال يك سيستم نرم افزاري يا يك تكنولوژي استفاده كنيد. اگرچه مفاهيم مطرح شده در معماري خدمت گرا دقيقاً همان مفاهيم همبستگي زياد و در عين حال چسبندگي كم نيستند، اما سيستمهايي كه بر اساس معماري خدمت گرا طراحي و پياده سازي شده اند، نشان داده اند كه توانسته اند تا حد بسيار زيادي ويژگي هاي همبستگي زياد و در عين حال چسبندگي كم را بخوبي در خود ايجاد و حفظ كنند.

ويژگي هاي سيستم هاي نرم افزاري مبتني بر معماري خدمت گرا: - استفاده كننده از خدمت هيچ لزومي ندارد از جرئيات پياده سازي خدمت در سمت خدمت دهنده مطلع باشد - محل خدمت دهنده بايد از نظر استفاده كننده از خدمت پنهان باشد (در انجام امور مرتبط با استفاده از خدمت ) و تنها در زمان اجرا خدمت گيرنده از مكان خدمت دهنده آگاه خواهد شد. - نرم افزار مبتني بر معماري خدمت گرا بايد بتواند با نرم افزارهاي موجود روي ساير پلتفرم ها تعامل داشته باشد. - چندين نسخه از خدمت بايد بصورت همزمان در كنار هم فعاليت كنند زيرا با توجه به طيف گسترده استفده كنندگان در صورت بروزرساني خدمت در سمت خدمت دهنده، به سرعت امكان بروزرساني استفاده كنندگان خدمت وجود ندارد همچنين تعدادي از ويژگي هايي كه هر نرم افزار، اعم از اينكه مبتني بر اين معماري باشد يا نباشد، بايد داشته باشد به شرح زير است: - كارايي زياد - امنيت بالا (تضمين محرمانگي، صحت اطلاعات و هميشه در دسترس بودن) و همچنين كنترل دسترسي - قابليت اطمينان بالا بخصوص وقتي سر و كار با تراكنش هاي چند مرحله اي است.

خدمتهاي وب به عنوان پايه معماري خدمت گرا: سير تكامل و رشد XML، با پيدايش خدمت هاي وب همراه بود. يك خدمت وب بهترين راه حل براي پياده سازي معماري خدمت گرا است، مخصوصا وقتي ديدگاه استفاده از كل كاربران اينترنت به عنوان كاربران بالقوه خدمت مطرح باشد. شما پايه كار خود را بر پروتكل HTTP بنا مي نهيد، پروتكلي كه از همه پروتكل هاي ديگر روي اينترنت قابل دسترس تر است. با نگاه به قابلتهاي سيستم هاي نرم افزاري مبتني بر معماري خدمت گرا، شما متوجه خواهيد شد كه خدمت هاي وب بسياري از موارد مطرح شده در بالا را رعايت مي كنند اما تعدادي از اصول مطرح شده را هم زير پا مي گذارند كه آن را بررسي مي كنيم:

- كارايي: XML كه عنصر اصلي سازنده خدمتهاي وب است، نسبت به ساير مكانيزم هاي انتقال اطلاعات (binary) از سربار بسيآر زيادي برخودار است.
- قابليت اطمينان در تراكنش ها: اگر شما در يك تراكنش از يك خدمت وب استفاده كنيد، چگونه مي توانيد صحت تراكنش را تضمين كنيد در حالي كه تمام كارهاي شما مبتني بر اينترنت و پروتكل HTTP است؟
- امنيت: شما چگونه مي توانيد كاربران خدمت خود را تصديق هويت كنيد تا بعد از آن بتواند صلاحيت آنها را در استفاده از خدمت تان مورد بررسي قرار دهيد؟ همچنين يك نكته منفي ديگر در مورد خدمت هاي وب در حال حاضر، عدم پشتيباني اكثر محيط هاي توليد نرم افزار (IDE) براي توليد و استفاده از آنها است و در عين حال فراهم كردن قابلتهايي مانند كمك به برنامه نويس در استفاده از متدها و غيره يا پيدا كردن خطاها در زمان كامپايل و نه زمان اجرا. بنابراين، مگر اينكه موارد فوق به نحوي حل نگردد، ممكن است استفاده از خدمت هاي وب به عنوان پايه معماري خدمت گرا مورد سوال قرار گيرد. البته در هر حال خدمت هاي وب از اين نظر كه طيف كاربران بالقوه آنها اينترنت است بسيار مورد توجه هستند. در حال حاضر هم در اكثر سازمانها براي تمامي نرم افزار ها يك واسط بصورت وب خدمت جهت فراهم كردن استفاده از آن براي سازمانهاي همكار فراهم مي شود و يا حتي در داخل سازمان و در مواردي كه استفاده از نرم افزار مذبور در داخل سازمان بسيار استفاده شود، با توجه به مشكلات كارايي خدمت هاي وب، يك واسط بصورت يكي از تكنولوژي هاي برنامه نويسي مبتني بر Component مانند COM+ و يا CORBA براي نرم افزار ايجاد مي شود. آماده شدن براي معماري خدمت گرا: همانطوري كه ذكر شد، با وجود اينكه تعدادي نكات منفي در استفاده از خدمتهاي وب به عنوان پايه معماري خدمت گرا وجود دارد اما اين موارد قابل حل هستند.

براي مثال در مورد بحث كارايي، مي توان از پردازنده اي قدرتمند تر استفاده كرد و يا مشكل امنيت را مي توان با استفاده از زيرساختهاي مبتني بر رمزنگاري هاي نامتقارن حل كرد. در هر حال اگر شما تا بحال براي معماري خدمت گرا آماده نشده ايد، در هر حال لازم است تا به اين سمت پيش رويد زيرا همانطور كه در ابتداي اين مقاله اشاره شد، نرم افزارهاي مبتني بر اين معماري، نسل غالب سالهاي آينده خواهند بود. بدين منظور بايد اندكي تفكر خود را در مورد طراحي نرم افزار، تغيير دهيد. در زير به مهمترين آنها اشاره مي شود:
- سعي كنيد با خدمت دهنده هاي خود از طريق واسط هاي چاق ارتباط برقرار كنيد و از استفاده از واسط هاي پرحرف بپرهيزيد. به عبارت ديگر سعي كنيد عملياتي كه شامل چندين فراخواني است از طريق يك فراخواني انجام دهيد. هر بايت اطلاعاتي كه شما روي اينترنت مي فرستيد محسوس است زيرا روي اينترنت اولا پهناي باند محدود است و همچنين در مورد هر انتقال بايد عمليات تحليل نام و مسيريابي انجام شود.
- سعي كنيد حتي الامكان اطلاعات مربوط به وضعيت را در سمت خدمت دهنده نگهداري نكنيد. سعي كنيد اين كار را به استفاده كنندگان واگذار كنيد. براي مثال اگر شما يك سازمان باشيد كه تعداد زيادي مراجعه كننده دارد و شما نياز به اطلاعات مراجعه كننده ها داريد، اگر بخواهيد خودتان تمام اطلاعات مربوط به مراجعه كنندگان خود را نگهداري كنيد به يك انبار بسيار بزرگ نياز خواهيد داشت . بهتر است از مراجعه كنندگان خود بخواهيد كه اطلاعات خودشان را نگهداري كنند، نه خود سازمان شما بخواهد آنها را نگهداري كند.
- سعي كنيد از واسط هاي بسيار خوش تعريف براي خدمت هاي خود استفاده كنيد زيرا وقتي شما پايه خود را بر خدمتهاي وب بنا نهاديد شما لازم داريد اين واسط ها را در اختيار استفاده كنندگان از خدمت خود قرار دهيد. (از طريق WSDLخدمت وب خود)
- سعي كنيد به سمت استفاده از روشهاي غيرهمزمان براي فراخواني هاي خود پيش رويد زيرا بسياري از خدمت ها به استفاده كنندگان خود بصورت غيرهمزمان خدمت مي دهند(مانند خدمت هاي وب) بنابراين براي خدمت گيرندگان بهتر است از اين روش تبعيت كنند. اين روش مناسبي نيست كه خدمت گيرنده به علت اينكه خدمت دهنده هنوز پردازش را شروع نكرده است ، بلاك شود. به عبارت ديگر سعي كنيد ديد خود را از حالت درخواست/پاسخ (مطرح در معماري Client/Server) به ديد مبتني بر پيام تغيير دهيد؛ يعني وقتي كه خدمت گيرنده يك پيام را براي خدمت دهنده ارسال كرد خدمت دهنده بعد از مدتي از طريق يك پيام به خدمت گيرنده پاسخ خواهد داد.
- براي تصديق هويت و كنترل دسترسي به روشهاي ديگر فكر كنيد. مكانيزهاي امنيتي در مورد خدمت هاي وب متفاوت است. در مورد مكانيزهاي امنيتي مورد استفاده از روشهاي خاص يك پلتفرم استفاده نكنيد زيرا قابليت تعامل سيستم شما را با ساير خدمت ها بخطر مي اندازد(مانند Integrated Windows Authentication) اخيرا هم يك گسترش در مشخصات خدمت هاي وب با نام ws-security بوجود آمده است كه از آن جهت پياده سازي امنيت در سروي هاي وب استفاده مي شود.
- از پلتفرمي استفاده كنيد كه به شما اجازه دهد بطور همزمان چندين نسخه از يك خدمت را در كنار هم نگه داريد (مراجعه كنيد به قابليتهاي سيستم هاي نرم افزاري مبتني بر معماري خدمت گرا) همچنين به ياد داشته باشيد تكنولوژيهايي مانند COM+,CORBA,RMI در حيطه خود فنآوري هاي موفقي بوده و هستند و تعداد بسيار زياد سيستمهايي كه از اين معماري ها استفاده مي كنند اين موضوع را نشان مي دهد. خدمت هاي وب شامل مفاهيمي هستند كه در مورد اين تكنولوژي ها وجود ندارد، اما اين به اين معني نيست كه خدمت هاي وب در زماني كوتاه جايگزين اين فنآوري ها خواهند بود؛ و بنابراين سعي كنيد در كنار اين تكنولوژي ها از خدمت هاي وب بهره جوييد. نتيجه گيري: معماري خدمت گرا از آخرين فن آوري هاي بوجود آمده در توليد نرم افزار است، كه علاوه بر رعايت دو اصل همبستگي زياد و چسبندگي كم نيازهاي تكنولوژيكي امروز بشر را برآورده مي سازد. با توجه به بوجود آمدن شركتهاي چند مليتي، ظهور خدمات الكترونيك و پيچيده شدن امور گوناگون و مخصوصا مجتمع سازي سيستم هاي نرم افزاري گوناگون EAI، اين معماري توانسته بخوبي از عهده اين پديده هاي نوين بر آيد.

فایل های پیشنهادی برای دانلود


1.rar

Service Oriented Architecture.doc
SOA.doc سوال يکي از خوانندگان و پاسخ آن

منبع
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط behnaz


پیام‌های این موضوع
معماري خدمت گرا در توليد نرم افزار - توسط مهرداد عباسی - 06-29-2010, 09:42 AM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ۱۰ توصیه برتر برای تست کاربردپذیری نرم افزار مهرداد عباسی 0 2,484 06-10-2013, 03:49 AM
آخرین ارسال: مهرداد عباسی
  «نرم افزار به عنوان خدمات»؛ افزایش‌دهنده بهره‌وری کسب‌و‌کارها مهرداد عباسی 0 1,943 02-11-2013, 05:10 PM
آخرین ارسال: مهرداد عباسی

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان