bew140

به‎طور کلی در مدل امنیت به‎منزله یک سرویس، منطق امنیت به‎صورت بخشی از یک کاربرد یا بخشی از منطق یک سرویس نیست، بلکه به‎صورت مجزا و متمرکز در یک سرویس امنیتی پیاده سازی می‎شود. تمامی تبادلات به‎صورت داده، پیام، درخواست و... نخست تحت کنترل و نظارت این سرویس قرار می گیرد.
احراز هویت: 
احراز هویت در شبکه های رایانه‎ای، بدین معناست که یک سرویس دهنده بتواند تشخیص دهد فرد یا سرویسی که تقاضایی را روی آن سیستم دارد، مجاز است یا نه؟
کنترل دست‎یابی: 
کنترل دست‎یابی را می توان جلوگیری از استفاده غیرمجاز از منابع دانست. بدین معنا که چه کسی می تواند به منبع دسترسی داشته باشد، دست‎یابی تحت چه شرایطی می‎تواند انجام گیرد و کسانی که به منابع دست‎یابی دارند، چه کارهایی می توانند انجام دهند.
تمامیت و محرمانگی پیام:
تمامیت پیام، تضمین می کند پیام یا داده های دریافتی، به‎طور دقیق همان چیزی است که از جانب نهاد مجاز ارسال شده است و فاقد هرگونه تغییر، درج، حذف یا تکرار است. محرمانگی را می توان به‎معنای حفاظت اطلاعات از افشاگری غیر مجاز دانست. به‎گفته‎ای اطلاعات فقط باید برای افراد مجاز در دسترس باشد که معمولاً در دو سطح پیام و نقل و انتقالات به‎کار برده می شود.
در دسترس بودن: 
در دسترس بودن یک سرویس یا درخواست، نشان‎‎دهنده این است که آن سرویس قادر است پاسخ به یک سرویس را به‎موقع فراهم کند و اطمینان می دهد که سرویس‎ها، زمانی که درخواست در بسیاری از محیط‎های SOA کلیدی است، در دسترس هستند.
ممیزی: 
ممیزی به معنای بررسی و حسابرسی داده ها، فرآیندها، تراکنشهای انجام شده در سیستم‎های اطلاعاتی است که به منظور برآورده شدن ملزومات امنیتی انجام می گیرد.
مدیریت امنیت: 
مدیریت امنیت، مدیریت تمامی مراحل و راهکارهای امنیتی از ایجاد و تأمین امنیت، محافظت و نگهداری، کنترل و بازرسی امنیت و... را شامل می‎شود.
مدیریت سیاست: 
اهدافی که به‎وسیله کسب‎وکار ایجاد شده و به حرکت درآمده اند، اکنون باید به‎وسیله زیرساختار ها اجرا شوند. مدیریت سیاست یک چارچوبی را برای اجرا کردن سیاست فراهم می کند.
مدیریت سیاست امنیتی: 
مدیریت سیاست‎های امنیتی با معرفی سیاست‎های کسب‎وکاری و با معرفی سیاست‎های خاص سرویس، مانند امنیت، شاخص‎های عملکرد، سیاست‎های مطمئن و... آغاز می شود. این سیاست‎ها به‎وسیله زیرساخت‎ها برای امنیت دسترسی به اطلاعات، فراهم‎کردن دسترسی، نگهداری، توانایی ممیزی و مانند آنها اداره می شود.

