همان طور که میدانیم فراخوانی و استفاده از Web Serviceها تنها از طریق کدهای Server Side امکان پذیر است، اما اگر بخواهیم یک برنامه آژاکسی Client Side بنویسیم و از Web Serviceها هم در کدهای جاوا اسکریپتی سمت کلاینت استفاده کنیم چه باید کرد؟ راه حل این مشکل در ASP.NET AJAX نهفته است. ASP.NET AJAX امکاناتی را ارائه میدهد که با کمک آنها میتوان یک Web Service را درست مثل توابع داخلی جاوا اسکریپت فراخوانی کرد. اقدامات مورد نیاز برای انجام این کار:
۱- تعریف کلاس وب سرویس (asmx) به طور خاص
۲- معرفی وب سرویس مورد نظر با استفاده از Script Manager
۳- فراخوانی غیر همزمان متودهای دلخواه وب سرویس از کد جاوا اسکریپت
ASP.NET AJAX خودش خروجی وب سرویس را به JSON سریالایز کرده، در سمت کلاینت deserialize کرده و نهایتاً در قالب objectهای جاوا اسکریپتی (با ساختار مشابه objectهای سمت سرور) به کلاینت تحویل میدهد بدون آن که استفاده کننده یا برنامهنویس بویی از جزییات ببرد.
دقت کنید که تا اینجای کار فرض بر این بوده است که وب سرویس مورد نظر در همان سروری قرار دارد که صفحات aspx ما هم قرار دارند. در صورت نیاز به وبسرویسها (و دیگر سرویسها) در وب سایتهای دیگر باید از راه حلهای دیگری مثل Bridge استفاده کرد.
منبع: فصل ۵ کتاب ASP.NET Ajax in Action (در این فصل غیر از Web Serviceها، روشها و ابزارهای دیگری نیز برای ارتباط Asynchronous با سرور گفته شده است)
مطالعه بیشتر:
۱- آشنایی با کتابخانه Microsoft Ajax Library
۲- جاوا اسکریپتی قویتر با Microsoft Ajax Library
۳- نمونه کدهای فصل پنج