شنبه, ۱ اردیبهشت, ۱۴۰۳ / 20 April, 2024
مجله ویستا

معماری سرویس گرا Service Oriented Architecture چیست؟


معماری سرویس گرا Service Oriented Architecture چیست؟
معاری سرویس گرا (SOA) روشی جدید و در حال تكامل برای ساخت برنامه های توزیع شده با Distributed Applicationاست. سرویس ها اجزای توزیع شده با رابط های تعریف شده و مشخص هستند كه پیغام های XMIL را پردازش وتبادل می كنند. با رویكرد سرویس گرا می توان راه حل های را ارائه داد كه به مرز دامنه های سازمان، شركت یا دپارتمان محدود نیستند. با استفاده از SOA می توان در شركتی كه دارای سیستم ها و برنامه های كاربردی مختلف روی پلتفرم های متفاوت است، یك راه حل یك پارچه سازی با استقلال زیاد(loosly coupled) ساخت كه جریان یكنواخت و ناهماهنگ كار را تضمین كند.
هر كس كه از سایت های تجارت الكترونیكی به صورت آنلاین خرید كرده باشد، با مفهوم سرویس ها آشنا است. وقتی كه سفارش تا ن را دادید، باید اطلاعات كارت اعتباری تان را ارایه كنید كه به طور معمول توسط یك فراهم كننده سرویس ثانویه، تایید و شارژ می شود. وقتی كه سفارش پذیرفته شد، شركت سفارش گیرنده با یك شركت فراهم كننده سرویس حمل ونقل فراهم می كند و در نهایت كالای شما تحویلتان می شود. نیاز به معماری سرویس گرا از جنبه ای دیگر نیز به نحوه بارزی در برنامه های كاربردیeCommerce مشهود است. اگر مثلا جزء(componet) مربوط به پرداخت با كارت اعتباری offline و یا غیر فعال باشد،‌قرار نیست كه فرایند فروش متوقف شود. بلكه سفارش ها بایستی پذیرفته شوند وعملیات پرداخت به وقت دیگری موكول شود.
مثل سایر معماری های توزیع شده،‌ SOA ساخت برنامه های كاربردی با استفاده اجزایی كه در domainهای جدا از هم را قرار دارند را ممكن می سازد . SOA از سرویس های وب به عنوان نقاط ورود برنامه كاربردی استفاده می كند كه از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستم های توزیع شده سنتی مبتنی بر اجزاء هستند . با این تفاوت كه در این جا ارتباط بین سرویس وب و استفاده كننده خیلی آزاداترانه ومستقل تر (loosely coupled) است .به علاوه SOA به خاطر در بر داشتن فاكتورهایی كه اهمیت حیاتی در تجارت دارند ، نیز منحصر به فرد است . فاكتورهایی نظیر: قابلیت اطمینان سرویس،‌ جامعیت پیام ، یكسانی تراكنش و امنیت پیام . در امور تجاری واقعی نمی توان روی سرویس هایی كه یك درخواست را فقط به خاطر این كه بتوانند بفهمند،‌ پردازش می كنند حساب كرد . در امور تجاری به قطعیت و اطمینان بیشتری نیاز است. واضح است كه سیستم های مختلف ممكن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف متفاوت باشد . با وجود این هیچكدام از این موارد نباید برای كنار گذاشتن یاعدم پاسخ به یك درخواست باشند.
علاوه بر آن نباید دلیلی برای كنار گذاشتن یا عدم پاسخ به یك درخواست باشند واضح است كه سیستم های مختلف ممكن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف ، متفاوت باشد. با وجود این ،‌هیچ كدام ازاین موارد نباید دلیلی برای كنار گذاشتن یا عدم پاسخ به یك درخواست باشند. علاوه بر آن نباید هیچ ابهامی در نحوه فراخوانی یك سرویس وجود داشه باشد. اگر سیستمی توانایی های خود را در قالب سرویسی روی وب ارائه كند. در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازی و اعلام شود . بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامه های كاربردی امروزی در SOA حل شده است كه احتمال نقض آن در هر مر حله ای از جریان كار بسیار زیاد است.در SOA فرض بر این است كه خطا وجود دارد و می تواند بیفتد ، بنابراین استراتژی هایی برای مثال اگر یك سرویس نتواند یك پیغام را در مرحله اول بپذیرد . این معماری طوری طراحی شده است كه مجددا پیام را بفرستد . واگر یك سرویس به طور كامل قابل دسترس نباشد، (كه هرگز نباید در یك سیستم SOA پایدار انفاق بیفتد ) آن وقت معماری طوری طراحی شده است كه روی دادن خطاهایی كه ممنجر به قطع كامل در خواست سرویس می شود،‌امكان پذیر نباشد. SOA قابلیت اطمینان را افزایش می دهد، چون خطاهای موقت در بخشی از جریان كار نمی توانند كل فرایند تجاری را از كار بیاندازند .
به بیان كلی،‌ SOA فرایندی تكامل یافته را ارائه می نماید و ازاین نظر می تواند ان را بلوغ سریس های وب و تكنولوژی های یكپارچه سازی به حساب آورد . در SOA به این امر توجه شده است كه سیستم های با اهمیت حیاتی كه بر مبنای تكنولوژی های توزیع شده ساخته می شوند. باید تضمین های خاصی را تامین نمایند . در این گونه سیستم ها باید این اطمینان وجود داشته باشد كه در خواست های سرویس به طور صحیح مسیر دهی و هدایت می شوند، در زمان مناسب به آن ها پاسخ داده می شود، و این سرویس ها به طور واضح و دقیق سیاست های ارتباطی و رابط های خود را اعلام می كنند.
▪ سرویس ها چیستند ؟
بسیاری از ما آنقدر با تكنولوژی های سرویس های وب آشنا هستیم كه اغلب در باره این كه خود سرویس ها واقعا چه هستند، فكر نمی كنیم. در ادامه سه تعریف می آوریم كه در كنار یكدیگر ماهیت یك سرویس راشرح می دهند:
۱-سرویس ها اجزاء مستقلی هستند كه پیغام های XML با ساختار مشخص و خوش تعریف(Well-defined) را پردازش می كنند.
۲-سرویس ها دارای رابط های خوش تعریف هستند كه به وسیله یك سند مبتنی بر XML كه سند Web Service Description Language (WSDL) خوانده می شود، به این سند گاهی قرارداد WSDL نیز گفته می شود. محتویات این سند،‌عملیات (متدهایی) كه توسط سرویس ارائه می شود را شرح می دهد. از جمله اطلاعات مربوط به انواع داده، اطلاعات نحوه اتصال به سرویس، جهت یافتن و ارتباط با عملیات سرویس وب.
۳-سرویس ها دارای نقاط انتهایی(Endpoint) هستند كه استفاده كنندگان از و سایر سرویس ها می توانند بر اساس آدرس سرویس (معمولا URL ) به آن ها متصل شوند. این همان چیزی است كه ارتباط(جفت شدن) آزادانه خوانده می شود.
▪ مشخصه های سرویس های وب و WS-IBasic Profile
برنامه های كاربردی SOA نیاز به پشتیبانی و امكانات زیر ساختی زیادی دارند. از جمله امكانات ارسال و دریافت مختلفی ، زیر ساخت امنیتی و پشتیبانی برای پیام رسانی مطمئن. شركت های مختلفی، از جمله IBM و مایكروسافت،‌برای ارائه مشخصه های استانداردی كه دامنه گسترده تكنولوژی های زیر ساخت SOA را پوشش دهد، با یكدیگر همكاری می كنند.
متاسفانه مشخصه های سرویس های وب در محیطی ارایه می شوند و توسعه می یابند كه شركت های دخیل در آن بیشتر رقیب هستند تا شریك. رقابت های میان شركت ها باعث می شود كه نتواند بر سر استانداردهای صحیح و مناسب به توافق برسند. اغلب،‌گروههای مختلف شركت ها، برای موارد یكسان ، استاندارهای متفاوتی را دنبال می كنند . سازمان های غیر انتفاعی مثل OASIS گرد همایی هایی برای همكاری در ارایه و توسعه استانداردها و مشخصه های سرویس های وب برگزار می كنند.( برای اطلاعات بیشتر درباره OASIS به http://www. Oasisopen.org مراجعه كنید.)
▪ معرفی WS-IBasic Profile
سازمان(WS-I)Web Services Interoperability یك هدف اصلی دارد و آن را ارائه مشخصه های استانداردی است كه سرویس های وب بتوانند با استفاده از آن روی پلتفرم های مختلف با هم تعامل داشته باشند. به بیان دیگر، هدف این سازمان این است كه سرویس های وب بتوانند با هم كار كنند،‌بدون توجه به این كه تحت چه سكوی كاری عمل می كنند و یا با استفاده از چه ابزارهایی ایجاد شده اند . این مشخصه های سرویس های وب زمینه های گسترده ای را پوشش می دهند، از پروتكل های نقل و انتقال داده تا امنیت كه مجموعه آن ها تحت عنوان پروفایل پایه WS-I جمع آوری شده اند.مشخصه های سرویس های وب به طور عمده در گروههای زیر دسته بندی می شوند:
نقل و انتقال (Tranport )
این گروه از مشخصه ها، پروتكل های ارتباطی برای انتقال داده های خام بین سرویس های وب را تعریف می كنند و پروتكل های HTTP، HTTPS و SMTP را شامل می شوند.
▪ پیغام رسانی (Messaging)
این گروه از مشخصه ها تعیین می كنند كه پیغام های XMIL كه سرویس های وب تبادل می كنند. چه فرمتی باید داشته باشند. این گروه مشخصه های SOAP برای نحوه رمز گذاری پیغام و مشخصه های XMIL و XSD برای كلمات كلیدی پیغام (vocablury) . را شامل می شود. مشخصه های آدرس دهی سرویس های وب نیز در این گروه قرار دارد . این مشخصه ها اطلاعا ت مقصد پیغام را از پروتكل نقل و انتقال داده ها، مستقل می سازد . برای مثال می توان با استفاده از مشخصه های آدرس دهی سرویس های وب، چندین مقصد برای یك پیغام XMIL تعریف كرد.
▪ تشریح (Description)
این گروه شامل مشخصه هایی برای تشریح و توضیح یك سرویس وب است . مشخصه های اصلی این گروه WSDL ( برای قرارداد سرویس ) و XSD ( برای تعریف شماهای نوع داده) هستند. این گروه همچنین مشخصه سیاست گذاری سرویس وب) WS-Policy )را شامل می شود كه سیاست گذاری هایی كه یك سرویس وب به هنگام ارتباط با یك سرویس گیرنده( كلاینت) اعمال می كند و تشریح می كند. برای مثال یك سرویس ممكن است شرایط خاصی برای فراخوانی عملیاتش داشته باشد. مشخصه WS-Policy به سرویس وب این امكان می دهد كه به سرویس گیرنده های احتمالی بگوید برای اجرای یك درخواست سرویس موفق باید از چجه قوانینی تبعیت كنند. نهایتا،‌ در این گروه مشخصه UDDI برای یافتن ( description) سرویس های وب گنجانده شد ه است.
▪ ضمانت های سرویس (Service Assurances)
سرویس های وب نباید فقط به سادگی پیغام های XMIL را رد و بدل كنند. این سرویس ها باید تضمینی برای سرویس گیرنده داشته باشند كه اولا پیغام به نحوی ایمن منتقل خواهد شد، ثانیا این كه سرویس گیرنده باید حتما پاسخی دریافت كند، حتی اگر در نقطه ای از جریان كار، نقصی پیش آمده باشد. این گروه از مشخصه ها شامل مشخصه امنیت سرویس وب ( برای تضمین رسیدن پیغام ها) مشخصه پیغام رسانی مطمئن سرویس وب ( برای تضمین رسیدن پیغام ها در شبكه های ناپایدار و بدون قابلیت اطمینان) و تعداد زیادی از مشخصه های مربوط به تراكنش است.
▪ تركیب سرویس (Service Composition)
مجموعه گسترده مشخصه های WS-I Basic Profile را نمی توان به طور كامل در هر سرویس وب پیاده كرد. به همین خاطر، توسعه دهندگان باید مشخصه هایی كه برای یك سرویس خاص مهم و مناسب هستند را انتخاب و در آن سرویس پیاده كنند. برای تامین این هدف،‌ سرویس ها دارای ویژگی تركیب سرویس هستند . كه به توسعه دهندگان اجازه می دهد مشخصه های مختلف را برای هر سرویس انتخاب كنند و آن ها را در سند WSDL گرد آوری و ثبت كنند.
در ادامه بحث ،تعدادی از مهمترین مشخصه های سرویس های وب و اهداف آن را بیان می كنیم:
WS-Seccurity (امنیت سرویس وب ): مشخصه ای جامع كه مجموعه ای از تكنولوژی های متداول امنیتی را تحت پوشش دارد، از جمله امضاهای دیجیتال و رمز گذاری مبتنی بر نشانه های امنیتی،شامل گواهی های X.۵۰۹
WS-Policy (سیاستگذاری سرویس وب ): به سرویس های وب امكان می دهد نیازها، ترجیحات(‌preferences ) و توانایی های خود را براساس مجموعه ای از فاكتورها بیان و مستند سازی می كند كنند. البته تمركز بیشتر با فاكتورهای امنیتی است . برای مثال سیاستگذاری یك سرویس وب می تواند شامل نیازهای امنیتی آن، نظیر رمز گذاری و امضای دیجیتال بر اساس یك گواهی X.۵۰۹ باشد.
WS-Adressing (آدرس دهی سرویس وب): نقاط انتهایی سرویس را در یك پیغام مشخص می كندو امكان update شدن این نقاط انتهایی را در مواردی كه پیغام بین دو یا چند سرویس منتقل می شود، فراهم می سازد. این مشخصه به طور گسترده در حال جایگزینی مشخصه قدیمی تر WS-Routing (مسیر دهی سرویس وب )است.
WS-Messaging (پیغام رسانی سرویس وب): امكان پشتیبانی از سایر پروتكل های كانال ارتباطی، نظیر TCP ، را در كنار HTTP برای سرویس وب فراهم می سازد. این مشخصه ساخت و توسعه نرم افزارهای پیغام رسانی، از جمله برنامه های كاربردی غیر همزمان كه با استفاده از SOAP روی HTTP ارتباط برقرار می كنند، را تسهیل می كند.
WS-Secure Conversation(مكالمه ایمن سرویس وب): با استفاده از نشانه های امنیتی (Security tokens) ارتباطات مورد اعتماد برای جلسات كاری فراهم می كند.
WS-Reliable Messaging (پیغام رسانی مطمئن سرویس وب): مكانیسم هایی برای تضمین اطمینان از رسیدن پیغام،حتی در صورتی كه یك یا چند سرویس در زنجیره سرویس ها قابل دسترس نباشند ، را فراهم می سازد. این مشخصه شامل روش هایی برای اعلام رسیدن پیغام است، به طوری كه فرستنده بتواند بفهمد كه آیا گیرنده در دریافت پیغام موفق بوده است یا نه.
با معرفی و ثبت مشخصه های جدید و بهبود مشخصه های قبلی ، مشخصه های سرویس های وب دائما در حال تكامل هستند. البته، مجموعه مشخصه های پایه ای كه در مقاله بیان شد، احتمالا برای مدتی به عنوان زیر بنای اصلی مشخصه های سرویس های وب باقی خواهند ماند،‌ چرا كه این مشخصه ها نیازهای اصلی و بنیادی برنامه های كاربردی سرویس گرا را پوشش می دهند.
▪ معرفی .NET Web Services Enhancements ۲.۰ for
Web Services Enhancements (WSE) ۲.۰ مجموعه ای از ابزارهای مدیریت شده تحت .NET را جهت پیاده سازی مشخصه های سرویس های وب برای توسعه دهندگان فراهم آورده است. WSE جهت فراهم آوردن پشتیبانی بیشتر زیرساختی، فراتر از آنچه كه در حال حاضر به وسیله چهارچوب كاری دات نت تامین می شود،‌برای راه حل ها ی SOA ارایه شده است. به كمك WSE همچنین زیر ساخت پردازشی برای میزبانی سرویس های وبی كه WS-Specification را پیاده سازس می كنند، فراهم می آورد. برای مثال، WSE به شما امكان می دهد كه به آسانی سرویس های وبی بسازید كه رمز گذاری و امضاهای دیجیتال را روی درخواست ها و پاسخ های سرویس وب اعمال می كنند. در نهایت،‌WSE یك ابزار بهره وری است كه برای هدایت توسعه دهندگان دات نت به سمت نسخه آینده Indigo طراحی شده است .Indigo از محصولات آینده مایكروسافت است كه پشتیبانی یك پارچه برای برنامه های كاربردی پیغام رسانی و سرویس گرا را هم فراهم می آورد.
WSE یك محصول در حال تكامل است و در حال حاضر تمام مشخصه های سرویس های وب را پشتیبانی نمی كند، ولی بسیاری از مشخصه های مهم نظیر WS-Seccurity و WS-Policyپشتیبانی می نماید . به خاطر داشته باشید كه SOA تحت تاثیر مجموعه ای از استانداردها و مشخصه های فنی است كه خودشان در حال تغییر هستند . نگارش های WSE برای هماهنگی با نسخه های جدید این استانداردها و تكنولوژی ها باید چرخه انتشار انعطاف پذیری داشته باشند. به همین خاطر مایكروسافت تصمیم گرفته است كه چرخه انتشار WSE از چرخه انتشار نگارش های .NET Framework جدا كند،‌تا بتواند انتشار نگارش های این محصول را با انعطاف پذیری بیشتری برنامه ریزی كند.
▪ خلاصه
در این مقاله مفاهیم اصلی معماری سرویس گرا (SOA) برای برنامه های كاربردی توزیع شده مبتنی بر تكنولوژی سرویس های وب ،‌معرفی شدند. در این مقاله بیان كردیم كه یك سرویس، ‌در رابطه با SOA در واقع چه چیزی است و جنبه های مهم و اصلی معماری SOA را مرور نمودیم. همچنین به طور مختصر WS-I Basic Profile و WS-Specificationو Web Services Enhancementsمعرفی شدند.
منبع : شبکه فن آوری اطلاعات ایران


همچنین مشاهده کنید