معماری سرویس گرا چیست؟ SOA چیست؟
معاری سرویس گرا (SOA) روشی جدید و در حال تکامل برای ساخت برنامههای توزیع شده با Distributed Application است. سرویسها اجزای توزیع شده با رابطهای تعریف شده و مشخص هستند که پیغامهای XML را پردازش وتبادل میکنند. با رویکرد سرویس گرا میتوان راه حلهای را ارائه داد که به مرز دامنههای سازمان، شرکت یا دپارتمان محدود نیستند. با استفاده از SOA میتوان در شرکتی که دارای سیستمها و برنامههای کاربردی مختلف روی پلتفرمهای متفاوت است، یک راه حل یک پارچه سازی با استقلال زیاد (loosly coupled) ساخت که جریان یکنواخت و ناهماهنگ کار را تضمین کند.
معاری سرویس گرا (SOA) روشی جدید و در حال تکامل برای ساخت برنامههای توزیع شده با Distributed Application است. سرویسها اجزای توزیع شده با رابطهای تعریف شده و مشخص هستند که پیغامهای XML را پردازش وتبادل میکنند. با رویکرد سرویس گرا میتوان راه حلهای را ارائه داد که به مرز دامنههای سازمان، شرکت یا دپارتمان محدود نیستند. با استفاده از SOA میتوان در شرکتی که دارای سیستمها و برنامههای کاربردی مختلف روی پلتفرمهای متفاوت است، یک راه حل یک پارچه سازی با استقلال زیاد (loosly coupled) ساخت که جریان یکنواخت و ناهماهنگ کار را تضمین کند.
هر کس که از سایتهای تجارت الکترونیکی به صورت آنلاین خرید کرده باشد، با مفهوم سرویسها آشنا است. وقتی که سفارش تا ن را دادید، باید اطلاعات کارت اعتباریتان را ارایه کنید که به طور معمول توسط یک فراهم کننده سرویس ثانویه، تایید و شارژ میشود. وقتی که سفارش پذیرفته شد، شرکت سفارش گیرنده با یک شرکت فراهم کننده سرویس حمل ونقل فراهم میکند و در نهایت کالای شما تحویلتان میشود. نیاز به معماری سرویس گرا از جنبهای دیگر نیز به نحوه بارزی در برنامههای کاربردیeCommerce مشهود است. اگر مثلا جزء (componet) مربوط به پرداخت با کارت اعتباری offline و یا غیر فعال باشد، قرار نیست که فرایند فروش متوقف شود. بلکه سفارشها بایستی پذیرفته شوند وعملیات پرداخت به وقت دیگری موکول شود.
مثل سایر معماریهای توزیع شده، SOA ساخت برنامههای کاربردی با استفاده اجزایی که در domainهای جدا از هم را قرار دارند را ممکن میسازد. SOA از سرویسهای وب به عنوان نقاط ورود برنامه کاربردی استفاده میکند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستمهای توزیع شده سنتی مبتنی بر اجزاء هستند. با این تفاوت که در اینجا ارتباط بین سرویس وب و استفاده کننده خیلی آزاداترانه ومستقلتر (loosely coupled) است. به علاوه SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرد است. فاکتورهایی نظیر: قابلیت اطمینان سرویس، جامعیت پیام، یکسانی تراکنش و امنیت پیام. در امور تجاری واقعی نمیتوان روی سرویسهایی که یک درخواست را فقط به خاطر اینکه بتوانند بفهمند، پردازش میکنند حساب کرد. در امور تجاری به قطعیت و اطمینان بیشتری نیاز است. واضح است که سیستمهای مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آنها در دفعات مختلف متفاوت باشد. با وجود این هیچکدام از این موارد نباید برای کنار گذاشتن یاعدم پاسخ به یک درخواست باشند.
علاوه بر آن نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند واضح است که سیستمهای مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آنها در دفعات مختلف، متفاوت باشد. با وجود این، هیچ کدام ازاین موارد نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند. علاوه بر آن نباید هیچ ابهامی در نحوه فراخوانی یک سرویس وجود داشه باشد. اگر سیستمی تواناییهای خود را در قالب سرویسی روی وب ارائه کند. در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازی و اعلام شود. بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامههای کاربردی امروزی در SOA حل شده است که احتمال نقض آن در هر مر حلهای از جریان کار بسیار زیاد است. در SOA فرض بر این است که خطا وجود دارد و میتواند بیفتد، بنابراین استراتژیهایی برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد. این معماری طوری طراحی شده است که مجددا پیام را بفرستد. واگر یک سرویس به طور کامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار انفاق بیفتد) آن وقت معماری طوری طراحی شده است که روی دادن خطاهایی که ممنجر به قطع کامل در خواست سرویس میشود، امکان پذیر نباشد. SOA قابلیت اطمینان را افزایش میدهد، چون خطاهای موقت در بخشی از جریان کار نمیتوانند کل فرایند تجاری را از کار بیاندازند.
به بیان کلی، SOA فرایندی تکامل یافته را ارائه مینماید و ازاین نظر میتواند ان را بلوغ سریسهای وب و تکنولوژیهای یکپارچه سازی به حساب آورد. در SOA به این امر توجه شده است که سیستمهای با اهمیت حیاتی که بر مبنای تکنولوژیهای توزیع شده ساخته میشوند. باید تضمینهای خاصی را تامین نمایند. در این گونه سیستمها باید این اطمینان وجود داشته باشد که در خواستهای سرویس به طور صحیح مسیر دهی و هدایت میشوند، در زمان مناسب به آنها پاسخ داده میشود، و این سرویسها به طور واضح و دقیق سیاستهای ارتباطی و رابطهای خود را اعلام میکنند.