فصل دوم
ادبیات تحقیق
2- ادبيات تحقيق
2-1- پيشينه تحقيق
اخذ گواهینامه ISMS از سال ۸۷ به صورت جدی در دستور کار بسیاری از سازمان‌ها و شرکت‌ها و اکثر دستگاههای دولتی قرار گرفته است. مطالعات انجام شده توسط مراجع بین‌المللی نشان می‌دهد بیش از ۷۰% مشکلات امنیتی به دلایل غیر فنی بوده و عمدتا ناشی از مسائل مدیریتی است. لذا پیاده سازی استاندارد ISMS موجب ارتقا و بهبود مستمر امنیت اطلاعات در سازمانها می گردد. تاکنون تحقیقات خاص و عمیقی در رابطه با همگونی و همسازگاری سیستم های مدیریت امنیت با سرویسگرا در ایران صورت نگرفته و حتی مقالات و کتب در این رابطه و سازگاری پیاده سازی این دو سیستم و معماری باهم صحبتی به میان نیامده است.
در زمینه امنیت اطلاعات در معماری سرویسگرا، پژوهشهای متعددی انجام شده است، از آن دسته می‎توان به دسترسی چارچوب کنترل امنیت هوشمند و معماری سرویسگرا[1]، مشکلات سرویس‎دهی وب در طراحی معماری سرویسگرا [2]، معماری سرویسگرا برای امنیت سیستم شبکه همراه [3]، امنیت و کاربرد آن در برنامه‎های معماری سرویسگرا [4] اشاره کرد؛ اما اکثر این مطالعات با یک رویکرد فنی و هر کدام تنها به یک جنبه خاص امنیت این معماری پرداخته‎اند و کمابیش هیچکدام با یک دید کلی و یک رویکرد سیستمی به بررسی این موضوع نپرداخته‎اند.
الیمنی و همکاران در پژوهشی با عنوان «دسترسی چارچوب کنترل امنیت هوشمند و معماری سرویسگرا»، بیان کردند یکی از مشکلات بزرگ گسترش معماری سیستم‎گرا چالش‎های امنیتی موجود در آن است؛ چراکه مسئولیت امنیت SOA به هر دو گروه ارائه‎دهندگان و مصرف‎کنندگان، وابسته است. آنان معتقدند در سالهای اخیر، تلاش‎های زیادی برای رفع این نواقص انجام شده است که از آن دسته، دسترسی به استاندارهای امنیتی شبکه وب که شامل WS-Security و WS-Policy، بوده است. در این پژوهش یک چارچوب هوشمند امنیتی پیشنهاد شده است که شامل دو عامل مهم در زمینه دست‎یابی به امنیت است: 1. احراز هویت و امنیت خدمات (NSS) و 2. سرویس مختار. در این پژوهش از سه نوع مختلف داده‎کاوی استفاده شده است: 1. قوانین انجمن که به پیش‎بینی حمله‎ها کمک می‎کند؛ 2. مکعب پردازش تحلیلی برخط برای مجوز استفاده و 3. الگوریتم کاوش استخراجی که دسترسی به کنترل نمایندگی حقوق و سیستم خودکار را فراهم می‎کند[1].
یو و تائو (2012) در پژوهشی با عنوان «مشکلات سرویس‎دهی وب در طراحی معماری سرویسگرا» بیان کرده‎اند که با توسعه جهانی استفاده از فناوری SOA، مسائل امنیتی خدمات تارنما (وب‎سایت) که بر اساس پلت‎فرم ناهمگون شکل گرفته‎اند، به‎طور فزاینده‎ای برجسته و مهم خواهد شد. در این پژوهش دو راهکار امنیتی برای خدمات سرویس‎دهی ارائه شده است. [2]
روسادو و همکاران (2011) در مطالعه‎ای با موضوع معماری سرویسگرا برای امنیت سیستم شبکه همراه بیان کردند که امنیت در سیستم‎های شبکه همراه، بسیار ضروری است؛ در حالی‎که تأمین امنیت این سیستم‎ها به‎دلیل کمبود منابع در این دستگاهها، سخت و پیچیده است. در این پژوهش برای حفظ امنیت این سیستم‎ها، از مدلی بر اساس طراحی معماری سرویسگرا استفاده شده است. این مدل تا اندازه‎ای محدودیتهای دسترسی به امنیت شبکههای تلفن همراه را برآورده می‎کند؛ اما نتایج پژوهش نشان میدهد که این مدل به‎طور کامل راهگشا نبوده است [3].
زو و همکاران در سال 2010 در پژوهشی با عنوان «امنیت و کاربرد در برنامههای معماری سرویسگرا؛ موضوعات تجارتی»، معتقدند با پیشرفت کاربرد محاسبات و طراحی معماری سرویسگرا و گسترش استفاده از این خدمات، از برنامههای کاربردی زیادی با توسعه مؤلفههای نرمافزاری و شبکههای استاندارد، استفاده خواهد شد. این برنامهها به لحاظ هزینه و پتانسیل تولید نسبی بالاتر، به‎وسیله طراحی معماری سرویسگرا تعدیل خواهند شد و تنها مشکل موجود، تأمین امنیت کاربری این برنامه‎ها و شبکهها است. در این پژوهش از یک الگوریتم ژنتیک برای یافتن مجموعهای بهینه از خدماتی که از پروسههای تجاری این خدمات پشتیبانی کند، استفاده شده است. آنها معتقدند که کاربرد این روش در آینده گسترده‎تر خواهد شد.[4]
2-2-معماری سرویس گرا
در این بخش قصد داریم به معرفی معماری سرویس گرا بپردازیم. برای این منظور ابتدا مفاهیمی مانند سرویس و معماری سرویسگرا را تعریف می کنیم. سپس به سایر مفاهیم این معماری و اصول و مشخصههای آن خواهیم پرداخت. مزایای استفاده از این معماری در ادامه بیان خواهد شد و در پایان به معرفی مبحث سرویسهای وب و استانداردها و پروتکلهای آن خواهیم پرداخت.
2-2-1- سرویس چیست؟
در دنیای اطراف ما، مفهوم سرویس یا خدمت بسیار معمول و متعارف و قدمت آن به اندازه تاریخ تمدن بشر است. هر شخص که کار معینی را انجام می دهد، سرویسی ارائه میدهد. هر گروه از افراد که با هم کار مشخصی را انجام می دهند نیز سرویسی را ارائه می دهند. یک سازمان که وظایفی را در ارتباط با اهداف خود دنبال می کند به نوبه خود سرویس ارائه می دهد. هرگاه وظیفه یا عملکردی که ارائه می شود خوش تعریف بوده و بتواند نسبتاً از سایر وظایف مستقل باشد می تواند بطور مشخص در رده سرویس ها قرار بگیرد. گاهی نیاز به آن است که گروهی از سرویس دهندگان برای ارائه یک سرویس بزرگتر با هم همکاری کنند. برای مثال یک شرکت پخش برای ارائه سرویس های خود، از سرویس های ارائه شده توسط فروشنده، حمل کننده، هماهنگ کننده و غیره استفاده می کند.[5]
در مسائل کامپیوتری تجاری نیز عبارت سرویس به مدت بسیار زیاد و به روشهای مختلفی مطرح بوده است. در ابتدای قرن جدید عبارت سرویس های وب بسیار رایج شد، اگرچه، به عناوین مختلفی برای طرح مسائل متفاوت به کار برده می شد. مثلاً برخی از آن برای اشاره به خدمات برنامه های کاربردی تحت وب که به کاربران انسانی ارائه می شد استفاده کردند. برخی دیگر آن را به معنای پیمانه های برنامه ای که از طریق اینترنت و با پروتکلهای XML برای برنامه های دیگر قابل دسترسی بودند به کار گرفتند[6]
از آنجا که مفهوم سرویس در صنعت IT به روشهای بسیار متفاوتی به کار برده شده، لازم است آن را به دقت تعریف کنیم. با این وجود قبل از ارائه یک تعریف رسمی و مبتنی بر تکنولوژی ، به تعریف کلی تری خواهیم پرداخت تا درک بهتری از سرویس ایجاد شود . ضمناً برای سادگی و یکنواختی برای مفهوم متقاضی سرویس، مصرف کننده سرویس، مشتری یا درخواست کننده، عبارت سرویس گیرنده، و برای مفهوم ارائه دهنده سرویس یا فراهم کننده سرویس، از عبارت سرویس دهنده استفاده خواهیم کرد و فرض را بر آن می گذاریم که عبارات در هریک از این دو دسته با یکدیگر هم معنی هستند.
در فرهنگ لغات و بستر در ذیل لغت سرویس آمده است: "کار مفیدی که کالای قابل لمسی تولید نمی کنند."و "امکاناتی که برخی از نیازهای عمومی را پاسخ می دهد."
آنچه در این مبحث از سرویس مورد نظر است، معنای خود را به نحوی از این تعاریف می گیرد و به معنی فعالیت با معنایی است که یک سرویس دهنده (احتمالاً بر اساس درخواست یک سرویس گیرنده) انجام می دهد. سرویس دهنده و سرویس گیرنده ممکن است افرادی در یک سازمان یا قطعه برنامه های نرم افزاری باشند و سرویس ممکن است دستی یا مکانیزه ، نرم افزاری یا غیر آن باشد.در اصطلاح فنی و نرم افزاری می توان گفت بطور کلی، سرویس، یک پیمانه قابل دسترس از راه دور و مستقل است. برنامه های کاربردی این سرویسها را در دسترس کاربران انسانی قرار می دهند. با این تفسیر، مشاهده می کنیم که مفهوم سرویس در هر دو حوزه کسب و کار و فناوری مطرح است و کاربرد دارد.
تعاریف متعددی برای مفهوم سرویس ارائه شده است از جمله:
"سرویس، کاری است که توسط یک سرویس دهنده ارائه و انجام می شود و ممکن است انجام یک درخواست کوچک مانند دریافت یا ذخیره اطلاعات و یا مربوط به انجام کاری پیچیده تر مانند چاپ یک تصویر باشد[7]"
"از دیدگاه کاری، سرویسها، داراییهای IT هستند که به فعالیتهای کاری یا عملکردهای کاری قابل بازشناسی در دنیای واقعی مرتبط بوده و می توانند با توجه به خط مشی های سرویس مورد دسترسی قرار گیرند."
از دیدگاه فنی، سرویسها داراییهای درشت دانه و قابل استفاده مجدد IT هستند که دارای واسطهای خوش تعریفی (قراردادهای سرویس) هستند که واسطهای قابل دسترس از خارج سرویس را ، از پیاده سازی فنی سرویس مجزا می کنند[8]"
"سرویس تحقق یک عملکرد کاری مستقل است. از دیدگاه فنی، سرویس توصیفی است از یک یا چند عملیات که از (چندین) پیام برای تبادل داده ها میان یک سرویس دهنده و یک سرویس گیرنده استفاده می کند. اثر فراخوانی سرویس آن است که سرویس گیرنده اطلاعاتی به دست می آورد و یا حالت مولفه یا سیستم سرویس دهنده را تغییر می دهد[9]"
"سرویس عملکردی خوش تعریف است که از زمینه یا حالت سرویسهای دیگر مستقل است[10]"
"سرویس، یک مولفه از یک برنامه کاربردی است که روی سکویی، که از طریق شبکه قابل دسترس است، مستقر شده و توسط یک سرویس دهنده ارائه می شود. واسطهای سرویس جهت فراخوانده شدن توسط سرویس گیرنده یا تعامل با آن، با استفاده از یک"توصیف سرویس" توصیف می شوند[11]"
"سرویس، یک نمایش منطقی است از یک عملکرد کاری تکرار شونده، که دارای نتیجه است(مانند بررسی اعتبار مشتری ، ارائه داده های وضع هوا، تلفیق گزارشهاو...)، مستقل است، ممکن است ترکیب سرویسهای دیگری باشد و برای مصرف کنندگان یک "جعبه سیاه" است[12]"
بر اساس این تعاریف گزاره های زیر در مورد سرویس برقرار است:
الف- یک عملکرد (وظیفه مندی) ارائه می کند که ممکن است کاری یا فنی باشد.
ب- قابل استفاده مجدد و از سایر سرویسها مستقل است.
پ - دارای توصیف، واسط با قرارداد خوش تعریف است و جزئیات داخلی آن از دید سرویس گیرندگان مخفی است.
ت- دارای یک یا چند عملیات است و ارتباط سرویسها توسط تبادل پیام میان این عملیات صورت می گیرد.
2-2-2- انواع سرویس
سرویسها از لحاظ سطح دانه بندی به سه دسته قابل تقسیم هستند:
الف- سرویسهای مولفه ای
یک سرویس مولفه ای یک عمل ساده اتمی روی یک موجودیت ساده است که برای انجام وظیفه خود به سرویس دیگری وابسته نیست. مثلاً دسترسی به یک جدول در پایگاه داده توسط این نوع سرویس انجام می شودو عملیات درونی این سرویس مثل بازیابی ، اضافه کردن ، به روز کردن یا حذف می توانند عبارات معادل SQL را از پایگاه داده فراخوانی کنند. هیچ فراخوانی درونی از سرویس های دیگر در یک سرویس مولفه ای وجود ندارد.
ب- سرویسهای مرکب
این سرویسها نیز دارای طبیعت اتمی هستند اما فراخوانی سرویسهای مولفه ای را به صورت یک سرویس درشت دانه تر یا یک فرآیند در سطح کسب و کار، همنواسازی می کنند. مثلاً ارسال یک گزارش هزینه ممکن است سرویسهای مولفه ای را برای افزودن یک رکورد به جدولی مانند ExpensReport افزودن چندین رکورد به جدولی مثل ExpensReportI-- ارسال یک نامه الکترونیکی برای یک کارمند و ایجاد یک وظیفه و قرار دادن آن در لیست وظایف مدیر یک کارمند فراخوانی کند. با این وجود یک سرویس مرکب از دید سرویس گیرنده بی حالت است . و بر خلاف سرویسهای محاوره ای تراکنشهای دارای عمر طولانی را مدیریت نمی کند.
پ- سرویسهای محاوره ای
این سرویسها(که سرویسهای جریان کاری نیز نام دارند) حالت را نگهداری و مانند یک ماشین حالت متناهی عمل می کنند . یک عملیات معین روی این سرویسها ممکن است محاوره را آغاز کند و یک قلم اطلاعاتی را در حالت معینی قرار دهد. عملیات بعدی محاوره ای را ادامه می دهد و حالت آن قلم را تغییر می دهد. محاوره با عملیاتی پایان می یابد که حالت آن قلم را به یک حالت پایانی تغییر می دهد.[13]
شکل 2-1 سطوح دانه بندی این نوع سرویسها را نسبت به یکدیگر و برنامه ها و نیز جایگاه آنها را نسبت به منابع سازمان و کاربران نشان می دهد. همانطور که مشاهده می شود، درجه دانه بندی ، از سطوح پایین به سطوح بالا(یعنی از سرویسهای مولفه ای به سرویسهای جریان کاری (محاوره ای) و برنامه های کاربردی) افزایش و درجه قابلیت استفاده مجدد کاهش می یابد. بعلاوه مشاهده می شود که سرویسهای مولفه ای ، بر خلاف سرویسهای محاوره ای و مرکب در معرض دسترسی سایر سیستمها قرار نمی گیرند. در بالاترین سطح، کاربران از برنامه های کاربردی استفاده می کنند، عملکرد برنامه ها بر اساس فراخوانی سرویسهای محاوره ای است. سرویسهای محاوره ای نیز به سرویسهای مرکب مرتبط هستند که خود، سرویسهای مولفه ای را فراخوانی می کنند. سرویسهای مولفه ای نیز در انجام فعالیتهای خود از منابع سازمانی استفاده می کنند.

