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