معماری سرویس گرا به عنوان یکی از آخرین دستاوردها در تولید نرم افزار، به نظر می رسد، در سالهای آتی معماری غالب صنعت فناوری اطلاعات و ارتباطات باشد. علت بوجود آمدن این معماری، ایده ای بود که در ذهن تعدادی از معماران آن وجود داشت و آن نرم افزار به عنوان سرویس بود. در مدل نرم افزار به عنوان سرویس، شما نرم افزار خود را بگونه ای طراحی می کنید که قابل استفاده توسط سیستم های دیگر باشد یعنی دیگران می توانند برای استفاده از سرویس شما ثبت نام کنند و هر موقع که لازم داشتند از خدمات آن بهره ببرند، همانند حالتی که در مورد شبکه های تلویزیون کابلی وجود دارد. تا زمانی که شما به سرویس متصل هستید، می توانید هر لحظه که خواستید از سرویس استفاده کنید.
برای مدت های طولانی برنامه نویسان سعی می کردند تا، کدهای خود را بصورت 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 نیز نامیده میشود) تعریف شدهاند ارتباط برقرار مینمایند. ارتباط میان مصرفکنندگان و فراهمکنندگان یا سرویسها معمولا در محیطهای ناهمگن رخ میدهد، با دانش کم یا بدون هیچ دانشی در مورد فراهمکننده. پیامهای مبادله شده میان سرویسها را میتوان به عنوان اسناد تجاری مهم پردازش شده در یک سازمان نگریست.