شکل 2-1 سطوح دانه بندی انوع سرویسها
2-2-3- معماری سرویس گرا چیست؟
مفهوم سرویس گرایی در زمینه های متفاوت و برای مقاصد مختلفی مورد استفاده قرار گرفته است. اما آنچه در طول حیات آن ثابت مانده، آن است که این مفهوم، روشی مبتنی بر مفهوم تجزیه را ارائه می دهد. بنابراین سرویس گرایی یک روش فنی محض نیست. شرکتها هر یک به تنهایی سرویس گرا هستند. زیرا هر یک ، سرویس(های) مجزایی را فراهم می کنند که میتواند توسط مشتریان مختلفی مورد بهره برداری قرار گیرد. در مجموع این شرکتها با هم یک جامعه کاری تشکیل می دهند و بسیار منطقی است اگر انواع خدمات و سرویسها توسط فقط یک شرکت ارائه نشود ؛ بلکه بهتر آن است که با تجزیه جامعه کاری به بخشهای سرویس دهنده تخصصی منفرد، به محیطی دست یابیم که در آن سرویس دهنده ها توزیع شده باشند. حتی در یک مدل توزیع شده ایجاد وابستگیهای عمیق، موجب ممانعت از ارائه پتانسیل موجود در کسب و کارهای منفرد خواهد شد. اگرچه مایلیم که سرویس دهندگان با یکدیگر تعامل داشته و از سرویسهای یکدیگر بهره بگیرند، اما از سوی دیگر نیز مایلیم از مدلی که در آن، سرویس دهندگان اتصالات تنگاتنگی با هم دارند و این اتصالات موجب وابستگیهای شدید و محدود کننده می شوند اجتناب کنیم. اگر به کسب و کارها این قدرت را بدهیم که هر یک بتوانند سرویسهای خود را کنترل و اداره کنند، به آنها این قدرت را داه ایم که نسبتاً مستقل از یکدیگر رشد و تکامل یابند. اما با این وجود باید مراقب بود تا همگی آنها بتوانند بر اساس اصولی به یکدیگر متصل شوند(مثل استفاده از ارز مشترک میان شرکتها در هر شرکت یا استفاده از یک زبان خاص بعنوان زبان اصلی شرکت و غیره) این هماهنگیها موجب استاندارد شدن جنبه های کلیدی هر کسب و کار می شود.
سرویس گرایی در ترکیب با"معماری" معماری سرویس گرا (SOA) را معرفی می کند. این معماری مدلی را ارائه می دهد که درآن منطق کل سیستم به بخشهای منطقی مجزا و کوچکتر شکسته می شوند. این واحدهای کوچکتر جمعاً بخش بزرگتری از منطق را ارائه می کنند و می توانند توزیع شده باشند. SOA مشوق واحدهای منفرد منطق است تا بتوانند به مجموعه ای از اصول طراحی دست یابد.[14]
تعریف رسمی واحدی برای معماری سرویس گرا موجود نیست. علاوه بر محققین بسیاری از سازمانها به اقتضای نوع کاربرد و بهره برداری خود از این مفهوم برای تعریف آن اقدامی کرده اند. برای SOA تعاریف متفاوتی مانند آنچه در ادامه آمده ذکر شده است:
تعریف McGovern: " SOA یک سبک معماری است که بطور رسمی سرویسها را – که عملکردی هستند که یک سیستم می تواند ارائه کند- از مصرف کنندگان سرویس- که سیستمهایی هستند که به آن عملکرد نیاز دارند- جدا می کند. این جداسازی توسط مکانیزمی به نام قرارداد سرویس ، به همراه مکانیزمی برای سرویس دهندگان جهت انتشار قراردادها، و برای سرویس گیرندگان جهت یافتن قرارداد سرویسهایی که مورد نیاز آنها است ، انجام می شود. به جای ایجاد اتصال میان سرویس گیرنده و سرویس در قالب مسائل فنی فراخوانی سرویس، SOA قرارداد را از مولفه یا پیاده سازی آن قرارداد مجزا می کند. این جداسازی یک معماری ایجاد می کند که در آن وابستگی میان سرویس گیرنده و پیمانه های نرم افزاری که کار را انجام می دهند تا حد ممکن ضعیف است و بنابراین پیکربندی آنها آسان است[15] "
تعریف OASIS : بر اساس مدل مرجع SOA که توسط OASIS ارائه شده، " SOA پارادیمی است برای سازماندهی و بهره گیری از قابلیتهای توزیع شده که ممکن است تحت کنترل دامنه های مالکیتی مختلفی باشند. SOA روش یکنواختی را برای ارائه، کشف، تعامل و استفاده از قابلیتها برای تولید آثار مطلوب که با پیش شرطها وانتظارات سازگار باشد، فراهم می کند[16]" مدل مرجع OASIS تعریف خود از SOA را بر مبنای مفهوم "نیازها و قابلیتها" بنا می نهد که در آن SOA مکانیزمی را برای مطابقت نیازهای سرویس گیرندگان و قابلیتهای فراهم شده توسط سرویس دهندگان ارائه می کند[16].
تعریف OMG : " SOA یک سبک معماری برای جامعه ای از فراهم کنندگان و مصرف کنندگان سرویسها جهت رسیدن به ارزشی دو جانبه است که :
به شرکت کنندگان در جامعه اجازه می دهد تا با حداقل وابستگی به یکدیگر یا به تکنولوژی با هم کار کنند.
قراردادهایی را که سازمانها ، افراد و تکنولوژیها برای شرکت در جامعه باید به آنها وفادار باشند مشخص کند.
امکان محقق شدن فرآیندها و ارزش کاری را توسط جامعه فراهم کند.
امکان استفاده از فناوریهای متنوعی را جهت تسهیل تعاملات در جامعه فراهم کند.[17]"
تعریف گروه باز: " SOA یک سبک معماری است که از سرویس گرایی پشتیبانی می کند."
سرویس گرایی طرز فکری است در قالب سرویسها، توسعه مبتنی بر سرویس و نتیجه سرویسها. یک سرویس یک نمایش منطقی است از یک فعالیت کاری تکرار شونده که دارای نتیجه است (مانند بررسی اعتبار مشتری، ارائه داده های وضع هوا، تلفیق گزارشها و...) مستقل است، ممکن است ترکیب سرویسهای دیگری باشد. برای سرویس گیرندگان یک جعبه سیاه است. یک سبک معماری ترکیبی است از ویژگیهای متمایزی که در آن، معماری اجرا یا بیان می شود.
سبک معماری ASO دارای ویژگیهای متمایز زیر است:
بر مبنای طراحی سرویسها است که بیانگر فعالیتهای کاری واقعی تشکیل دهنده فرآیندهای کاری سازمانی یا بین سازمانی هستند.
نمایش سرویسها می تواند برای ارائه متن (یعنی فرآیند، هدف، قاعده و خط مشی کار، واسطهای سرویسها و مولفه های سرویسها) به کار رود.
نیازمندیهای یکتایی را نسبت به زیر ساختها ایجاد می کند. (پیشنهاد شده است که پیاده سازیها از استانداردهای باز برای تحقق تعامل پذیری و شفافیت مکانی استفاده کنند.)
پیاده سازیها مختص محیط اند یعنی بر اساس متن، فعال یا محدود می شوند و باید در همان متن توصیف شوند.
نیاز به کنترل قوی بر نمایش و پیاده سازی و آزمایش سرویس وجود دارد.[12]"
تعریف شرکت IBM : "معماری سرویس گرا چارچوبی برای برنامه های کاربردی است که کاربردهای روزمره کسب و کار را می گیرد و آنها را به عملکردها و فرآیندهای مختلف کاری- که به آنها سرویس اطلاق می شود- می شکند. SOA امکان ساخت، استقرار و یکپارچه سازی این سرویسها را بطور مستقل از برنامه های کاربردی و سکوی اجرا فراهم می کند.[18]"
با توجه به تعاریف فوق مشاهده می شود که معماری سرویس گرا یک سبک معماری فناوری اطلاعات است که بر مفهوم سرویس بعنوان واحد نمایش منطق کاری و سازه بلوک اصلی در توسعه نرم افزارها متکی است. این سبک معماری دارای اصولی است که آن را از روشهایی مانند توسعه مبتنی بر مولفه و توسعه شی گرا متمایز و رسیدن آن را به اهدافی مانند اتصال سست و قابلیت استفاده مجدد بالا تضمین می کند.
2-2-4- اجزاء معماری سرویس گرا
معماری سرویس گرا متشکل از چهار مفهوم تجریدی front-end برنامه، سرویس، مخزن سرویس و گذرگاه سرویس است که در شکل 2-2 مشاهده می شوند.
سرویسها عملکردهای کاری را جهت استفاده front- end برنامه و سایر سرویسها فراهم می کنند. یک سرویس خود دارای یک پیاده سازی است که شامل داده و منطق کاری می شود، بعلاوه قرارداد سرویس که عملکرد کاری موارد استفاده و محدودیتهای درخواست کننده را مشخص می کند، و نهایتاً واسط سرویس که بطور فیزیکی آن عملکرد را در معرض استفاده سرویس گیرندگان قرار می دهد. مخزن سرویس نیز قراردادهای سرویسها را برای تک تک سرویسها ذخیره می کند و گذرگاه سرویس ، ارتباط front- end برنامه و سرویسها را فراهم می کند.

