معماری سرویس‌گرا

**معماری سرویس‌گرا** ، یکی از رهیافت‌های طراحی نرم‌افزار با تمرکز بر طراحی سامانه‌های توزیع‌شده است. در این معماری کارکردهای نرم‌افزاری در قالب سرویس توسط مؤلفه‌های برنامه‌های کاربردی به دیگر مؤلفه‌ها در بستر ارتباطات تحت شبکه ارائه می‌شود. 

امروزه از این معماری در دستگاه‌های دولتی و شرکت‌های خصوصی برای توسعه برنامه‌های کاربردی و سیستم‌ها، یکپارچگی سیستم‌های اطلاعاتی سازمانی یا تعاملات اطلاعاتی بین سازمانی و استاندارد وب سرویس (Web Service) و پروتکل‌های آن استفاده می‌شود.

## معرفی
### سرویس
یک سرویس یک واحد مجزا و مستقل از یک وظیفه‌مندی است که می‌تواند به صورت مستقل و با کمترین وابستگی از دیگر بخش‌ها استفاده، بروزرسانی و عمل کند. ویژگی‌های یک سرویس عبارتند از: 
# منطقاً نشان دهنده یک فعالیت کسب‌وکار با خروجی معین است.
# خودمختار است.
# محتویات و جزئیات آن بر مشتریان سرویس پوشیده است.
# سرویس ممکن است شامل دیگر سرویس‌ها برای ارائه سرویس خود باشد.

بندانگشتی|دانه بندی سرویس ها
سرویس‌های متفاوت می‌توانند برای ارائه وظیفه‌مندی برنامه‌های کاربردی بزرگتر با هم تجمیع و یکپارچه شوند. در واقع معماری سرویس‌گرا با برنامه‌نویسی مؤلفه‌گرا ( modular programming) ارتباط نزدیکی دارد. معماری سرویس‌گرا مؤلفه‌های نرم‌افزار توسعه یافته به صورت مجزا که به صورت مستقل و توزیع شده‌ استقرار یافته‌اند را با هم یکپارچه می‌سازد. این معماری توسعه نرم‌افزار مبتنی بر مؤلفه و ارتباط، پیرامون شبکه مؤلفه‌ها بر مبنای اصل پنهان‌سازی در توسعه برنامه‌های کاربردی را تسهیل می‌کند.

