معماری سرویس گرا به عنوان یکی از آخرین دستاوردها در تولید نرم افزار، به نظر می رسد، در سالهای آتی معماری غالب صنعت فناوری اطلاعات و ارتباطات باشد. علت بوجود آمدن این معماری، ایده ای بود که در ذهن تعدادی از معماران آن وجود داشت و آن نرم افزار به عنوان سرویس بود. در مدل نرم افزار به عنوان سرویس، شما نرم افزار خود را بگونه ای طراحی می کنید که قابل استفاده توسط سیستم های دیگر باشد یعنی دیگران می توانند برای استفاده از سرویس شما ثبت نام کنند و هر موقع که لازم داشتند از خدمات آن بهره ببرند، همانند حالتی که در مورد شبکه های تلویزیون کابلی وجود دارد. تا زمانی که شما به سرویس متصل هستید، می توانید هر لحظه که خواستید از سرویس استفاده کنید.
واژه های کلیدی
SOA = Service Oriented Architecture,
SOE = Service Oriented Enterprise,
SOI = Service Oriented Infrastructure,
MDA = Minimum Descent Altitude,
XML = Extensible Markup Language,
خوش تعریف = Well-defined,
WSDL = Web Service Description Language,
SGML = Standard Generalized Markup Language,
واحدهای نرم افزاری آماده در شبکه = Network-available Software Unit,
سرویس های سطح کسب و کار = Business-level services,
مقدمه
برای مدت های طولانی برنامه نویسان سعی می کردند تا، کدهای خود را بصورت modular( یک سیستم از بالا به پایین به زیر سیستم های کوچک و نسبتا مستقل تفکیک می شود ) بنویسند، تا بتوان از آن در تولید نرم افزارهای دیگر استفاده کرد. تفاوت نوشتن کد بصورت modular و بر اساس معماری سرویس گرا در حجم مخاطبان آن است. دوباره به همان مثال اول برمی گریم، وقتی شما کد خود را به منظور قابل استفاده بودن توسط نرم افزارهای دیگر، به شکل modularمی نویسید مانند این است که، یک شبکه تلویزیون کابلی درون یک ساختمان خاص دارید و بنابراین فقط ساکنین آن ساختمان می توانند از آن بهره برداری کنند. در جهان امروز طیف مخاطبانی که بالقوه می توانند از سرویس شما استفاده کنند، کل کاربران روی شبکه اینترنت است. بنابراین باید مکانیزمی بوجود می آمد، که می توانست پاسخگوی این محیط جدید (اینترنت) و کاربران آن باشد و بنابراین معماری سرویس گرا بوجود آمد.
این معماری توسط دو شرکت IBM , Microsoft بوجود آمد، که هر دو شرکت طی سالهای اخیر از حامیان اصلی سرویس های وب و عامل بسیاری از ابداعات جدید در حیطه ی سرویس های وب، مانند UDDI ,WSE بوده اند.
قابل ذکر است، که در آخرین معماری در حال توسعه، در تولید نرم افزار که هنوز هم در مرحله تحقیقاتی است MDA، تدابیری جهت هماهنگی با معماری سرویس گرا در نظر گرفته شده است. از نمونه های استفاده از این معماری در کشور خودمان، سازمان ثبت احوال کشور است که موظف شده تا پایگاه های اطلاعاتی خود را بصورت سرویس وب و مبتنی بر این معماری به سایر نهادها مانند نیروی انتظامی و سایر دستگاه ها ارائه دهد.
سرویس ها چه هستند؟
بسیاری از ما آنقدر با تکنولوژی های سرویس های وب آشنا هستیم که اغلب درباره این که خود سرویس ها واقعا چه هستند، فکر نمی کنیم. هر کس که از سایت های تجارت الکترونیکی به صورت آنلاین خرید کرده باشد، با مفهوم سرویس ها آشنا است. وقتی که سفارش تا ن را دادید، باید اطلاعات کارت اعتباری تان را ارایه کنید که به طور معمول توسط یک فراهم کننده سرویس ثانویه، تایید و شارژ می شود. وقتی که سفارش پذیرفته شد، شرکت سفارش گیرنده با یک شرکت فراهم کننده سرویس حمل ونقل سرویستان را فراهم می کند و در نهایت کالای شما تحویلتان می شود.
در ادامه سه تعریف می آوریم که در کنار یکدیگر ماهیت یک سرویس راشرح می دهند:
۱- سرویس ها اجزاء مستقلی هستند که پیغام های XML با ساختار مشخص و خوش تعریف را پردازش میکنند.
• XML ساده ترین ورژن SGML استاندارد برای ایجاد و طراحی سند های HTML است(مناسب برای استفاده در سایت های اینتر نتی).
• SGML یک استاندارد مدیریت اطلاعات است که در سال 1986 به وسیله سازمان بین المللى استاندارد سازى (ISO) معرفى گردید و وسیله اى است براى ارائه اسناد مستقل از یک سیستم یا برنامه کاربردى خاص ضمن به کارگیرى اطلاعاتى چون قالب بندى، شاخص دهى و حفظ اطلاعات پیوندى در اسناد.
۲- سرویس ها دارای رابط های خوش تعریف هستند که به وسیله یک سند مبتنی بر XML که سند
WSDLخوانده می شود، به این سند گاهی قرارداد WSDL نیز گفته می شود، پردازش می شوند. محتویات این سند، عملیاتی (متدهایی) که توسط سرویس ارائه می شود را شرح می دهد. از جمله اطلاعات مربوط به انواع داده، اطلاعات نحوه اتصال به سرویس، جهت یافتن و ارتباط با عملیات سرویس وب.
۳- سرویس ها دارای نقاط انتهایی (Endpoint)هستند که استفاده کنندگان از سایر سرویس ها میتوانند بر اساس آدرس سرویس (URL)معمولاً به آن ها متصل شوند. این همان چیزی است که ارتباط(جفت شدن) آزادانه خوانده می شود.
سرویس ها می توانند به دو شکل ساده و ترکیبی ارائه شوند. سرویس های ترکیبی، سرویس هایی هستند که بر اساس بکارگیری چند سرویس ساده ( یا ترکیبی) ایجاد می شوند. برای مثال، ممکن است سیستم توزیع شده ای بر اساس چند سرویس ساده صدور صورتحساب، ثبت سفارش، مدیریت روابط مشتری و... سرویس های ترکیبی گسترده تری در ارتباط با حرفه ای خاص ایجاد نماید.
پس می توان گفت: سرویس ها اجزای توزیع شده با رابط های تعریف شده و مشخص هستند که پیغام های XML را پردازش و تبادل می کنند.
معماری سرویس
چندین مصرفکننده سرویس میتوانند با ارسال پیام اقدام به فراخوانی سرویسها نمایند. این پیامها معمولا توسط یک گذرگاه سرویس تغییر شکل داده شده و به سوی سرویس مناسب هدایت میگردند. معماری سرویس میتواند یک موتور قواعد تجاری را فراهم سازد که امکان تلفیق قواعد تجاری در یک سرویس یا چندین سرویس را عملی سازد. معماری سرویس مزبور همچنین یک زیربنای مدیریت سرویس فراهم میآورد که سرویسها و اعمالی از قبیل بازرسی، پرداخت صورتحساب، و واقعهنگاری (logging) را مدیریت مینماید. به علاوه، این معماری انعطافپذیری ناشی از دارا بودن فرایندهای تجاری تغییر پذیر را به سازمانها ارزانی میدارد، فرایندهایی که نیازمندیهای تنظیمی همانند Sarbanes Oxley (SOX) را مد نظر قرار میدهند، و سرویسهای اختصاصی را بدون تحت تاثیر قرار دادن سایر سرویسها تغییر میدهند.
معرفی SOA و چند کار برد آن:
معماری سرویسگرا (SOA) شکل تکامل یافته محاسبهگری توزیع شده مبتنی بر فرضیه طراحی تقاضا/پاسخ برای برنامههای کاربردی همگام و ناهمگام است. منطق تجاری یا توابع اختصاصی یک برنامه کاربردی به صورت ماژولار در آمدهاند و به عنوان سرویسهایی برای برنامههای کاربردی مصرفکننده/کلاینت ارائه گردیدهاند. مهمترین نکته در مورد این سرویس ها طبیعت اتصال آزادانه آنهاست؛ بدین معنی که رابط سرویس، مستقل از پیادهسازی است.
تعاریف گوناگونی از معماری سرویس گرا ارائه شده است که از جمله آنها می توان به تعاریف زیر اشاره کرد:
1. مجموعه قوانین، سیاست ها و چارچوب هایی که نرم افزارها را قادر می سازد تا عملکرد خود را از طریق مجموعه سرویس های مجزا و در عین حال مربوط به هم در اختیار سایر درخواست کنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پیاده سازی و تنها از طریق رابط های استاندارد و تعریف شده، این سرویس ها را پیدا کرده و فراخوانی نمایند.
2. روشی برای ساخت سیستم های توزیع شده ای است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویس ها قرار می گیرد.
3. از دیگرتعاریف ارائه شده می توان به "واحدهای نرم افزاری آماده در شبکه (Network-available Software Unit) " یا "سرویس های سطح کسب و کار (Business-level services) " اشاره کرد.
معماریهای سرویسگرا دارای خصوصیات اصلی زیر هستند:
- سرویس های SOA دارای رابط های خود توصیفگر در اسناد XML مستقل از پلتفرم هستند. زبان توصیف سرویسهای وب (WSDL) استاندارد به کار برده شده برای توصیف این سرویسها میباشد.
- سرویسهای SOA با پیامهایی که رسماً توسط مدل XML (که XSD نیز نامیده میشود) تعریف شدهاند ارتباط برقرار مینمایند. ارتباط میان مصرفکنندگان و فراهمکنندگان یا سرویسها معمولا در محیطهای ناهمگن رخ میدهد، با دانش کم یا بدون هیچ دانشی در مورد فراهمکننده. پیامهای مبادله شده میان سرویسها را میتوان به عنوان اسناد تجاری مهم پردازش شده در یک سازمان نگریست.
- سرویسهای SOA توسط یک رجیستری که به عنوان یک فهرست دایرکتوری عمل میکند نگهداری میگردند. برنامههای کاربردی میتوانند سرویسها را درون رجیستری جستجو نمایند و سرویس را فراخوانی کنند. توصیف، تعریف، و یکپارچگی جهانی (UDDI) استانداردی است که برای رجیستری سرویس مورد استفاده قرار گرفته است.
هر سرویس SOA دارای یک کیفیت سرویس (QoS) مرتبط با خود است. برخی از عناصر اساسی QoS شامل نیازمندیهای امنیتی، از قبیل احراز هویت و صدور مجوز، پیامرسانی قابل اطمینان، و خطمشیهایی در این زمینه که چه افرادی میتوانند سرویسها را فراخوانی نمایند، میباشد.
می توان گفت: معاری سرویس گرا (SOA) روشی جدید و در حال تکامل برای ساخت برنامه های توزیع شده با Distributed Application است. با رویکرد سرویس گرا می توان راه حل هایی را ارائه داد که به مرز دامنه های سازمان، شرکت یا دپارتمان محدود نیستند. با استفاده از SOA می توان در شرکتی که دارای سیستم ها و برنامه های کاربردی مختلف روی پلتفرم های متفاوت است، یک راه حل یک پارچه سازی با استقلال زیاد(loosly coupled) ساخت که جریان یکنواخت و هماهنگ کار را تضمین کند.
نیاز به معماری سرویس گرا از جنبه ای دیگر نیز به نحوه بارزی در برنامه های کاربردی E-Commerce مشهود است. اگر مثلا جزء (componet) مربوط به پرداخت با کارت اعتباری offline و یا غیر فعال باشد، قرار نیست که فرایند فروش متوقف شود. بلکه سفارش ها بایستی پذیرفته شوند وعملیات پرداخت به وقت دیگری موکول شود.
مثل سایر معماری های توزیع شده، SOA ساخت برنامه های کاربردی با استفاده اجزایی که در domainهای جدا از هم را قرار دارند را ممکن می سازد. SOA از سرویس های وب به عنوان نقاط ورود برنامه کاربردی استفاده می کند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستم های توزیع شده سنتی مبتنی بر اجزاء هستند. با این تفاوت که در این جا ارتباط بین سرویس وب و استفاده کننده خیلی آزاداترانه ومستقل تر (loosely coupled) است. بعلاوه SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرد است. فاکتورهایی نظیر: قابلیت اطمینان سرویس، جامعیت پیام، یکسانی تراکنش و امنیت پیام. در امور تجاری واقعی نمی توان روی سرویس هایی که یک درخواست را فقط به خاطر این که بتوانند بفهمند، پردازش می کنند حساب کرد. در امور تجاری به قطعیت و اطمینان بیشتری نیاز است. واضح است که سیستم های مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف متفاوت باشد. با وجود این هیچکدام از این موارد نباید برای کنار گذاشتن یاعدم پاسخ به یک درخواست باشند.
علاوه بر آن نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند واضح است که سیستم های مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف، متفاوت باشد. با وجود این، هیچ کدام ازاین موارد نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند. علاوه بر آن نباید هیچ ابهامی در نحوه فراخوانی یک سرویس وجود داشه باشد. اگر سیستمی توانایی های خود را در قالب سرویسی روی وب ارائه کند، در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازی و اعلام شود. بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامه های کاربردی امروزی در SOA حل شده است که احتمال نقض آن در هر مر حله ای از جریان کار بسیار زیاد است. در SOA فرض بر این است که خطا وجود دارد و می تواند بیفتد، برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد، این معماری طوری طراحی شده است که مجدداً پیام را بفرستد. و اگر یک سرویس به طور کامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار انفاق بیفتد) آن وقت معماری طوری طراحی شده است که روی دادن خطاهایی که منجر به قطع کامل در خواست سرویس می شود، امکان پذیر نباشد. SOAقابلیت اطمینان را افزایش می دهد، چون خطاهای موقت در بخشی از جریان کار نمی توانند کل فرایند تجاری را از کار بیاندازند.
در حال حاضر، تکنولوژی سرویس های وب(Web Services)و پیاده سازی نمونه های موفق از آن، نشان داده است که SOA می تواند به عنوان راه حلی عملی و دست یافتنی در طراحی سیستم های جدید و یکپارچه سازی سیستم های بزرگ موجود، مطرح گردد. البته ذکر تفاوت سرویس های وب و SOA در اینجا لازم به نظر می رسد:
سرویس های وب مجموعه ای از تکنولوژی هایی همچون XML,SOAP,WSDL و UDDI می باشد که امکان ارائه راه حل و برنامه نویسی جهت رفع مشکلی خاص را فراهم می نماید.
در حالی که SOA یک معماری است و از مجموعه مشخصی از تکنولوژی ها فراتر می باشد. اگرچه SOA بر اساس این تکنولوژی ها راه حل ارائه می نماید، اما در عین حال مستقل از هر یک از آنها است.
آنچه اهمیت دارد تعریف سرویس به عنوان مهمترین عنصر این معماری می باشد.
سرویس، رفتار قرادادی تعریف شده ایست که هر قطعه ای می تواند آن را جهت استفاده سایر قطعات در سیستم تهیه و پیاده سازی نماید.
در این معماری، همه توابع به عنوان سرویس تعریف می گردند. این توابع شامل توابع کسب و کار (Business functions) و تراکنش های حرفهای (Business transactions) می باشند که تراکنش های حرفه ی خود شامل توابع سطح پایین (Low-level functions) و توابع سیستمی سرویس ها(System service functions) هستند.
سرویس ها بصورت مستقل طراحی و پیاده سازی شده و به عنوان جعبه سیاه عمل می نمایند. قطعات دیگر در خارج از این قطعه نیازی به دانستن نحوه انجام کار در این سرویس را ندارند و تنها به نتیجه آن نیازمندند.
قطعات، سرویس های خود را از طریق رابط ها (interface) در اختیار قطعات دیگر قرار می دهند که این رابط ها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابط های محلی یا دور). در ضمن این رابط ها می توانند به همان نرم افزار کاربردی یا به آدرسی در محل دیگری از شبکه مرتبط باشند.
رابط ها به عنوان کلیدی در برقراری این ارتباط ها هستند و از طریق آنها نوع پارامترهای ورودی و نتایج (خروجی) مشخص می گردد.
مهمترین مفاهیم و اصول در نظر گرفته شده در طراحی سرویس گرا به شرح زیر می باشد:
1- کپسوله سازی سرویس (service encapsulation) تاکید بر متمرکز کردن عملیات وابسته به داده در یک واحد (کپسول) مشخص و پنهان کردن پیاده سازی و مکانیزم درون واحد نرم افزاری است.
2- اتصال آزاد بین سرویس ها (service loose coupling) تاکید بر استقلال سرویس ها و کاهش وابستگی سرویس ها به یکدیگر است فقط کافی است سرویس ها از وجود هم آگاه باشند.
3- قرارداد سرویس دهی (service contract) ارتباط بین سرویس ها بر اساس قرارداد تعریف شده ای است که در اسناد فنی بطور مشخص ذکر می شود.
4- مجرد ساختن سرویس (service abstraction) تاکید بر جدا کردن پیاده سازی از رابط (جهان خارج) و پنهان کردن مکانیزم و نحوه انجام کار در درون واحد ارائه دهنده ی سرویس می باشد.
5- استفاده مجدد و بازبکارگیری سرویس (service reusability) تاکید بر طراحی سرویس ها به نحوی است که بتوان آنها را در سامانه های مختلف بکار برد. با تاکید بیشتر بر استفاده مجدد.
6- قابلیت ترکیب سرویس (service composability) به معنی آنست که سرویس ها به نحوی طراحی شوند که با برخورداری از قابلیت ترکیب شدن ایجاد سرویس های مرکب (کامپوزیت) امکان پذیر باشد.
7- خودگردانی سرویس (service autonomy) عبارتست از قابلیت و قدرت سرویس در بکارگیری و مدیریت منابع خود بطور مستقل و همچنین کنترل کامل بر منطق پیاده سازی خود.
8- بدون حالت بودن سرویس (service statelessness) به این معنی است که سرویس باید در مورد فعالیت های گذشته (فراخوانی های گذشته) کمترین اطلاعات را نگهدارد و تاکید بر طراحی سرویس بنحوی است که حالت های وابسته به گذشته کمتری داشته باشد.
9- قابلیت کشف شدن سرویس (service discoverability) به این معنی است که سرویس باید در یک محیط شبکه با استفاده از سازوکارهای مناسب توسط برنامه های دیگر آشکار شود.
به بیان کلی، SOA فرایندی تکامل یافته را ارائه می نماید و ازاین نظر می تواند آن را بلوغ سرویس های وب و تکنولوژی های یکپارچه سازی به حساب آورد. در SOA به این امر توجه شده است که سیستم های با اهمیت حیاتی که بر مبنای تکنولوژی های توزیع شده ساخته می شوند، باید تضمین های خاصی را تامین نمایند. در این گونه سیستم ها باید این اطمینان وجود داشته باشد که در خواست های سرویس به طور صحیح مسیر دهی و هدایت می شوند، در زمان مناسب به آن ها پاسخ داده می شود، و این سرویس ها به طور واضح و دقیق سیاست های ارتباطی و رابط های خود را اعلام می کنند.
شکل 1- SOA کارها را تغییر می دهد
SOAP, WSDL, UDDI
WSDL، UDDI و SOAP قطعات اساسی زیربنای SOA هستند WSDL .برای توصیف سرویس به کار برده شده است؛UDDI، برای ثبت و جستجوی سرویسها وSOAP، به عنوان یک لایه نقل و انتقال جهت ارسال پیامها میان مصرفکننده سرویس و فراهمکننده سرویس. در حالی که SOAP ساز و کار پیشفرض برای سرویسهای وب است، تکنولوژیهای جایگزین، انواع دیگری از انقیادها (binding) را برای یک سرویس تحقق میبخشند. یک مصرفکننده میتواند به جستجوی یک سرویس در رجیستری UDDI بپردازد، WSDL را برای سرویسی که دارای توصیف است تهیه نماید، و سرویس را از طریق SOAP فراخوانی کند.
چرا SOA؟
واقعیت موجود در سازمانهای IT این است که زیربنا در میان سیستمهای عامل، برنامههای کاربردی، نرمافزارهای سیستمی، و زیربنای کاربردی به صورت ناهمگن است. برخی برنامههای کاربردی موجود برای اجرای فرایندهای فعلی تجارت مورد استفاده قرار گرفتهاند، بنابراین آغاز از صفر برای ساختن زیربنای جدید یک رویکرد قابل انتخاب محسوب نمیگردد. سازمانها باید به شکلی سریع به تغییرات تجاری واکنش نشان دهند؛ از سرمایههای موجود در برنامههای کاربردی و زیربنای کاربردی به منظور تمرکز بر روی نیازمندیهای تجاری جدیدتر استفاده نمایند؛ کانالهای جدید تعامل با مشتریان، شرکا، و تامینکنندگان را پشتیبانی کنند؛ و یک معماری که تجارت ارگانیک را پشتیبانی نماید به کار گیرند. SOA با طبیعت اتصال آزادانه خود به سازمان ها امکان بهرهگیری از سرویسهای جدید یا ارتقای سرویسهای موجود را به شیوهای قطعه قطعه به منظور تمرکز بر نیازمندیهای تجاری فراهم میآورد، امکانی را برای قابل استفاده نمودن سرویسها در کانالهای متفاوت فراهم میسازد، و سازمان موجود و برنامههای کاربردی نسل قبل را به عنوان سرویسها ارائه میکند، در نتیجه سرمایههای زیربنای IT موجود را حراست مینماید.
یک سازمان استفاده کننده از SOA میتواند یک برنامه کاربردی مرکب زنجیره تامین را با استفاده از مجموعهای از برنامههای کاربردی موجود که کارکرد خود را از طریق رابطهای استاندارد ارائه میدهند، ایجاد نماید.
شکل 2 - مقایسه ی دو نوع معماری
SOA سرویس وب نیست
آن گونه که به نظر میرسد در مورد ارتباط میان SOA و سرویسهای وب نوعی سردرگمی عمومی وجود دارد. در یکی از گزارشهای Gartner مورخ آوریل 2003، Yefim V. Natis این گونه تقاوت میان آنها را شرح میدهد: "سرویسهای وب راجع به مشخصههای تکنولوژی هستند، در حالی که SOA یک قاعدهی طراحی نرمافزار است."شایان ذکر است که WSDL سرویسهای وب یک استاندارد تعریف رابط مناسب SOA است: این نقطهای است که سرویسهای وب و SOA اساسا به یکدیگر پیوند میخورند. اساساً،SOA یک الگوی معماری است، در حالی که سرویسهای وب سرویسهای پیادهسازی شده توسط مجموعهای از استانداردها میباشند؛ سرویسهای وب یکی از روشهایی است که شما با استفاده از آن میتوانید SOA را پیادهسازی نمایید. مزیت پیادهسازی SOA با سرویسهای وب این است که شما به یک رویکرد بیطرفانه نسبت به پلاتفرم به منظور دستیابی به سرویسها و interoperability بهتر دست مییابید همچنان که فروشندگان بیشتر و بیشتری مشخصههای بیشتر و بیشتری از سرویسهای وب را پشتیبانی مینمایند.
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 29 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود مقاله معماری سرویس گرا