AJAX ِیک نوع برنامه نوِیسِی است که در سال 2005 توسط گوگل به طور عمومِی اِیجاد شد.باAJAX مِی توانِید Web Application هاِی بهتر , سرِیعتر و بسِیارکاربر پسند اِیجاد کنِید.
Ajax راهی برای تقسیم کردن صفحات وب به قسمتهای قابل Update است به طوریکه Update کردن بخشی از صفحه کل صفحه را Update نکند.در واقع Ajax پاسخی به مشکلات Web Application ها در چند سال گذشته است.
کافی است یکبار یک سایت طراحی کنید تا بفهمید که Postback های اضافی و بی مورد و load شدن های وحشتناک آن هم به خاطر تغییر، مثلا تاریخ در یک تقویم چه دردسری را برای طراح و کاربر ایجاد میکند.وقتی صحبت از انداختن بار CPU از سرور به کامپیوتر کاربر میشود, یعنی از java script استفاده شده است.
در واقع سیستم استفاده از script که به دلیل ناامنی به کناری گذاشته شده بود با تلفیق جدید دوباره احیا شد.AJAX مبتنِی برجاوا اسکرِیپت و HTTP Request است.
معرفِی AJAX :
آجاکس ِیک زبان برنامه نوِیسِی جدِید نِیست بلکه ِیک تکنِیک جهت اِیجاد Web application هاِی بهتر و سرِیعتر و بسِیار تعاملِی است.
با آجاکس , جاوا اسکرِیپت مِی تواند مستقِیما با سرور ارتباط برقرار کند, و از شِی جاوا اسکرِیپتِی XMLHttpRequest استفاده کند.
با اِین شِی , جاوا اسکرِیپت مِی تواند داده را با ِیک Web server , بدون لود مجدد صفحه , مبادله کند.
آجاکس از انتقال ناهمزمان داده ها(درخواستهاِی HTTP) در بین browser و web server استفاده مِی کندو اجازه مِی دهد صفحات وب به جاِی درخواست کل صفحه, اطلاعات کمِی را از سرور درخواست کنند.
تکنِیک آجاکس, application هاِی اِینترنت را کوچکتر و سرِیعترو بسِیار کاربرپسند مِی کند.
آجاکس ِیک تکنولوژِی browser وابسته به نرم افزار web server است و مبنِی بر استانداردهاِی وب است.در ادامه لیستی از این استانداردها را می بینید:
• JavaScript
• XML
• HTML
• CSS
استانداردهاِی وبِی که آجاکس مبنِی بر آنها است , به خوبِی تعرِیف شده اند و توسط browser هاِی زِیادِی پشتِیبانِی مِی شوند.
Application هاِی آجاکس و browser و platform بهم وابسته اند.
Web application ها مزاِیاِی بیشتری نسبت به application هاِی دِیگر دارند.
آنها مِی توانندبه داده ی بیشترِی دستِ یابندونصب و پشتِیبانِی آنها بسِیار آسان است وجهت توسعه راحترند.به هر حال , application هاِی اِینترنتِی همانند desktop application هاِی سنتِی همِیشه غنِی و کاربرپسند نِیستند.با آجاکس , internet application ها مِی توانند غنِی تر و کاربرپسندتر ایجاد شوند.
Httprequest آجاکس (ajax httprequest)
در کد گذارِی سنتِی جاوا اسکرِیپت, اگر اطلاعاتِی از یک دِیتابِیس یا یک فاِیل در سرور مِی خواستِیدویاجهت ارسال اطلاعات کاربر به یک سرور، مِی بایست یک فرم HTML درست مِی کردِیدو داده ها را به سرور مِی فرستادِیدِPOST)) یا از آن مِی گرفتِید(GET).
کاربر جهت درِیافت ِیا ارسال اطلاعات باِید روِی دکمه ی “Submit” کلِیک مِی کرد, منتظر پاسخگوِیِی سرور مِی ماند, سپس یک صفحه ی جدِید با نتِیجه لود مِی شد.سرور در هر بار که کاربر ورودِی را ارائه کند,ِیک صفحه ِی جدِید برمِی گرداند, وب application هاِی سنتِی خِیلِی کند اجرا و کمتر کاربرپسند هستند .
با آجاکس , جاوا اسکرِیپت در مِیان شِی JavaScriptXMlHttpRequestمستقِیما با سرور در ارتباط است .
با ِیک درخواست HTTP , صفحه ِی وب مِی تواند ِیک درخواست به سرور درست کند, و پاسخِی از ِیک وب سرور,بدون لود مجدد صفحه , درِیافت کند.
کاربر در همان صفحه مِی ماند, و به درخواستهاِی اسکرِیپتِی صفحات توجهِی ندارد.
مثالِی از AJAX
براِی درک چگونگِی کار آجاکس , بِیاِیِید ِیک Ajax application کوچک اِیجاد کنِیم.
ابتدا، ِیک فرم HTML ساده با دو متن اِیجاد مِی کنِیم : username وtime .
فِیلد username با کاربر پر مِیشود و فِیلد time با استفاده از آجاکس پر مِی شود.
فاِیل HTML را testajax.htm بنامِید .
قطعه کد لازم در زِیر نشان داده شده است.
توجه کنِید که اِین فرم HTML دکمه ِی submit ندارد.
فاِیل HTML را testajax.htm بنامِید .
توجه کنِید که اِین فرم HTML دکمه ِی submit ندارد.
بخش بعدِی در مورد keystone هاِی آجاکس توضِیحِی مِی دهد.
پشتِیبانِی Browser از آجاکس Keystone هاِی آجاکس , شِی XMLHttpRequest است.
Browserهاِی مخــتلف , ازمــــتدهاِی مختلفِی جهت اِیجاد شِی XMLHttpRequest استفاده مِی کنند.
Internet Explorer از ِیک شِی ActiveX استفــــاده مِی کند, در حالِی که browser هاِی دِیـــگر از شِی توکار JavaScript فراخوانده شده در XMLHttpRequest استفاده مِی کنند.
براِی اِیجــاد اِین شِــی , و تبادل با browser هاِی مختلف , از عبارت “try …catch” استفاده مِی کنِــیم.
بـــِیاِیِید فاِیلtestAjax.htm را با با جاوا اسکرِیپتِی که شِی XMLHttpRequest را اِیجاد مِیکند, به روز کنِیم: دراِین مثال ابتدا ِیک متغِیر xmlHttp جهت نگه داشتن ِیک شِی XMLHttpRequest اِیجاد مِی کنِیم.
سپس سعِی مِی کند با دستور () xmlHttp=new XMLHttpRequestِیک شِی اِیجاد کند.اِین براِی browser هاِی Fierfox,Opera و Safari است.
اگر آن ممکن نبود, براِی Internet Explore 6.0 سعِی مِی کند با دستور xmlHttp=new ActiveXObject(“Msxml2.XMLHTTP”) ِیک شِی اِیجادکند، و اگر آنهم ممکن نبود، براِی Internet Explorer 5.5 سعِی مِی کند با دستور xmlHttp=new ActiveXObject(“Microsoft.XMlHTTP”) ِیک شِی اِیجاد کند.
اگر هِیچ کدام از اِین سه متد کار نکند , کاربر ِیک browser بسِیار قدِیمِی دارد و ِیک اخطار مبنِی براِینکه browser اش آجاکس را پشتِیبانِی نمِی کند, مِی بِیند.
توجه: کد وِیژه ِی browser بالا طولانِی ونسبتا پِیچِیده است.
اما شما مِی توانِید هر زمان که خواستِید ِیک شِی XMLHttpRequest اِیجاد کنِید , آن را کپِی کنِید.
شِی XMLHttpRequest با استفاده از شِی XMLHttpRequest ,برنامه نویس مِی تواند ِیک صفحه داراِی داده از سرور را بعد از لود صفحه , به روز کند.آجاکس به طور عمومِی در سال 2005 توسط Google sugestایجاد شد.
Google Suggest از شِی XMLHttpRequest براِی اِیجاد ِیک رابط وب پوِیا , استفاده مِی کند.زمانِی که مطلبِی را جهت جستجو در google تاِیپ مِیکنِید، جاوا اسکرِیپت،متن شما را به ِیک سرور ارسال مِی کند و سرور لِیست پِیشنهادهاِیش را بر مِی گرداند.
مرورگرهاِی 5.0IE Safari 1.2, , 8 opera , Mozila 1.0/Firefox و Netscape 7 , شِی XMLHttpRequest را پشتِیباتِی مِی کند.
قبل از فرستادن داده ها به سرور , مِی باِیست سه خصوصِیت مهم شِی XMLHttpRequest را بدانِیم.
خصوصِیت onreadystatechange بعد از ِیک تقاضا به سرور , نِیازمند تابعِی هستِیم که بتواند داده ای که توسط سرور برگردانده مِی شود را درِیافت کند.خصوصِیت onreadystatechange , تابعِی را که پاسخ ِیک سرور را پردازش مِی کند, ذخِیره مِی کند.
کدِی که در زِیر نوشته شده است ِیک تابع خالِی تعرِیف مِی کند و خصوصِیت onreadystatechange را در ِیک زمان تنظِیم مِی کند: خصوصِیت readyState خصوصِیت readyState وضعِیتهاِی پاسخ سرور را نگه مِی دارد.
هر بار که readyState تغِیِیر مِی کند, تابع onreadystatechange اجرا خواهد شد.
در زِیر مقدار هاِی مجاز خصوصِیت readystate آورده شده است: براِی آزمودن اِینکه آِیا پاسخ کامل است(به اِین معنا که مِی توانِیم داده هاِیمان را بگِیرِیم)، باِید ِیک عبارت if به تابع onreadychange بِیفزاِیِیم.
خصوصِیت responseText داده ِی برگشتِی از سرور با خصوصِیتresponseText قابل بازِیابِی است.
در کد زِیر , ما مقدار فِیلد “time” را مساوِی با responseText تنظِیم کرده اِیم: بخش بعدِی نشان مِی دهد که چگونه بعضِی از داده ها را ازسرور درخواست کنِیم.
ارسال ِیک درخواست به سرور جهت بدرقه ِی ِیک درخواست به سرور, از متدهاِی open() و send() استفاده مِی کنِیم.
متد open() سه آرگومان مِی پذِیرد.
آرگومان اول براِی تعِیِین متد(GET ِیا POST) جهت ارسال درخواست استفاده شود.
آرگومان دوم URL اسکرِیپت سمت سرور را مشخص مِی کند.آرگومان سوم مشخص مِی کند که درخواست باِید به طور ناهمزمان کنترل(handled) شود ِیا نه.متد send() , درخواست را به سرور همراهِی و بدرقه مِی کند .با فرض اِینکه فاِیل HTML وASP در ِیک مسِیر هستند, کد به صورت زِیر است: اکنون باِید در مورد زمان اجرا ِی تابع آجاکس تصمِیم گِیرِی کنِیم.
براِی مثال هنگامِی که کاربر در فِیلد username متنِی را تاِیپ مِی کند , اجازه دهِیم تابع در"پشت صحنه " اجرا شود.مانند زِیر: فاِیل testAjax به روز شده با قطعه کد با لا به صورت زِیر است: در بخش بعدِی AJAX application را با اسکرِیپت"time.asp" کامل مِی کنِیم.
اسکرِیپت سمت سرور ASP اکنون قصد دارِیم اسکرِیپتِی اِیجاد کنِیم که زمان جارِی سِیستم را نماِیش دهد.
خصوصِیت responceText (که در بخشهاِی قبلِی توضِیح داده شد)، داده ِی بازگشتِی از سرور را ذخِیره مِی کند .
در اِینجا مِی خواهِیم زمان جارِی را برگردانِیم.کد نوشته شده در time.asp به صورت زِیر است: توجه: با استفاده خصوصِیت Expire مدت زمان cache ِیک صفحه قبل از منقضِی شدن آن درِیک browser را تنظِیم مِی کند.اگر کاربر صفحه ِی مشابهِی را قبل از زمان انقضا بر گرداند، نسخه ِی cache شده نشان داده مِی شود.
براِی اِینکه صفحه هرگز cache نشود، باِید Response.Expire=-1 باشد.
اجراِی AJAX Application با تاِیپ متنِی در textbox مربوط بهName وسپس کلِیک در داخل text box مربوط به time نتِیجه را خواهِید دِید.
Text box مربوط به time بدون لود دوباره ِی صفحه، زمان سرور را از فاِیل time.asp مِی گِیرد.
مثالهاِی دِیگر آجاکس دِیدِیم که براِی اِیجاد چندِین application تعاملِی مِی توان از آجاکس ا استفاده نمود .در مثالهاِی آجاکسِی که در زِیر آمده است به توضِیح چگونگِی ارتباط ِیک صفحه ِی وب با ِیک وب سرور online مِی پردازِیم.
مثال 2: AJAX Database از آجاکس جهت اِیجاد ارتباطات تعاملِی و محاوره اِی با ِیک دِیتابِیس نِیزمِی توان استفاده نمود.در مثال زِیرقصد دارِیم نشان دهِیم چگونه ِیک صفحه ِی web اطلاعات را ازِیک دِیتابِیس با استفاده از تکنولوژِی آجاکس واکشِی (fetch)مِی کند.در اِین مثال با کلِیک روِی dropdown list اطلاعات مشترِی لِیست مِی شود.
توضِیح مثال: مثال بالا شامل ِیک فرم HTML ساده وِیک لِینک به ِیک فاِیل JavaScript است : همان طور که مِی بِینِید اِین ِیک کد ساده HTML است که ِیک drop down list با نام "customers" دارد.
پاراگراف پاِیِین فرم ِیک تگ div با نام "txtHint" دارد.در اِین مثال،از divهمچون مکانِی براِی نگهدارِی اطلاعات بازِیابِی شده ازِیک web server استفاده مِی شود.
هنگامِی که کاربر داده اِی را انتخاب مِی کند،تابعِی بانام "showCustomer()" فراخوانِی مِی شود.روِیداد”onchange” ،راه اندازِی براِی اجراِی اِین تابع است.به عبارت دِیگر : هر بار که کاربر مقدار باکس drop down list را تغِیِیر مِی دهد, تابع “showCustomer” فرا خوانِی مِی شود.
JavaScript آجاکس در زِیر کد جاوا اسکرِیپت نشان داده شده است.اِین کد در فاِیل "selectcustomer.js" ذخِیره شده است.
Server Page صفحه ِی سرورِی که توسط جاوا اسکرِیپت فراخوانِی شده است، ِیک فاِیل ASP به نام "getcustomer.aspx" است.
اِین کد به زبان C# نوشته شده است و نتِیجه را مانند ِیک جدول HTML بر مِی گرداند.
مثال 4: AJAX XML آجاکس مِی تواند ارتباط تعاملِی و محاوره اِی با ِیک فاِیل XML داشته باشد.در مثال زِیرقصد دارِیم نشان دهِیم چگونه ِیک صفحه ِی web مِی تواند اطلاعات را از ِیک فاِیل XML با استفاده از تکنولوژِی آجاکس واکشِی (fetch)کند.
توضِیح مثال: مثال بالا شامل ِیک فرم HTML وِیک لِینک به ِیک فاِیل JavaScript است.
همانطور که مِی بِینِید اِین ِیک فرم HTML با ِیک drop dpwn list به نام"cds" است .
پاراگراف پاِیِین فرم شامل ِیک تگ div به نام "txtHint" است.
در اِین مثال, از divهمچون مکانِی براِی نگهدارِی اطلاعات بازِیابِی شده از ِیک web server استفاده مِی شود.
وقتِی کاربر داده اِی را انتخاب مِی کند, تابعِی با نام "showCD" فرا خوانِی مِی شود.
روِیداد "onchange" راه اندازِی براِی اجراِی اِین تابع است.به عبارت دِیگر: هر بار که که کاربر مقدار باکس drop down list را تغِیِیر دهد، تابع showCD فراخوانِی مِی شود.
JavaScript آجاکس در زِیر کد جاوا اسکرِیپت نشان داده شده است .
اِین کد در فاِیل "select.js" ذخِیره شده است: Server Page صفحه ِی سرورِی که توسط چاوا اسکرِیپت فراخوانِی مِیشود, ِیک فاِیل ASP به نام "getcd.aspx" است.
بدون استفاده از تکنولوژِی آجاکس, اِین فاِیل ِیک فاِیل XML را اجرا مِی کرد .اما با بکارگِیرِی اِین تکنولوژِی به جاِی اجراِی فاِیل XML ، یک query را اجرا مِی کند ونتِیجه را به صورت HTML بر مِی گرداند.
اِین کد به زبان C# نوشته شده است: مثال 4: AJAX ResponseXML همانطور که responseText , ِیک پاسخHTTP رااز نوعstring برمِی گرداند, responseXML پاسخ را از نوع XML بر مِی گرداند .
خصوصِیت ResponseXML ِیک شِی XML document برمِی گرداند.قصد دارِیم در اِین مثال نشان دهِیم که چگونه ِیک web page ،اطلاعات را از ِیک دِیتابِیس با استفاده از تکنولوژِی آجاکس واکشِی مِی کند.اِین بار داده ِی انتخاب شده از دِیتابِیس به ِیک XMl document تبدِیل مِی شود و مِی توانِیم از DOM براِی استخراج مقدار جهت نشان دادن استفاده کنِیم.
مثال4: توضِیح مثال: مثال بالا شامل ِیک فرم HTML است که چندِین عنصر(تگ) جهت نگهدارِی داده و ِیک لِیِیک جاوا اسکرِیپت است.
اِین فرم HTML ِیک Drop Down Box به نام "customers" دارد.
هنگامِی که کاربر ِیک مشترِی را از drop down boxانتخاب مِی کند, تابعِی به نام "showCustomer()" اجرا مِی شود.روِیداد"onchange" باعث راه اندازِی اجراِی اِین تابع مِی شود.
به عبارت دِیگر: هر بار که کاربر مقدار داخلdrop down box را تغِیِیر دهد, اِین تابع فراخوانِی مِی شود.
آجاکسJavaScript در زِیر کد جاوا اسکرِیپت نشان داده شده است .اِین کد در فاِیل "selectcustomer_xml.js"ذخِیره شده است.
توابع showCustomer() و GetXmlHttpObject() درست مانند توابع در مثالهاِی قبلِی است.
تابع statechange() که قبلا توضِیح داده شده است، اِین بار نتاِیج را مانند، ِیک XML document (با responseXML) بر مِی گردانِیم ،واز Dom براِی استخراج مقدارِی که مِی خواهِیم نشان دهِیم, استفاده مِی کنِیم.
Server Page صفحه ِی سرورِی که توسط جاوا اسکرِیپت فراخوانِی شد , ِیک فاِیل ASP با نام"getcustomer_xml.aspx" است.
کد زِیر به زبان C# نوشته شده است.
اِین کد به جاِی اجراِی ِیک دِیتابِیس، ِیک SQL queryرا اجرا مِی کندو نتِیجه را مانند ِیک XML documentبر مِی گرداند.
به خط دوم در کد ASP بالا (response.contenttype=”text/xml” )توجه کنِید.
خصوصِیت ContentType نوع متد HTTP را براِی شِی response تنظِیم مِی کند.مقدار پِیش فرض براِی اِین پراپرتِی "text/html"است.
اما ما مِی خواهِیم مقدارش اِین بار XML باشد.
سپس ِیک داده ر انتخاب مِی کنِیم ، وِیک XML document با داده مِی سازِیم.
با تلفیق جاوا اسکریپت ، XML و ASP.NET یک سری کنترل های موجود در ASP.NET را بسط داده و بخشی از کار آن کنترل را با استفاده از جاوا اسکریپت در سیستم کاربر انجام میدهد.
مقایسه ی معماری Asp.net AJAX Extensions و Asp.net 2 معماری Asp.net AJAX Extensions : 1- کنترلهای server 2- اتصال کننده ی سرویسهای کاربردی 3- ارتباطات ناهمزمان معماری Asp.net 2 : 1- Page Framework و کنترلهای سرور 2- سرویسهای کاربردی Server Controls : کنترلهای سرور را به دو دسته تقسیم می شوند: Script Managent : که شامل کنترلهای ScriptManagerو ScriptManagerProxy می شود.
Partial-Page Rendering(تفسیر قسمتی از صفحه) :که شامل کنترلهای UpdatePanel و UpdateProgressوTimer می شود.
حال به توضیح کامل هر کدام از این کنترلها می پردازیم: 1- ScriptManager : 1- نقطه ی شروعی برای صفحات Asp.net AJAX است.
2- فایلهای JavaScript رادر Client دانلود می کند.
3- مارا قادر می سازد تا برای تعبیر و به روز رسانی قسمتی از صفحه از کنترل UpdatePanel استفاده کنیم.
4- دسترسی به سرویس های وب را از طریق پروکسی های سمت Client فراهم می سازد.
5- مدیریت زمان انجام Callback وهچنین مدیریت خطاها را بر عهده دارد.
6- متدهای ثبتی برای Scripts فراهم می کند.
7- حیطه وموضع Asp.net Ajax را پشتیبانی وحمایت می کند.
نکته: هر صفحه فقط وفقط یک نمونه از ScriptManager نیاز دارد.
شمای ScriptManager: Service References - 1 : 2- ScriptManagerProxy : "Proxy" برای کنترلهای ScriptManager در master pages اعلان می شود.همچنین اجازه می دهد content pages (صفحات content) اسکریپت و مرجع های سرویس را بشناسند ودر آنها ظاهر شوند.
3 _ Update Panel : 1- از Trigger های تعریف شده پشتیبانی می کند: به طور پیش فرض ، postback تمام کنترلها در یک UpdateControl به callback های غیر همگام تبدیل می شوند.trigger ها حیطه ودامنه ی postback->callback را منقبض یا منبسط می کنند.
2- در تمام حالات به درستی کار می کند.
شمای UpdatePanel: راه اندازها( (Triggers : *راه انداز غیر همگام postback (AsyncPostBackTrigger): 1- تبدیل postback ها به callback های ناهمزمان.2- هنگامی که کنترلها بیرون UpdatePanel هستند و post back و رویدادهای اتفاق می افتد,از triggerبرای به روز رسانی استفاده می شود .
3-اگر ChildrenAsTriggers="false" , می تواند در کنترلهای داخل UpdatePanel که callback بیشتری نسبت به postback دارند, استفاده شود.
*راه انداز PostBack ((PostbackTrigger :1- اجازه ی postback به کنترلهای داخل Updatepanel می دهد .2- به طور نمونه اجازه postback به برخی کنترلها وقتی ChildrenAsTrigger="true" باشد, میدهد.
مثالی از Trigger : 4-Timer : آمیختن و ترکیب کنترلهای UpdatePanel و Timer باعث پیاده سازی به روز رسانی دوره ای می شود.
رویدادهای کنترل Timer مانند Triggerها استفاده می شوند: 5-UpdateProgress: این کنترل بهمراه کنترلUpdatePanel استفاده می شودو وظایفش به شرح زیر است: 1-مشخص کننده ی این است که یک Update غیر همگام درجریان است.
2-متوقف کردن یک Update غیر همگام که در جریان است.
وقتی عمل Update شروع می شود یا پس از وقفه ای UpdateProgress, به طور خودکارنمایش داده می شود.
شمای UpdateProgress : مثالی از UpdateProgress: توقف عمل Update: بخش د وم :وب سرویس های ASP.NET AJAX : مقدمه معمولا بیشتر استفاد ه هایی که ممکن است از اینترنت داشته باشید ،ارسال و دریافت ایمیل و یا گردش کردن در وب است .این دو کاربرد معمولا بیشترین دلیلی است که افراد برای آن به اینترنت متصل میشوند.
اما با رشد اینترنت ،نحوه استفاده افراد از اینترنت نیز در حال تغییر کردن است .
با رشد اینترنت برنامه هایی که برای انجام کارهای خود به اتصال به اینترنت نیاز دارند نیز در حال افزایش است .بیشتر برنامه های امروزی برای این که بتوانند داده های را به سرور خود بفرستند یا اطلاعات جدید را از سرور دریافت کنند نیاز دارند که به اینترنت متصل باشند.همین مورد موجب شده است که وب سرویس ها به یکی از بزرگترین تحولات اخیر در زمینه اینترنت تبدیل شوند.حتی میتوانیم بگوییم به همان اندازه که وب و صفحات وب در موت اخیر رشد داشته اند ، وب سرویس ها نیز رشد خواهند کرد و فراگیر خواهند شد .اما خب ،ممکن است سوال کنید که چرا وب سرویس ها تا این اندازه از اهمیت برخوردارند .
؟
همان طور که میدانید صفحات وب یکی از بهترین راه ها برای به اشتراک گذاشتن اطلاعات است .ما مشکلی که صفحات وب دارند و یا به عبارت بهتر میتوان گفت محدودیتی که این صفحات دارند این است که فقط انسان ها میتوانند از آن استفاده کنند !صفحات وب باید حتما بوسیله انسان ها فراخوانده شوند و اطلاعات درون آن نیز فقط میتواند بوسیله ذهن انسان درک شود .
اما وب سرویس ها از ابتدا برای خوانده شدن و تفسیر شدن بوسیله برنامه های کامپیوتری ایجاد شده اند و نمیتوانند به وسیله ی انسان ها مورد استفاده قرار بگیرند .در حقیقت میتوانیم بگوییم که وب سرویس ها ،سایت های وبی هستند که فقط بوسیله ی برنامه های کامپیوتری میتوانند مورد استفاده قرار بگیرند .وب سرویس ها به طور دائمی میتوانند به صورت دینامیک تغییر کنند ،بنابراین لازم نیست که حاوی اطلاعات ثابت و تغییر ناپذیری باشند ،بلکه میتوانند با برنامه ای که از آنها استفاده میکند تعامل داشته باشند و ارتباط برقرار کنند .
وب سرویس ها باعث میشوند که یکپارچگی بسیار بسیار ساده تر انجام شود و بنابر این هزینه ای که برای این کار صرف میشود بسیار بسیار کمتر از قبل خواهد بود .به همین دلیل است که پیش بینی میکنند وب سرویس ها بزرگترین تحول اینترنتی در مدت اخیر خواهد بود .
با استفاده از وب سرویس ها نه تنها شرکتهایی که میخواهند در نرم افزارهای خود یکپارچگی ایجاد کنند راههای بسیار ساده تر و ارزان تری را دراختیار خواهند داشت ،بلکه نرم افزار های موجود در شرکتهای تجاری کوچک نیز میتوانند به سادگی با یگدیگر رابطه داشته باشند .
برای اطلاعات بیشتر به این آدرس مراجعه نمایید : http://msdn.microsoft.com/webservices وب سرویس ها واحد هایی هستند که برای سایر برنامه ها داده هایی فراهم میکنند .وب سرویس ها نسل دیگری از برنامه نویسی تحت وب محسوب میشوند.تمام برنامه هاتحت پروتکل های استانداردموجود مانند HTTP ،XML،SOAP میتوانند به وب سرویس ها دسترسی داشته باشند .وب سرویس های ASP.NET ساده ترین راه را برای پیاده سازی آن ارائه داده اند.VS.NET به صورت خودکار قسمت های مختلف یک برنامه را مانند (web service discovery language)WSDL ، web service discovery (DISCO) و غیره را تولید میکند.دات نیم فریم ورک ابزاری را نیز برای تولید یک کلاس پروکسی جهت دسترسی به وب سرویس های طرف کلاینت فراهم کرده است .
وب سرویس ها برمبنای دریافت و تولید پیغام ها بنیانگذاری شده اند.مصرف کنندگان یک وب سرویس میتوانندتحت هر سیستم عاملی و با هر زبانی نوشته شوند.
در دنیای امروز برنامه های تجاری از مرز اینترانت و شبکه های داخلی فراتر رفته اند.این مورد نیاز به نوعی برنامه نویسی دارد که بر روی پلتفرم های مختلف و همچنین با زبان های برنامه نویسی مختلف قابل اجرا و دسترسی باشد .بحث انتقال پذیری یک برنامه بر روی پلتفرم های مختلف تا بحال بسیار مشکل و پرهزینه بوده است .بدین منظور در معماری ویندوز 2000 بحث وب سرویس ها برای حل این مشکل انتقال پذیری در نظر گرفته شده است.
وب سرویس ها همانند یک برنامه معمولی نوشته میشوندو میتوان آنها را با سرویس های یک ویندوزNT مقایسه کرد .آنها در پس زمینه اجرا شده و منتظر کلاینت ها می مانند تا به آنها وصل شوند.بنابراین یک وب سرویس همواره مشغول گوش دادن به رفت و آمدها است و این کار را هم خودکار انجام میدهد .مهمترین پروتکلی که در یک وب سرویس از آن استفاده میشودHTTP است .این پروتکل بسیار امن ،کاملا تست شده و تقریبا عاری از هر باگی است .
وب سرویس ها ، آینده ی محاسبات روی وب را رقم خواهند زد.برای مثال شما یک تابع محاسباتی مهم را طراحی کرده و مینویسید .
و آن را به صورت یک وب سرویس ارائه میدهید .از سراسر دنیا میتوانند به وب سرویس شما متصل شده و به تابع شما مقدار پاس دهند و نتیجه را دریافت نمایند .در حقیقت یک وب سرویس اساسا یک کامپوننت است که تحت وب قابل دسترسی میباشد .
ASP.NET AJAX , وب متدهای ASMX را به عنوان آخرین نقطه و مرحله برای callback های ناهمزمان پشتیبانی می کند.زیرا: 1- در نوشتن کارآمد است(Soap,XML).2- در سرور کارآمد است(بدون زمان حیاط و وجود صفحه ) خصوصیات ScriptService درسرور نشان می دهد که وب سرویس قابل صدا زدن از طرف اسکریپت Client است.
JavaScript proxy، Clientرا قادر به فراخوانی متدهای وب سرورمی کند.
اسکریپت قابل فراخوانی Web Service : نمایش یک Service Reference : چه نوع داده هایی را میتوان از طریق وب سرویس ارائه داد ؟
هر داده ای کهserializebale باشد را می توان از طریق یک وب سرویس ارائه داد .برای مثال تعدادی از آنها در جدول زیر لیست شده اند .
چه نو ع داده های را می توان به یک وب سرویس پاس داد ؟
هنگام استفاده از پروتکل SOAP هر دو نوع داد های by-value وby-refrence یعنی(out/in) را میتوان استفاده کرد .پارامترهای by-refrence این خاصیت را دارند که میتوانند مقدار دو جهته بفرستند : به سرور و کلاینت.
هنگام استفاده از پارامترهای ورودی با استفاده از پروتکلHTTP تنها نوع های داده ای محدودی پشتیبانی میشوندو باید تنها پارامترها از نوع by-value باشد .نوع پارامترهای ساپورت شده برای پروتکل HTTP در جدول زیر لیست شده اند: جدول 2:نوع های داده ای مورد قبول برای استفاده با پروتکل HTTP : WSDL : چگونه یک کلاینت می تواند حدس بزند که چه نوع توابع و پارامترها و موارد دیگری توسط یک وب سرویس ساپورت میشود ؟برای حل این مشکل تمام وب سرویس ها به صورت خودکار یک فایل XML را با فرمت SDL( service deciption language)تولید میکنند .
این مورد به سادگی از طریق هر مرورگری با اضافه کردن یک "؟
SDL " به آدرس وب آن قابل مشاهده است .برای مثال : http://myhost//services/myservice.asmx?sdl توضیحات پشتیبانی شده توسط myservice را با فرمت نمایش SDL میدهد .
نحوه ی عملکرد وب سرویس ها : اول از همه باید بگوییم که اساس وب سرویس ها به طور کلی روی استاندارهای آزاد است و به هیچ پلتفرم یا شرکت خاصی تعلق ندارد .
یکی از جذابیت ها و دلایل موفقیت وب سرویس ها نیز در این مورد است که تفاوتی نمیکند که شما وب سرویس خود را روی چه پلت فرمی ارائه کنید ،ویندوز ، مکینتاش ،لینوکس ،سولاریس ،یونیکس،.....در هر حالت همه افراد میتوانند به سرور شما متصل شده و از وب سرویسی که ارائه می دهید استفاده کنند .
این مورد دقیقا مشابه عملکرد سایت های وب است .در سایت های وب نیز تفاوتی ندارد که سروری که روی این سایت قرار گرفته و یا پلت فرمی که بوسیله آن نوشته شده است چیست و یا چگونه کار میکند .در هر صورت شما میتوانید به سادگی به ان متصل شده و از اطلاعات آن استفاده کنید .
دومین نکته ای که باید بدانید این است که وب سرویسی که در NET استفاده شده و به کار گرفته میشود تماما بر اساس مدل برنامه نویسی است که اغلب برنامه نویسان به استفاده از آن علاقه زیادی دارند :برنامه نویسی شی گرا .اگر شما نیز در اغلب برنامه های خود از اشیا استفاده میکنید در NET نیز به سادگی میتوانید وب سرویس ها را مورد استفاده قرار دهید .
اصلی که برای ایجاد یک وب سرویس مورد استفاده قرار میگیرد به این صورت است که یک کلاس ایجاد میکند که دارای متد های مختلفی است .البته نحوه ی توزیع و استفاده از این کلاس مانند کلاس های قبلی نیست و تفاوت دارد .در رابطه با کلاس هایی که تاکنون ایجاد کردیم ،نحوه استفاده از کلاس به صورت زیر بود : -یک برنامه نویس،یک کلاس ایجاد میکرد .
- این کلاس در جایی نصب میشد (در کامپیوتری که میخواست مورد استفاده قرار گیرد کپی میشد ) -قسمتی از یک نرم افزار در همان کامپیوتر که میخواست از آن کلاس استفاده کند ،یک نمونه از این کلاس را ایجاد میکرد (یک "شی" ایجاد میکرد ).
-آن قسمت از نرم افزار که این شی را ایجاد کرده بود ،متد مورد نظر خود را از این کلاس فراخوانی میکرد .
- آن متد از شی ،کارهای خاصی را انجام میداد و مقداری را به عنوان نتیجه بر میگرداند .
- آن قسمت از نرم افزار که متدی را فراخوانی کرده بود ،نتیجه را دریافت کرده و از آن استفاده میکرد .
اما دروب سرویس ها یک کلاس به صورت زیر مورد استفاده قرار میگیرد : یک برنامه نویس یک کلاس ایجاد میکند.
آن کلاس روی یک سرور که دارای یک وب سرور مانند IIS و یا هر وب سرور دیگری است کپی میشود .
قسمتی از یک نرم افزار که در یک کامپیوتر متفاوت و با فاصله از کامپیوتری که کلاس در آن قرار دارد (معمولا در جایی از اینترنت )از وب سرور میخواهد که یکی از متدهای موجود در کلاس را اجرا کند .
سرور یک نمونه از کلاس (یک شی) را ایجاد کرده و متد درخواست شده را فراخوانی میکند .
سرور نتیجه اجرای متد را به کامپیوتری که آن را فراخوانی کرده بود بر میگرداند .
آن قسمت از نرم افزار در کامپیوتر دور دست که درخواست فراخوانی متد را ایجاد کرده بود ،نتیجه را دریافت کرده و از آن استفاده میکند .
مشاهده میکنید که روش کار در هر دو مورد مشابه است ،اما در مورد دوم یک گسستگی بین کامپیوتری که کلاس به طور واقعی در آن قرار دارد و کامپیوتری که میخواهد از کلاس استفاده کند وجود دارد .
در حقیقت با استفاده از وب سرویس ها یک فاصله پردازشی زیادی (به اندازه وسعت اینترنت ) ، بین نرم افزاری که میخواهد از کلاس استفاده کند و خود کلاس بوجود می آید .برای حل این مشکل گسستگی و کنترل فاصله ای که در اینجا وجود دارد ،از تکنولوژی ها و استانداردهایی که در وب سرویس ها مورد استفاده قرار گرفته است (و یا حتی در اصل برای استفاده به وسیله ی وب سرویس ها ایجاد شده اند )استفاده میکنند .
SOAP : وب سرویس ها در حقیقت وب سایت هایی برای استفاده بوسیله نرم افزار ها هستند .بنابراین از همان تکنولوژی استفاده میکنند که باعث شده است سایتهای وب تا این حد عمومی شوند .
وب سرویس ها نیز مانند وب از استاندارد HTTP استفاده میکنند که توسط همه ی سرورها ی وب به کا رگرفته شده است .
هنگامی که با "ایجاد سایتهایی برای انسان ها " سرو کار داریم ،معمولا کلاینت (مرورگر) و سرور فایل های مختلفی را با یکدیگر معادله میکنند :فایل های متنی حاوی کد HTML,DHTML,JavaScript, و ...که ظاهر و متنهای موجود در صفحه را شامل میشوند ،فایل های تصویر و یا صدا با فرمت JPEG,GIF و یا ...
که در قسمت های مختلف صفحه مورد استفاده قرار میگیرند و غیره .
اما زمانی که بخواهید برای نرم افزارها و برنامه های کامپیوتری سایتی را ایجاد کنید ،فقط با یک نوع فایل در ارتباط هستید .این فایل ها به نام فایل های SOAP معروف هستند .
نکته: SOAP در اصل سرنام کلمات Simple Object Access Protocl است ،اما استاندارد کنونی که در W3Cوجود دارد این اصطلاح را حذف کرده است .
هنگامی که یک برنامه بخواهد از یک وب سرویس تقاضای در یافت اطلاعاتی را بکند ،برای مثال بخواهد موجودی یک کالا در انبار را بداند ،یا بخواهد وضعیت کنونی یک سفارش را دریافت کند ،و یا از کامپیوتر سرور بخواهد تا کار خاصی را مثل یک تبدیل واحد برای او انجام دهد ،برنامه یک فایل درخواست با قالب SOAP ایجاد میکند .
سپس این فایل با استفاده از HTTP و از طریق اینترنت به وب سروری که وب سرویس در آن قرار دارد فرستاده میشود .این فایل حاوی تمام اطلاعاتی است که وب سرویس نیاز دارد تا بداند چه کاری از او خواسته شده است .
با توجه به این که وب سرویس ها مانند روش کلاس / روش معمولی کار میکنند ،این فایل SOAP معمولا حاوی نام متدی است که باید اجرا شود و نیز پارامترهایی که این متد به عنوان ورودی باید دریافت کند .
در سمت سرور ،این تقاضا به وسیله وب سرویس دریافت شده و بعد از این که درخواست کاربر از آن استخراج شد ،متد مورد نظر فراخوانی میشود .
بعد از این که متد مورد نظر اجرا شده و نتیجه آماده شد ،وب سرویس یک فایل SOAP ایجاد کرده و نتیجه درخواست برنامه را در آن قرار میدهد و به سمت کامپیوتر درخواست کننده ارسال میکند .
همانند فایلی که حاو ی تقاضا بود ،این فایل نیز که نتیجه را نگهدار ی میکند با استفاده از HTTP و به وسیله اینترنت به برنامه اول فرستاده میشود .
اسناد و فایل های SOAP با استفاده از XML ایجاد میشوند .
با توجه به این که استفاده از وب سرویس ها به پلت فرم خاصی وابسته نیست و هر نرم افزاری که در هر پلت فرمی طراحی شده باشد میتواند از هر وب سرویس که به هر نحوی ایجاد شده باشد استفاده کند .
برنامه نویسان معمولا برای انتخاب یک پلت فرم به این نکته دقت میکنند که در هر پلت فرم چگونه میتوان فایلهای SOAP مربوط به استفاده از یک وب سرویس را ایجاد کرد و یا از فایل های حاوی نتیجه استفاده کرد و یا این نکته را در نظر میگیرند که د رهر پلت فرم چه ابزار هایی برای طراحی وب سرویس مورد نظرشان وجود دارد .NET ،در هر دو زمینه تا حد ممکن سادگی و قدرت را برای طراحی و یا استفاده از یک وب سرویس فراهم کرده است .
با استفاده از NET ،میتوان بدون این که درگیر فایل های SOAP شد از وب سرویس ها استفاده کرد و آنها را در برنامه به کار برد .