معماری سرویس گرا 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.509
WS-Policy (سیاستگذاری سرویس وب ): به سرویس های وب امکان می دهد نیازها، ترجیحات(‌preferences ) و توانایی های خود را براساس مجموعه ای از فاکتورها بیان و مستند سازی می کند کنند. البته تمرکز بیشتر با فاکتورهای امنیتی است . برای مثال سیاستگذاری یک سرویس وب می تواند شامل نیازهای امنیتی آن، نظیر رمز گذاری و امضای دیجیتال بر اساس یک گواهی X.509 باشد.
WS-Adressing (آدرس دهی سرویس وب): نقاط انتهایی سرویس را در یک پیغام مشخص می کندو امکان update شدن این نقاط انتهایی را در مواردی که پیغام بین دو یا چند سرویس منتقل می شود، فراهم می سازد. این مشخصه به طور گسترده در حال جایگزینی مشخصه قدیمی تر WS-Routing (مسیر دهی سرویس وب )است.
WS-Messaging (پیغام رسانی سرویس وب): امکان پشتیبانی از سایر پروتکل های کانال ارتباطی، نظیر TCP ، را در کنار HTTP برای سرویس وب فراهم می سازد. این مشخصه ساخت و توسعه نرم افزارهای پیغام رسانی، از جمله برنامه های کاربردی غیر همزمان که با استفاده از SOAP روی HTTP ارتباط برقرار می کنند، را تسهیل می کند.
WS-Secure Conversation(مکالمه ایمن سرویس وب): با استفاده از نشانه های امنیتی (Security tokens) ارتباطات مورد اعتماد برای جلسات کاری فراهم می کند.
WS-Reliable Messaging (پیغام رسانی مطمئن سرویس وب): مکانیسم هایی برای تضمین اطمینان از رسیدن پیغام،حتی در صورتی که یک یا چند سرویس در زنجیره سرویس ها قابل دسترس نباشند ، را فراهم می سازد. این مشخصه شامل روش هایی برای اعلام رسیدن پیغام است، به طوری که فرستنده بتواند بفهمد که آیا گیرنده در دریافت پیغام موفق بوده است یا نه.
با معرفی و ثبت مشخصه های جدید و بهبود مشخصه های قبلی ، مشخصه های سرویس های وب دائما در حال تکامل هستند. البته، مجموعه مشخصه های پایه ای که در مقاله بیان شد، احتمالا برای مدتی به عنوان زیر بنای اصلی مشخصه های سرویس های وب باقی خواهند ماند،‌ چرا که این مشخصه ها نیازهای اصلی و بنیادی برنامه های کاربردی سرویس گرا را پوشش می دهند.

معرفی .NET Web Services Enhancements 2.0 for
Web Services Enhancements (WSE) 2.0 مجموعه ای از ابزارهای مدیریت شده تحت .NET را جهت پیاده سازی مشخصه های سرویس های وب برای توسعه دهندگان فراهم آورده است. WSE جهت فراهم آوردن پشتیبانی بیشتر زیرساختی، فراتر از آنچه که در حال حاضر به وسیله چهارچوب کاری دات نت تامین می شود،‌برای راه حل ها ی SOA ارایه شده است. به کمک WSE همچنین زیر ساخت پردازشی برای میزبانی سرویس های وبی که WS-Specification را پیاده سازس می کنند، فراهم می آورد. برای مثال، WSE به شما امکان می دهد که به آسانی سرویس های وبی بسازید که رمز گذاری و امضاهای دیجیتال را روی درخواست ها و پاسخ های سرویس وب اعمال می کنند. در نهایت،‌WSE یک ابزار بهره وری است که برای هدایت توسعه دهندگان دات نت به سمت نسخه آینده Indigo طراحی شده است .Indigo از محصولات آینده مایکروسافت است که پشتیبانی یک پارچه برای برنامه های کاربردی پیغام رسانی و سرویس گرا را هم فراهم می آورد.
WSE یک محصول در حال تکامل است و در حال حاضر تمام مشخصه های سرویس های وب را پشتیبانی نمی کند، ولی بسیاری از مشخصه های مهم نظیر WS-Seccurity و WS-Policyپشتیبانی می نماید . به خاطر داشته باشید که SOA تحت تاثیر مجموعه ای از استانداردها و مشخصه های فنی است که خودشان در حال تغییر هستند . نگارش های WSE برای هماهنگی با نسخه های جدید این استانداردها و تکنولوژی ها باید چرخه انتشار انعطاف پذیری داشته باشند. به همین خاطر مایکروسافت تصمیم گرفته است که چرخه انتشار WSE از چرخه انتشار نگارش های .NET Framework جدا کند،‌تا بتواند انتشار نگارش های این محصول را با انعطاف پذیری بیشتری برنامه ریزی کند.

۱۰ پاسخ

  1. با سلام
    از مقالات به روز شما در زمینه فناوری اطلاعات تشکر میکنم .
    من واقعا خیلی به این مقاله احتیاج داشتم که در این سایت به طور کامل قرار داشت.
    معماری سرویس گرا Service Oriented Architecture

  2. با سلام
    ازمقاله شما واقعا استفاده کردم
    لطفا هر چه مطلب در مورد معماری سرویس گرا دارید به امیل من بفرستید (فوری ….)

  3. سلام ….
    لطفا در مورد نحوه و ابزار طراحی نمودارهای معماری سرویس گرا هم اگر مقاله دارید به ایمیل من بفرستید.
    ممنون

  4. mamnonnnnn

    alliii bod

  5. با سلام
    مقاله خوبی بود امیدوارم همیشه با مطالب جدیدو به روز پا بر جا بمانید
    اگر مطالب کامل تری در مورد soaدارید ممنون میشم آنها رو برایم میل کنید
    سر افراز باشید و شاد و ایرانی

  6. با عرض سلام و احترام
    از مقاله بسیار خوبتون سپاسگذارم.
    اگه مقاله ای در رابطه با ارتباط SOA و Agile Development دارید ممنون میشم برام ارسال کنید.
    بهروز باشید

  7. مفید و جالب بود .در مورد دیگر ابزارها هم مقاله ای باشد بهتر است.در واقع یک مقایسه ای صورت گیرد .با سپاس فراوان

  8. سلام
    مقاله خوبی بود ممنون

  9. مشتاق اطلاعات بیشتری در مورد این سیستم شدم لطفا با ارسال منابع بیشتر در مورد این سیستم به ادرس ایمیلم مرا در کسب اطلاعات بیشتر یاری رسانید

  10. مقاله خوبی بود .با ذکر منبع برای پروژه دانشگاهم استفاده کرد. من هم مثل سایر دوستان مایلم اگر مطالب دیگه ای در این مورد داشتید مطلع شم.

نظر بگذاريد