منظور از برنامه های توزیع شده (Distributed Applications) چیست ؟
وب سرویس یک رابط برنامه نویسی مبتنی بر HTTP هست که از طریق یک نرم افزار در اختیار سایر نرم افزارها قرار میگیره؛ یعنی اون نرم افزار از طریق وب سرویسی که منتشر میکنه، به سایر نرم افزارها اعلام میکنه که چه خدماتی رو میتونه ارائه کنه، و چطور اون نرم افزارها می تونند از این خدمات بهره ببرند. پس وب سرویس ها راهی برای ارتباط بین نرم افزارها هستند.
به عنوان مثال، یک بانک سرویس پرداخت الکترونیکی ارائه میکنه. این سرویس رو میتونه به صورت وب سرویس منتشر کنه، تا نرم افزارهای دیگران (مثلا وب سایت ها، یا هر نوع نرم افزار دیگه)، بتونه از این طریق از این خدمات اون سایت در داخل خودشان استفاده کنند. به عنوان مثال در یک سایت هرگاه لازم هست مشتری خرید انجام بده، نرم افزار اون وب سایت میتونه اطلاعات مشتری و هزینه خرید رو از طریق وب سرویسی که بانک براش فراهم کرده، در اختیار نرم افزار بانک قرار بده، و نتیجه عملیات بانکی رو از طریق همان وب سرویس از بانک دریافت کنه.
وب سرویس ها وابسته به یک محیط توسعه نرم افزاری، یا یک زبان برنامه نویسی نیستند، و در تئوری هر وب سرویسی رو میشه با هر زبان برنامه نویسی استفاده کرد.
وقتی یک وب سرویس ایجاد می کنید، رابط برنامه نویسی مد نظر شما که باید توسط سایر نرم افزارها استفاده بشه، در قالب یک فایل XML با نام WSDL ذخیره میشه، و این WSDL آدرس سرویس، و خدماتی که سرویس ارائه میده، و نحوه استفاده از آنها را به سایر نرم افزارها معرفی میکنه. سایر نرم افزارها با استفاده از این داده ها می تونند درخواست هایی رو به سرویس شما بفرستند، و جواب دریافت کنند. درخواست ها و جواب ها در قالب پیام هایی با استاندارد SOAP یا JSON از طریق پروتکل HTTP ارسال و دریافت میشند.
بسیاری از برنامه های کاربردی و اختصاصی به دلایلی مختلف از بخش های مختلف و در بسیاری از مواقع مستقل از هم تشکیل شده اند، یعنی نیاز سازمان و شرکت استفاده کننده از نرم افزار باعث می شود که نرم افزار های مورد نیاز به این روش پیاده سازی شوند. این نیاز باعث شده است که این نحوه پیاده سازی برنامه ها بسیار مرسوم شده و نرم افزار های حرفه ای، حداقل یک بخشی از آن به صورت مستقل از هم پیاده سازی می شوند. این استقلال بخش ها به ما این امکان را می دهد که بتوانیم بخش های مختلف نرم افزار را ( که به صورت مستقل پیاده سازی شده اند ) روی سیستم عامل های مختلف توزیع کنیم، یعنی سیستم عامل های مختلف مسئول اجرا کردن بخش های مختلف نرم افزار می گردند. بنابراین بسیاری از محدودیت های سخت افزاری ، زمانی و ساختاری از بین خواهد رفت. لذا به این نوع نرم افزار ها، برنامه ها یا نرم افزار های توزیع شده اطلاق می شود.