شکل 2-2 اجزاء معماری سرویسگرا
الف- front-end برنامه
Front- end برنامه جزء فعال SOA است که فعالیت سیستمها را آغاز و کنترل می کند. انواع مختلفی از front-end ها وجود دارد، واضح ترین مثال، برنامه های دارای واسط گرافیکی کاربر مانند برنامه های تحت وب یا rich client ها هستند که مستقیماً با کاربران نهایی تعامل دارند. مثال دیگر، برنامه های دسته ای (batch) یا فرآیندهای با عمر طولانی هستند که متناوباً یا در اثر نتیجه رویدادهای خاص، عملکردی را فراخوانی می کنند. بهر حال کاملاً امکان پذیر است که یک front-end بیشتر مسئولیت خود در مورد یک فرایند کاری را به یک یا چند سرویس تفویض کند و نهایتاً همیشه front-end است که یک فرآیند کاری را آغاز و نتایج آن را دریافت می کند.
ب- سرویسها
به بیان بسیار ساده، سرویسها قطعه نرم افزارهایی هستند که عملکرد مشخصی در یک سطح کاری بالا را محصور می کنند. سرویسها دارای قرارداد، واسط و پیاده سازی هستند(شکل 2-3)

شکل 2-3 اجزای سرویس
قرارداد سرویس :
قرارداد، مشخصه سازی غیر رسمی هدف، کارکرد، محدودیتها و نحوه استفاده از سرویس است. شکل این مشخصه سازی بسته به نوع سرویس می تواند متفاوت باشد . یکی از عناصر قرارداد سرویس ، تعریف رسمی واسط بر اساس زبانهایی مانند IDL و WSDL است، مزیت این تعریف رسمی تجرید بیشتر و استقلال بیشتر از تکنولوژی ، زبانهای برنامه نویسی ، میان افزارها، پروتکلهای شبکه و محیط اجراست. با این وجود لازم است به این نکته توجه شود که قرارداد سرویس ، اطلاعاتی بیشتر از مشخصه سازی رسمی را ارائه می دهد. قرارداد می تواند معنای عملکرد و پارامترهای سرویس را که فراتر از مشخصه سازی IDL و WSDL هستند نشان دهد.
واسط :
عملکرد سرویس با استفاده از واسط در اختیار متقاضیان سرویس قرار می گیرد.
پیاده سازی:
پیاده سازی سرویس بطور فیزیکی منطق کاری و داده های مناسب مورد نیاز را فراهم می کند. و قرارداد سرویس را محقق می سازد. پیاده سازی سرویس شامل یک یا چند فراورده مانند برنامه ها، داده های پیکربندی و غیره است.
منطق کاری:
منطق کاری که توسط سرویس محصور می شود بخشی از پیاده سازی است که با استفاده از واسط سرویس در دسترس قرار می گیرد.
داده ها:
یک سرویس می تواند دارای داده ها نیز باشد بویژه اگر متمرکز بر داده باشد.
ج- مخزن سرویس
مخزن سرویس امکاناتی برای کشف سرویسها و بدست آوردن کلیه اطلاعات لازم برای استفاده از سرویس فراهم می کند. بویژه اگر این سرویسها می بایست از خارج از حوزه زمانی و کارکردی پروژه ای که آنها را ایجاد کرده است کشف شوند. اگرچه بیشتر اطلاعات مورد نیاز بخشی از قرارداد سرویس است، مخزن سرویس می تواند اطلاعات بیشتری را مثل محل فیزیکی ، سرویس دهنده ، افرادی که می توان با آنها تماس گرفت ، هزینه استفاده، محدودیتهای فنی، موارد امنیتی و سطوح دسترسی به سرویس ارائه دهد.
د- گذرگاه سرویس
گذرگاه سرویس، همه سرویسها و front- end ها را به یکدیگر متصل می کند. فرضاً اگر یک front- end نیاز به فراخوانی عملکرد یک سرویس پایه داشته باشد، گذرگاه سرویس این کار را انجام می دهد، گذرگاه سرویس لزوماً از یک تکنولوژی بهره نمی گیرد بلکه بر پایه محصولات و مفاهیم متعددی ایجاد می شود[6].
2-2-5- مفاهیم مهم سرویس گرایی
در این بخش به ارائه مفاهیم مهم در ارتباط با ساختار سرویس و کلیات مطالب مربوط به آن می پردازیم.
2-2-5-1- چگونه سرویسها منطق را محصور می کنند؟
برای حفظ استقلال ، سرویسها منطق متن خاصی را محصور می کنند. آنچه در سرویس محصور می شود ممکن است کوچک یا بزرگ باشد. بنابراین اندازه و حوزه منطقی که توسط سرویس محصور می تواند متنوع باشد. برای مثال آنچه توسط راه حلهای اتوماسیون ارائه می شود، معمولاً پیاده سازی یک فرآیند عمده کاری است. این فرآیند از منطقی تشکیل شده است که با رعایت ترتیب و توالی یا توازی خاص عمل مورد نظر را انجام می دهد. این منطق به مجموعه ای از مراحل شکسته می شود که با توجه به قواعد با ترتیب از پیش تعریف شده ای اجرا می شوند، همانطور که در شکل 2-4 مشاهده می شود که در ساختن راه حل متشکل از سرویسها هر سرویس می تواند وظیفه ای را که در هر مرحله اجرا می شود یا یک زیر فرایند را محصور کند. سرویس حتی می تواند کل فرایندی را که توسط سرویسهای دیگر محصور شده است، محصور کند.

