
مزایای متعدد، دارای محدودیتهایی نظیر دشواری پیاده سازی و وابستگی به یک فروشنده خاص (DCOM , CORBA) بوده و به سادگی قابل انتشار روی اینترنت نیستند. با توجه به محدودیتهای موجود، نیاز به یک مدل محاسباتی است که بتواند با طراحی یکپارچه برنامه های توزیع شده، برای استفاده در اینترنت به کار گرفته شود. یک مدل محاسباتی توزیع شده مناسب، مدلی است که مستقل از چارچوب11و زبان پیاده سازی باشد. به علاوه استفاده از پروتکلها و استاندارد های آن، برای برنامهنویسان آسان بوده و امکان دسترسی به پروتکلهای طرف سرور و طرف مشتری وجود داشته باشد. بنابراین لزوم یک مدل محاسباتی توزیع شده مبتنی بر استاندارد های اینترنتی مطرح شد. [13]
با پیشرفت تکنولوژی و همگرا شدن وب با تبادل الکترونیکی داده و میان افزار های استانداردی نظیر CORBA , مدل محاسباتی جدیدی بر مبنای یک معماری سرویس گرا با اتصال سست، تحت عنوان وب سرویس به وجود آمده است.
وب سرویس استفاده از مدل محاسباتی سرویس گرا در منابع وب است، تا قابلیت اتصال سست را در پردازشهای توزیع شده تأمین نماید. [12] وب سرویس یک تکنولوژی میان افزار توزیع شده است که از پروتکل XML برای تبادل داده استفاده میکند.[12] تعاملات مستقیم ماشین به ماشین که تاکنون تصور میشد غیر عملی است، اکنون با استفاده از تکنولوژیهای پیشرفته نظیر XML , SOAP امکان پذیر است.
یکی از تفاوتهای اساسی بین تکنولوژیهای CORBA و وب سرویس این است که CORBA یک معماری مؤلفه ای شی گرا را فراهم میکند، اما وب سرویسها عمدتاً مبتنی بر پیغام هستند.
مطالعات بسیاری در زمینه کارایی وب سرویسها و مقایسه آن با سایر تکنولوژیهای توزیع شده، صورت پذیرفته است که بیانگر این است که کاربرد وب سرویس باعث کند شدن میشود و علت آن سربار ناشی از کدینگ و بازگشایی XML است [14].
علاوه بر این وب سرویسها فاقد یک تعریف دقیق هستند و سناریو های مورد استفاده برای وب سرویسها در مقایسه با تکنولوژیهای میان افزار خوش تعریفی نظیر CORBA , خیلی قابل فهم نیستند. با این وجود، این تکنولوژی به دلیل خصوصیاتی که دارد، به صورت بی سابقه ای فراگیر شده است. دلایل آنرا میتوان سهولت و سادگی ایجاد واسط کاربر، استفاده از HTTP برای انتقال، ایجاد دیوار آتش امن، پویایی بیشتر در برنامهها نسبت به سایر تکنولوژیها، استفاده از URL برای آدرس دهی به سرویسها و ایجاد تحمل پذیری بیشتر با استفاده از قابلیتهای پروتکل SOAP و غیره دانست. محاسبات سرویس گرا شامل مفاهیم، پروتکلها و تکنولوژیهای متعددی است. که در بر گیرنده موضوعاتی نظیر سیستمهای محاسباتی توزیع شده، معماری کامپیوتر و میان افزارها، محاسبات شبکه ای، مهندسی نرم افزار، امنیت و ارائه دانش است.
موضوعات اصلی محاسبات سرویس گرا عبارتند از : زیر ساخت سرویس، ترکیب سرویس، نظارت و مدیریت سرویس است.
در کل میتوان نتیجه گرفت که لایهها و محور های سرویس مناسب با فرایند های کسب و کار هستند.
2-3-2 معماری سرویس گرا :
شکل 2-6- حاکمیت معماری سرویس گرا و چرخه در بر گیرنده
معماری سرویس گرا مفهومی جدید نیست و از دهه 90 وجود دارد، ولی آنچه جدید است، توانایی اجرا و عینیت بخشیدن به آن است که به کمک ابزارها و پروتکلهای مربوطه میسر شده است . [1]
معماری سرویس گرا یک معماری به هم پیوسته نیست. بلکه منجر به یک معماری به هم پیوسته میشود. میتوان آن را یک شیوه جدید نامید. SOA یک رهیافت جدید است که منجر به تصمیمات به هم پیوسته کامل در زمان طراحی یک معماری نرم افزار به هم پیوسته میشود. [15]
ان توماس نیز معتقد است که معماری سرویس گرا را نمیتوان ساخت و ایجاد کرد، بلکه معماری سرویس گرا یک شیوه رفتاری است و لذا سازمان بایستی رفتار خود را برای استفاده موثر از این فناوری تغییر دهد.
2-3-3 تعریف :
معماری سرویس گرا از دیدگاه های مختلف قابل بررسی است، هر فرد یا سازمان بر اساس نیاز های خود تصویری از معماری سرویس گرا دارد.
کسب و کار : از نقطه نظر کسب و کار، معماری سرویس گرا12مجموعه ایست از سرویسهای کسب و کار مرکب برای رسیدن به یک طرح کسب و کار که سازمان میخواهد به مشتریان و ذینفعان خود ارائه دهد. [16]
معماری: از منظر معماری، SOA یک شیوه معماری است که سرویس گرایی را پشتیبانی میکند.
پیاده سازی: در سطح پیاده سازی SOA , از یک زیر ساخت استاندارد، مدل برنامه نویسی و تکنولوژیهایی نظیر وب سرویس استفاده میکند.
عملیات : از نقطه نظر عملیات، SOA شامل مجموعه ای از تعاملات بین تأمین کننده و مصرف کننده سرویس و تأمین کنندگان کیفیت سرویس و ارائه دهندگان متریکهای فناوری اطلاعات و کسب کار است.
در تعاریف متعددی که از معماری سرویس گرا ارائه شده است، عمدتاً از دو دیدگاه فنی و غیر فنی به آن توجه شده است. اما اینکه آیا معماری سرویس گرا یک موضوع تکنیکال است یا خیر، بیشتر به دیدگاه اشخاص و تفسیر آنها از مفاهیم اساسی SOA بستگی دارد مانند:
معماری سرویس گرا یک محصول نیست بلکه پلی است بین کسب و کار و فناوری به کمک مجموعه ای سرویسهای متکی بر فناوری که دارای قوانین، استانداردها و اصول طراحی مشخص هستند. [17]
چارچوبی برای یکپارچه سازی فرایند های کسب و کار و پشتیبانی آنها توسط فناوری اطلاعات با کمک مؤلفه های استاندارد و امن تحت عنوان سرویس که قابلیت استفاده مجدد و الحاق به یکدیگر جهت پوشش تغییرات حرفه را دارا میباشد. [18]
دو تعریف فوق تعاریف غیر تکنیکال معماری سرویس گرا را ارائه میدهند. تعاریف کاملاً به تعریف معماری سازمانی 13 نزدیک اند و تنها تفاوت آنها با معماری سازمانی در سرویسها است. سرویسها بخشی از معماری سرویس گرا هستند. اما پیاده سازی سرویسها معادل معماری سرویس گرا نیست.
تعاریف زیر نیز دید غیر فنی از معماری سرویس گرا مطرح کردهاند، اما نوع نگاه به SOA نزدیک به مفهوم حاکمیت است. تعریف دوم برگرفته از مفهوم حاکمیت فناوری اطلاعات است.
معماری سرویس گرا شاکله فرایندهای طراحی و مهندسی و ابزارهایی است که با استفاده از سرویسها و بهره گیری از خاصیت پیمانه ای بودن و قابلیت ترکیب آسان، زمینه تحقق اهداف کسب و کار را فراهم میکند. [19]
معماری سرویس گرا یک شیوه معماری است که به سرویسها به عنوان داراییهای فناوری اطلاعات توجه دارد. این سرویسها با فرایند های کسب و کار سطح بالا ترکیب میشوند و منجر به چابکی کسب و کار در مقابل تغییرات فناوری اطلاعات میگردد.
تعریف زیر بیشتر بر محصولات تمرکز دارد. اما نه محصولات فنی، سرویسها در این تعریف خیلی مهم نیستند، بلکه توانایی استخراج و کنترل سرویسها مهم است.
معماری سرویس گرا شامل سیاستها، تجارب و چارچوبهایی است که کارکرد های سیستمی را قادر میسازد که به صورت مجموعه ای از سرویسهای توزیع شده، تعریف شده و مورد استفاده در خواست کننده قرار گیرد. این سرویسها با تعریف یک واسط استاندارد از پیاده سازی مجزا شدهاند. [20]
در تعاریف زیر کاملاً به جنبه های تکنیکال پرداخته شده است و معماری سرویس گرا را یک نوع معماری فنی معرفی میکنند و بر تکنولوژی و نحوه پیاده سازی آن تاکید دارند. با توجه به اینکه از تکنولوژی وب سرویس استفاده میشود، بنابراین به نظر میرسد تفاوت در تفسیر مفاهیم اولیه است. [19]
– معماری سرویس گرا یک فرم از معماری فنی است که مبتنی بر اصول سرویس گرایی است. وقتی که این معماری از طریق تکنولوژی وب سرویس شکل میگیرد، SOA منجر به افزایش کارایی فرایند کسب و کار و فناوریهای حوزه کسب و کار میگردد.
– سبکی از معماری است برای ساخت نرم افزارهایی که از طریق سرویس در شبکه منتشر شدهاند. اتصال سست بین مؤلفه های نرم افزاری باعث قابلیت استفاده مجدد از آنها میشود و کلیه نرم افزار های آن بر اساس سرویسها ساخته میشوند. [73]
– معماری سرویس گرا یک شیوه از معماری است که برنامهها را با ترکیب سرویسهای قابل تعامل و اتصال سست ایجاد میکند. این سرویسها قابل تعامل بوده و به چارچوب زبان برنامه نویسی وابسته نیستند.[21]
– معماری سرویس گرا چارچوبی است که کارکرد های برنامهها را در قالب وب سرویسهایی قابل استفاده مجدد فراهم کرده و منتشر میکند.
با وجود تفاوت دیدگاهها در تعاریف فوق، همه آنها بر این اصل توافق دارند که معماری سرویس گرا باعث انعطاف پذیری سازمان میشود. همچنین بر اساس تعاریف ارائه شده میتوان استنباط کرد معماری سرویس گرا قابلیت تأثیر گذاری در همه سطوح فناوری را دارد. از بالاترین سطح معماری سازمان EA تا پیاده سازی سرویسها. علاوه بر تعاریفی که صاحب نظران و افراد سرشناس در زمینه معماری سرویس گرا ارائه نمودهاند، برخی از شرکتهای تجاری که مجری این نوع معماری بودهاند نیز تعاریفی را ارائه کردهاند. از جمله شرکت ORACLE و IBM.
معماری سرویس گرا یک شیوه معماری است که بر سرویسها به عنوان داراییهای فناوری اطلاعات تمرکز دارد. این سرویسها با فرایند های کسب و کار سطح بالا ترکیب میشوند و منجر به چابکی کسب و کار در مقابل تغییرات فناوری اطلاعات میگردند.
این تعریف ارتباط معماری سرویس گرا با کسب و کار سازمان (خصوصاً فرایندها) و تأثیر متقابل آنها را مطرح میکند. مفهوم معماری سرویس گرا در این دیدگاه به مفهوم معماری سازمانی نزدیک است.
2-3-4 مفاهیم اصلی معماری سرویس گرا:
مفاهیم اساسی فنی معماری سرویس گرا که قادر به تأمین ویژگیهای مورد انتظار این معماری است، عبارتند از :
سرویس
ایده معماری سرویس گرا، مجزا سازی جنبه های کسب و کاری یک مسئله است و این تجرد به شکل سرویس ظهور مییابد. [15]
هدف معماری سرویس گرا، ساختار دهی سیستمهای توزیع شده بزرگ بر مبنای تجرید و خلاصه سازی قواعد و توابع کسب و کاری است. تعاریف متعددی از سرویس ارائه شده است که تعدادی از آنها در زیر آورده شده است:
یک سرویس نمایشگر یک وظیفه کسب و کار تکرار پذیر است. سرویسها برای مخفی سازی توابع عملیاتی با فراهم کردن یک واسط خوش تعریف و مستقل در یک برنامه استفاده میشوند. سرویسها میتوانند به وسیله سایر سرویسها با برنامه های مشتری مورد استفاده قرار گیرند. [16]
– سرویس یک مؤلفه نرم افزاری با وظیفه و عملکرد مشخص است. که در بر گیرنده مفهوم سطح بالای کسب و کار است. [22]
– سرویس به معنای نیاز یک مصرف کننده به قابلیتها و امکاناتی است که توسط یک تأمین کننده سرویس فراهم میشود. [23]
– سرویس کاری است که به وسیله یک سرویس دهنده انجام میشود که ممکن است انجام یک درخواست کوچک روی داده مانند دریافت یا ذخیره اطلاعات باشد یا مربوط به انجام کاری پیچیده تر مانند چاپ یک تصویر باشد. [74]
– سرویس به معنای پیاده سازی یک کارکرد کسب و کار خوش تعریف است که میتواند در فرایندها با نرم افزار های مختلف مورد استفاده و فراخوانی قرار بگیرد. [73]
بر اساس این تعاریف هر سرویس مأمور انجام وظیفه یا کارکردی خاص است. بسته به دانه بندی سرویس , عملیات و توابع قابل انجام توسط سرویس متفاوت است. به عنوان مثالی از سرویس میتوان به سرویس محاسبه عوارض سالیانه اشاره کرد که شامل توابعی است که محاسبه عوارض نو سازی را برای یک ملک انجام میدهد. این سرویس خود از چند سرویس دیگر استفاده میکند. یکی از آنها سرویس محاسبه ارزش ملک است که اولین تابع از محاسبه عوارض نو سازی است.
2-3-5 اجزا اصلی یک معماری سرویس گرا :
در نمای کلی، معماری سرویس گرا شامل مؤلفه های زیر است :
1- تأمین کننده
2- مصرف کننده
3- مخزن سرویس14
هر جز میتواند به عنوان یکی از دو مؤلفه دیگر نیز عمل کند. برای مثال اگر یک تأمین کننده سرویس نیاز به در یافت اطلاعاتی داشته باشد که از سرویس دیگری فراهم شود، بنابراین تأمین کننده به عنوان مصرف کننده سرویس عمل خواهد کرد.
