معماری Service Oriented چیست؟
نرم افزار های توزیع شده ( که در مقاله قبل اشاره شد ) در ساده ترین حالت روی یک سیستم عامل یعنی روی یک ماشین ( کامپیوتر ) اجرا می شوند، یا بهتر است اینگونه بگوییم اگر نیازی به نوشتن برنامه توزیع شده نباشد ، و برنامه به روش معمولی پیاده سازی شود، روی یک ماشین به راحتی و به بهترین حالت اجرا خواهد شد. حال یک قدم جلوتر می رویم و میخواهیم از یک معماری چند لایه که معماری Service Oriented است برای پیاده سازی همان نرم افزار قبلی استفاده کنیم، همانطور که می دانید این لایه های نرم افزار هر کدام وظایف خاص خود را دارند، مثلا در بدیهی ترین حالت یکی از لایه ها تنها وظیفه ارتباط با بانک اطلاعاتی ( جایی که دیتا در آن ذخیره شده و از همان جا بازیابی می شود) را دارد و از کار لایه های دیگر اطلاعی ندارد. اگر معماری چند لایه به نحوی پیاده سازی گردد که کل آن داخل همان ماشین اجرا شود، بخش های مختلف نرم افزار به راحتی با هم ارتباط برقرار خواهند کرد و اطلاعات مورد نیاز یکدیگر را با ساختار های مختلف به همدیگر ارسال خواهد کرد ( مانند خروجی های مختلف یک تابع برای استفاده در بخش های مختلف برنامه ).
حال میخواهیم تغییراتی در این نحوه ارتباط بخش ها و لایه های برنامه ایجاد کنیم که بتوانیم هر بخش ( یا چند بخش ) را روی یک ماشین مجزا ( سیستم عامل ) قرار دهیم، حال هر کدام از این لایه ها که در ماشین های مختلف قرار دارند باید به لایه دیگر خدمتی ( منظور همان Service است ) ارایه کنند. و ارتباط بین لایه های مختلف برنامه تنها با استفاده از این سرویس ها خواهد بود، بنابراین ما به معماری پیاده سازی نرم افزاری که بخش های مختلف آن به هم سرویس های مشخص ارائه می کنند ، معماری سرویس گرا ( SOA = Service Oriented Architecture ) اطلاق می کنیم.
حال به یک موضوع برخورد می کنیم، چه پلتفرم های می توانند از این سرویس ها استفاده کنند، آیا تنها خود ما قادر خواهیم بود که از این سرویس هایی که خودمان نوشتیم استفاده کنیم ، یا دیگران نیز میتوانند از آن استفاده کنند. قطعا برنامه نویس های دیگر نیز باید بتوانند از آن استفاده کنند، و چون هر برنامه نویس با زبان برنامه نویسی خاصی، برنامه های خود را تولید میکند، این معماری و ساختار باید قابلیت آن را داشته باشد که به تمامی این زبان ها این خدمت را ارایه کند، به این دلیل باید یک زبان مشترک بین همه زبان های برنامه نویسی وجود داشته باشد که به ایجاد ارتباط بین ما و آنها کمک کند، به عنوان نمونه XML نیاز ما را برای این کار مرتفع خواهد کرد، یعنی XML ساختار مشترک بین زبان های مختلف برنامه نویسی است که همه زبان ها قابلیت درک آن را دارند . پس سرویس های مختلف نوشته شده ما باید با زبان XML با هم صحبت کنند. کلامی که با زبان XML بیان می شود را هر زبان برنامه نویسی درک خواهد کرد.