شکل 2-4 محصور سازی منطق توسیط سرویس
برای استفاده از عملیات منطقی، هر سرویس نیاز خواهد داشت با سرویسهای دیگر به نوعی ارتباط برقرار کند.
2-2-5-2- چگونه سرویسها از وجود یکدیگر مطلع می شوند؟
در SOA سرویسها می توانند توسط سرویسهای دیگر، یا برنامه های دیگر مورد استفاده قرار گیرند. حال، استفاده کننده از سرویس هر که باشد، ارتباط میان سرویسها در صورتی روی خواهد داد که سرویسها از وجود یکدیگر مطلع باشند. این امر با بهره گیری از توصیف سرویس ممکن است.
توصیف سرویس در پایه ای ترین حالت خود، نام سرویس و داده هایی را که در حین ارتباط مورد نیازند یا بدست می آیند مشخص می کند. روشی که در آن سرویسها از توصیف سرویس استفاده می کنند، موجب می شود که ارتباط در طبقه اتصال سست قرار گیرد. برای تعامل سرویسها و معنی دار بودن آن، آنها باید اطلاعاتی را مبادله کنند. بنابراین یک چارچوب ارتباطی که دارای قابلیت ایجاد ارتباط دارای اتصال سست باشد مورد نیاز است. یک چارچوب برای این منظور پیام رسانی است.
2-2-5-3- چگونه سرویسها با هم ارتباط برقرار می کنند؟
پس از آنکه سرویسی پیامی را می فرستد، دیگر کنترل آن را در اختیار ندارد . به همین دلیل است که سرویسها به پیامها نیاز دارند تا بعنوان واحد مستقل ارتباطی باقی بمانند. این به معنای آن است که پیامها نیز مانند سرویسها باید خود مختار باشند. به هین دلیل میزانی از هوشمندی را دارا هستند تا بتوانند در بخشهای مختلف پردازش خود را مدیریت کنند.
2-2-5-4- چگونه سرویسها طراحی می شوند؟
اصول سرویس گرایی مسائل مرتبط با موارد زیر را تحت پوشش قرار می دهد. (این اصول در ادامه معرفی خواهند شد.)
الف- چگونه سرویسها طراحی می شوند؟
ب- ارتباط بین سرویسها چگونه باید تعریف شود؟(شامل تعیین چگونگی تبادل پیامها یا همان الگوی تبادل پیام - MEP )
پ- چگونه باید پیامها را طراحی کرد؟
ت- چگونه توصیف سرویسها طراحی می شوند؟
2-2-5-5- توصیفات سرویسها
هر سرویسی که می خواهد نقش دریافت کننده پیام را داشته باشد باید توصیف سرویس را به همراه داشته باشد. هر توصیف پیام نقطه اتصالی از فراهم کننده سرویس را در اختیار قرار می دهد. و دارای تعریفی رسمی از واسط این نقطه اتصال (تا درخواست کنندگان بتوانند از ساختار پیامی که می بایست برای دریافت خدمات به سرویس دهنده ارسال کنند، آگاه شوند) و همچنین محل سرویس را (که برای استفاده کنندگان شفاف خواهد بود) معین می کنند. پس توصیف سرویس خود دارای دو بخش است:
الف- توصیف تجریدی: خصوصیات واسط را بیان می کند بدون آنکه به فناوری اشاره کند. از جمله این خصوصیات می توان به عملیات ، نوع درگاه و پیام اشاره کرد.
ب- توصیف غیر تجریدی: نحوه اتصال به سرویس را تعیین می کند. مانند نوع اتصال و درگاه .
2-2-5-6- فراداده ها و قرارداد سرویس
تا بحال نحوه توصیف سرویس ، و ایجاد و استفاده از واسط سرویس را بررسی کردیم. در سرویسهای وب این توصیفات در قالب WSDL تولید می شوند. اما خود این تعاریف می بایست بر اساس ساختاری تنظیم شوند که فراداده توصیف را معین می کند. در سرویسهای وب این کار را می توان با استفاده از شماهای XSD انجام داد. هدف از این کار رسمی کردن ساختار پیامهای وارد شونده به سرویس و خارج شونده از آن است.یک مستند مکمل دیگر، مستند خط مشی است قواعد، اولویتها و جزئیات پردازشی را فراتر از مستندات توصیف و شمای ساختاری آن ارائه می کند. پس تا بحال سه مستند مهم را برای سرویس بررسی کردیم:
توصیف
شما
خط مشی
این سه مستند می توانند در طبقه فراداده ها قرار گیرند، زیرا هریک ، اطلاعاتی درباره سرویس ارائه می دهند. مستندات توصیف سرویس را می توان در مجموع قرار داد سرویس نامید که مجموعه ای از شرایط اند که می بایست توسط یک درخواست کننده سرویس ایجاد یا پذیرفته شده باشند.
همچنین یک قرارداد می تواند به مستندات دیگری ارجاع داشته باشد که محتوای آنها در توصیف سرویس قرار نمی گیرد. از جمله این مستندات قانونی، می توان به توافقنامه سطح سرویس و توافقنامه کیفیت سرویس اشاره کرد.
پس قرارداد سرویس دارای موارد زیر است:
توصیف سرویس
توصیف تجریدی
توصیف غیر تجریدی
شما
خط مشی
مستندات قانونی
2-2-5-7- تبلیغ توصیف و کشف سرویس
یک نیاز اساسی برای دسترسی به یک سرویس همانطور که گفته شد، توصیف سرویس است. با افزایش تعداد سرویسها در سازمان، مکانیزمهایی برای تبلیغ و کشف توصیف سرویس مورد نیاز است. مثلاً فهرستهای راهنما و محلهای ثبت مرکزی باید وجود داشته باشد تا افراد بتوانند:
الف- آخرین نسخه توصیفات سرویسهای موجود را بیابند.
ب- سرویسهای جدید را که با معیارهایی منطبق اند کشف کنند.
هر سرویس می تواند یک یا چند رکورد در محل ثبت داشته باشد که در آن توصیف سرویس قرار می گیرد. در سرویسهای وب، تبلیغ و کشف سرویسها از طریق UDDI انجام می شود. همچنین توصیف سرویس در سرویسهای وب با استفاده از WSDL و پیام رسانی با SOAP انجام می شود. شکل 2-5 این مطلب را نشان می دهد.