### پروتکل‌های معماری سرویس‌گرا
برخی از قراردادهای معماری سرویسگرا عبارتند از: 
* ('''SOAP''' (Simple Object Access Protocol: ساختاری برای تبادل پیام‌ها در قالب XML است که بین سرویس‌های وب تبادل می‌شود.
* ('''WSDL''' (Web service Description Language: زبانی مبتنی بر XML که جهت توصیف ویژگی‌های عملیاتی سرویس‌های وب استفاده می‌شود و دارای دو بخش تعریف واسط و پیاده‌سازی است.
* ('''UDDI''' (Universal Description ,Discovery and Integration: واسطی است برای انتشار و شناسایی سرویس‌های وب و شامل یک مخزن می‌شود که ارائه دهندگان به انتشار و تبلیغ سرویس خود می‌پردازند تا دیگران بتوانند آن را شناسایی کنند.

### خواص معماری سرویس‌گرا
مهمترین خواص معماری سرویسگرا عبارتند از:  
* استفاده از استانداردهای مستقل از فناوری و مورد توافق برای ارائه مؤلفه‌های نرم‌افزاری تحت قالب سرویس
* معرفی‌کننده یک روش مشخص و مورد توافق برای تعریف و ارتباط بین مؤلفه‌های نرم‌افزاری
* مؤلفه‌های نرم‌افزاری منفرد می‌توانند در ساخت دیگر نرم‌افزارها استفاده شوند
* تقویت‌کننده رهیافت سرهم‌بندی اجزای از قبل تعریف شده برای ساخت نرم‌افزارها به جای توسعه و پیاده‌سازی آنها
* می‌تواند به نرم‌افزارهای خارج سازمانی نیز مانند انواع داخلی آن متصل شوند.

### گذرگاه سرویس سازمانی
بندانگشتی|گذرگاه سرویس سازمانی
گذرگاه سرویس سازمانی ((enterprise service bus (ESB) یک زیرساخت نرم‌افزاری است که به عنوان یک لایه واسط از میان‌افزار، نیازمندی‌هایی مانند یکپارچه سازی بین سرویس‌ها، امنیت، مدیریت، کنترل سرویس و مدیریت ارتباطات را پشتیبانی می‌کند.  این میان‌افزار برنامه‌ای کاربردی است که بین دیگر برنامه‌های کاربردی تجاری ارتباط برقرار می‌کند و در حالت ایده‌ال تمام ارتباطات و تبادلات بین برنامه‌ها و سیستم‌های سازمانی را مدیریت و تسهیل کند.

عدم یکپارچگی سرویس‌های نرم‌افزاری و بانک‌های اطلاعاتی انگیزه اصلی بهره‌گیری از گذرگاه سرویس سازمانی در معماری سرویس‌گرا است. بطوریکه در شرکت‌های بزرگ جهانی بالاترین اولویت کاری بیشتر مدیران فناوری اطلاعات یکپارچه‌سازی و سرویس‌گرایی است و بهره‌گیری از گذرگاه سرویس سازمانی در این راستا می‌تواند بسیار تسهیل‌کننده یکپارچگی سیستم‌های سازمانی باشد.

## تاریخچه
معماری سرویس‌گرا، نخستین بار با عنوان معماری مبتنی بر سرویس در سال 1998 توسط یک تیم یکپارچه سازی سرویس‌های مدیریت و فرایندهای کسب‌وکار، مبتنی بر سرویس ارایه شد. 

### بیانیه سرویس‌گرایی
در سال 2009 بیانیه‌ای جهت معماری سرویس‌گرا بر مبنای 6 ارزش بنیادی ارائه شد. این شش ارزش بنیادین در معماری سرویس‌گرا عبارتند از: 
# ارزش‌های کسب‌وکار از راهبردهای فنی اهمیت بیشتری دارند.
# اهداف راهبردی از منافع پروژه‌ای خاص اهمیت بیشتری دارند.
# تعامل‌پذیری ذاتی از یکپارچه سازی‌های مقطعی اهمیت بیشتری دارد.
# سرویس‌های اشتراکی از پیاده‌سازی‌های خاص منظوره از اهمیت بیشتری برخوردار هستند.
# انعطاف‌پذیری از سازماندهی اهمیت بیشتری دارد.
# بهبود تکاملی از کمال‌گرایی اولیه اهیمت بیشتری دارد.

### تاریخچه معماری سرویس‌گرا در ایران
شروع فعالیت‌های معماری سرویس‌گرا در ایران به سال‌های 84 و 85 باز می­‌گردد. اولین تحقیقات و مطالعات دانشگاهی در این سال‌ها انجام شد و هسته پژوهشی معماری سیستم های اطلاعاتی دانشگاه شهید بهشتی  از پیشگامان این حوزه بود، دکتر فریدون شمس مدیر هسته پژوهشی، هدایت چندین پایان‌نامه کارشناسی‌ارشد با موضوع معماری سرویس‌گرا را به عهده گرفت(که تا آن زمان کمتر در دانشگاه‌ها کار شده بود) و این روند تا سال‌های بعد ادامه داشت. برگزاری دوازدهمین کنفرانس انجمن کامپیوتر در اسفند 1385 فرصت خوبی برای معرفی معماری سرویس‌گرا بود؛ در این کنفرانس یک کارگاه آموزشی مختص معماری سرویس‌گرا توسط امیر مهجوریان و دکتر فریدون شمس برگزار شد که نقش مهمی در آشنایی دانشجویان و جامعه علمی با معماری سرویس‌گرا داشت.

جذابیت موضوع معماری سرویس‌گرا برای دانشجویان و مراکز دانشگاهی به همراه وجود منابع آموزشی کافی باعث شد از اواخر دهه 80 تا اوایل دهه 90، تعداد قابل توجهی از دانشجویان تحصیلات تکمیلی در دانشگاه‌های معتبر برای موضوع پایان‌نامه یا مقالات علمی به این موضوع بپردازند، موضوعات مرتبط با معماری سرویس‌گرا بعد از نیمه دهه 90 همچنان مورد توجه پژوهشگران و دانشجویان بود تا در چند سال اخیر با داغ شدن موضوع "معماری مایکروسرویس(مشتق شده از معماری سرویس‌گرا)"، توجه‌ها به این عنوان جلب شد و مفاهیم سرویس‌گرایی با شکل جدیدتر و جذاب تر مطرح شد.

با هدف ترویج و فرهنگ­‌سازی مفاهیم و استانداردهای معماری سازمانی و معماری سرویس­‌گرا، در سال 1390 آزمایشگاه معماری سازمانی سرویس­‌گرا در دانشگاه شهید بهشتی با حمایت سازمان فناوری اطلاعات ایران تأسیس گردید و پس از آن طی سال‌های 94 تا 97، هفت شعبه از آزمایشگاه­‌های معماری سازمانی سرویس‌­گرا در 7 دانشگاه کشور راه ­اندازی گردید.

به موازات توسعه مباحث علمی معماری سرویس‌گرا در کشور، شرکت­‌های نرم­ افزاری نیز برای بروزرسانی محصولات خود همسو با ترند روز دنیا اقدام به مدرن­ سازی سیستم ‌های اطلاعاتی با رویکرد سرویس­‌گرا نمودند، اکنون بیشتر شرکت­‌های نرم‌افزاری مدعی تبعیت از معماری سرویس­‌گرا در محصولات خود هستند، اگرچه کیفیت و کمیت این ادعاها نیاز به راستی‌آزمایی دارد، که نشان دهنده اهمیت معماری سرویس‌گرا در حوزه معماری سیستم(و حتی کل حوزه فناوری اطلاعات) است.

## منابع

رده:الگوهای طراحی نرم‌افزار
رده:الگوی معماری (علم رایانه)
رده:خدمات وب
رده:خدمت‌گرا (رایانش کسب‌وکار)
رده:نوشتارهای صوتی