iTanalyze.com
  عبارت مورد جستجو  
تحلیل وضعیت فناوری اطلاعات در ایران  
Home صفحه اول آرشیو ارتباط باما درباره ما ارسال مطلب سایت های مرتبط وبلاگ نظرسنجی جستجو
appll logo.jpg
poole.jpg
steevi.jpg
data q.jpg
Thursday 05 May 2005پنجشنبه ۱۵ اردیبهشت ۱۳۸۴

معماري سرويس گرا در توليد نرم افزار

تکفا - در اين مقاله يكي از آخرين معماري ها در توليد نرم افزارها با نام معماري سرويس گرا معرفي مي گردد.
Service Oriented Architecture علي كاظمي مقدم، نيما شريفي مهر ali.kazemi@takfa.ir nima@nebrasinfo.com چكيده مقاله: در اين مقاله به بررسي معماري سرويس گرا در توليد نرم افزار، به عنوان يكي از آخرين دستاوردهاي صنعت مهندسي نرم افزار، پرداخته مي شود. كلمات كليدي: سرويس هاي وب، Web Services، معماري سرويس گرا، Service Oriented Architecture، SOA مقدمه: معماري سرويس گرا به عنوان يكي از آخرين دستآوردها در توليد نرم افزار، به نظر مي رسد، در سالهاي آتي معماري غالب صنعت فناوري اطلاعات و ارتباطات باشد. علت بوجود آمدن اين معماري، ايده اي بود كه در ذهن تعدادي از معماران آن وجود داشت و آن نرم افزار به عنوان سرويس بود. در مدل نرم افزار به عنوان سرويس شما نرم افزار خود را بگونه اي طراحي مي كنيد كه قابل استفاده توسط سيستم هاي ديگر باشد يعني ديگران مي توانند براي استفاده از سرويس شما ثبت نام كنند و هر موقع كه لازم داشتند از خدمات آن بهره ببرند، همانند حالتي كه در مورد شبكه هاي تلويزيون كابلي وجود دارد. تا زماني كه شما به سرويس متصل هستيد، شما مي توانيد هر لحظه كه خواستيد از سرويس استفاده كنيد. براي مدتهاي طولاني برنامه نويسان سعي مي كردند تا، كدهاي خود را بصورت 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 –Mehran Nikoo, Service-Oriented Architecture, Where do we stand? , 2003 2 –Alan Brown, Simon Johnston, Kevin Kelly, Using Service-Oriented Architecture and Component-Based Development to Build Web Services Application, 2002


نظرات خوانندگان

:: ارسال کننده omid در ۵ فروردین ۸۵ - ۱۶:۱۷ >

mer300000000 az maghale khobetoon.ba ejaze az in maghale dar tahghighi estefade mishavad ba zekre name shoma
mer30
bye
omid63sh@gmail.com


:: ارسال کننده mohammad nasiri در ۹ آبان ۸۵ - ۱۰:۰۰ >

بنده حدوددوسال است که بیش از 6 سیستم را با این معماری در وزارت صنایع و شرکت داروگرکارکرده ام.
در روش فوق هدف فقط اینکه سیستمی داشته باشیم که بتواند سرویس بدهد نیست بگونه ای دیگر در این روش طراح مثلا به حسابداری به عنوان یک سیستم خاص نباید نگاه کند که به دیگرسیستم ها سرویس می دهد و کار حسابداری انجام می دهد بلکه باید به این شکل نگاه شود که مجوعه سرویسهائی آماده شود براساس فرآیند های سیستم حسابداری که این سرویسها در presentation layer ای می توانند توسط یک نرم افزار یا بصورت سناریو های مختلف در جاهای مختلف فرآخوانی شده و یک فرآیند یا بخشی از فرآیند مربوط به حسابداری راانجام دهند که می توانند هر بخشی از این فرآیند مربوط به یک کار یا سیستم باشد مثلا در سیستم های ERP درسازمانها می توان فرآیند درخواست جنس از یک مجتمع تولیدی را توسط مشتری در نظر بگیریم می توان سناریوئی چید تا درخواست مشتری بررسی, درصورت عدم وجود جنس درخواست مواداولیه ازانبار و درنهایت تامین خواسته مشتری با صدور یک سند در حسابداری پایان یابد که هرکدام ازاین گام های سناریو می توانند در سیستم گردش کاری یا در پشت صحنه توسط نرم افزار هدایت شده ودرنهایت با فراخوانی سرویسهای مختلف از سیتم های مختلف و اثر گذاری هریک این سناریو اجرا شود.
با تشکر
محمد نصیری 8/8/1385 واحد IT داروگر
Email:nasiri928@yahoo.com


:: ارسال کننده فاطمه سرکهکی در ۲۲ فروردین ۸۸ - ۱۵:۰۷ >

خوب بود کاش بیشتر بود


:: ارسال کننده tayebeh در ۲۶ فروردین ۸۸ - ۰۰:۴۰ >

با سلام و خسته نباشید از مقاله خیلی خوبتان اگر ممکن است در مورد طراحی و پیاده سازی یک سیستم نمونه از معماری سرویس گرا در این زمینه اگر کتابی یا مقاله ای است راهنمایی کنید .خواهشمندم مرا راهنمایی بفرمایید.


:: ارسال کننده جواد در ۱۱ آبان ۸۹ - ۱۰:۴۵ >

سلام با توجه به متن بالا که اطلاعات مختصری را در مورد ابن معماری در اختیار قرار می دهد خواستار ان هستم که اگر امکان دارد با معرفی منابع بیشتری مرا در کسب اطلاعات بیشتر راهنمائی فرمایید


:: ارسال کننده منصوره در ۱۰ فروردین ۹۰ - ۰۸:۱۱ >

با تشكر ظاهرا خيلي وقت كه سايت به روز نشده اگه ممكنه مطالب بيشتري را جع به معماري سيستم هاي شي گرا درج كنيد.


:: ارسال کننده amir در ۲۲ آذر ۹۰ - ۲۲:۵۶ >

سلام خسته نباشي
من يه تحقيق يا مقاله راجب مهندسي نرم افزار عامل گرا يا سرويس گرا ميخام
خواهشا كمكم كنيد


:: ارسال کننده امیر در ۸ آبان ۹۱ - ۱۵:۵۵ >

باسلام اگه میشه روش طراحی شی گراایمیل وفرودگاه رابرایم به ایمیلم بفرستید


:: ارسال کننده يگانه در ۲۱ مهر ۹۳ - ۱۵:۲۲ >

سلام
من براي پايان نامه كارشناسي موضوع نرم افزار هاي سرويس گرا (تجزيه تحليل و ساخت )نياز به چند تا منبع كامل فارسي دارم ميشه راهنماييم كنيد

ارسال نظرات




(you may use HTML tags for style)


ایران
جهان
وبلاگ

 
نرم افزار
تجارت الکترونیکی
دولت الکترونیکی
بانکداری الکترونیکی
آموزش الکترونیکی
تکفا
امنیت
اینترنت
مخابرات
جامعه اطلاعاتی
رویدادها
قوانین و مقررات
 


نقل مطالب سایت باذکر منبع مجاز است