شکل 2-5 تبلیغ، کشف و توصیف سرویسها در وب
2-2-5-8- محل ثبت
محل ثبت کاتالوگی از سرویس دهندگان در دسترس، مکانیزمی برای بررسی آنچه سرویس دهنده می تواند فراهم کند، و نیز امکان ارائه نقطه اتصالی که سرویس گیرنده بتواند به آن متصل شود را در اختیار سرویس گیرندگان قرار می دهد . محل ثبت می تواند توسط سازمان، یا منابع مستقل یا سایر کسب و کارهایی که سرویسهایی برای ارائه دارند ، ارائه و نگهداری شود. همه محلهای ثبت باید API هایی را فراهم کنند تا به سرویس ها اجازه ثبت شدن داده و به سرویس گیرندگان اجازه دهد تا سرویس دهندگان را شناسایی کرده و به آنها متصل شوند.
2-2-5-9- همنوا سازی و همخوانی
همنواسازی (orchestration) ، توصیف ترتیب فعالیتهایی است که یک فرایند کاری را می سازد و شامل مدیریت تراکنشها بین سرویسهای منفرد و دستگیری خطاها و نیز توصیف کلیت فرآیند است. در صورت نبود همنواسازی نیاز به هماهنگی های دستی وجود خواهد داشت.
بنابراین همنواسازی پایه گذار پروتکل کاری است که بطور رسمی فرآیند کاری را تعریف می کند. و از آنجا که روشی برای متمرکز کردن و کنترل حجم بالایی از منطق های داخل برنامه و بین برنامه های مختلف با استفاده از یک مدل سرویس استاندارد است، قلب SOA خوانده می شود. [19]
در سطوح بالاتر و در ارتباطات بین سازمانها مفهوم همخوانی (choreography) مطرح می شود که در آن بحث هماهنگی چند همنواسازی با یکدیگر مورد توجه است و فعالیت پیچیده ای است که از ترکیب سرویسها و چند الگوی تبادل پیام تشکیل می شود.
2-2-6- اصول و مشخصه های معماری سرویس گرا
می توان گفت اساسی ترین عنصر تشکیل دهنده معماری سرویس گرا، سرویس است. نحوه انتخاب و مشخصه های سرویس آنقدر اهمیت دارد که مسائل مربوط به آن بعنوان سرویس گرایی مطرح می شوند. اصولی که در زیر بیان خواهند شد، توسط Erl و McGovern و سایرین در کتابهایشان [19 و 15] معرفی شده اند و مورد توافق جوامع نرم افزاری قرار دارند. بطور کلی SOA دارای مشخصه ها و اصول زیر است:
2-2-6-1- سرویسها دارای واسط (قرارداد) و خط مشی های خوش تعریف اند.
همه سرویس ها قراردادی را منتشر می کنند. این قرارداد توافق میان سرویس گیرنده و سرویس را محصور می کند. قرارداد همان چیزی است که مصرف کننده هنگامی که سرویس را جستجو می کند بدقت بررسی می کند. قراردادها شامل همه اطلاعات ضروری برای یک برنامه کاربردی است تا دارای قابلیت دسترسی به سرویس باشد. استفاده از اطلاعات درون قرارداد برای دسترسی و استفاده از سرویس "اتصال" نام دارد. قراردادها در SOA گسترشی بر ایده واسطها هستند. یک قرارداد در SOA موارد زیر را تعیین می کند.
وظیفه مندی ارائه شده
ورودیهای لازم و خروجی مورد انتظار
پیش شرطها
پس شرطها
دستگیری خطا
تضمین کیفیت سرویس(QOS) و توافقات سطح سرویس
ایده آل آن است که یک سرویس ، خط مشی های مربوط به قابلیت اطمینان ، در دسترس بودن ، امنیت و استثناها را تعریف کند.