<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Iran Developers Network &#187; آجکس Ajax</title>
	<atom:link href="http://www.irandevelopers.com/category/programming/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.irandevelopers.com</link>
	<description>IDN بزرگترین مرجع توسعه دهندگان ایران - آموزش زبانهای برنامه نويسی</description>
	<lastBuildDate>Mon, 23 Aug 2010 08:51:43 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش هشتم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part8-870830-42/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part8-870830-42/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:31:37 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=42</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش در بخش هفتم با نحوه  ایجاد یک صفحه مبتنی بر Ajax با تمرکز بر روی پتانسیل های سمت سرویس دهنده فریمورک     ASP. NET Ajax آشنا شدیم .  بدین منظور  یک نمونه مثال ساده را بررسی کردیم که در آن از کنترل های  UpdatePanel و  UpdateProgress به منظور نشان دادن قابلیت Ajax [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در <span style="font-family: Tahoma;"><br />
<a style="font-family: Tahoma;" href="http://www.srco.ir/Articles/DocView.asp?ID=562">بخش<br />
هفتم </a><span lang="en-us"> </span></span>با نحوه  ایجاد یک صفحه مبتنی بر Ajax با تمرکز بر<br />
روی پتانسیل های سمت سرویس دهنده فریمورک     ASP. NET Ajax آشنا شدیم .  بدین<br />
منظور  یک نمونه مثال ساده را بررسی کردیم که در آن از کنترل های  <span lang="en-us">UpdatePanel</span><br />
و  <span lang="en-us">UpdateProgress</span> به منظور نشان دادن قابلیت<br />
<span lang="en-us">Ajax</span> در صفحات <span lang="en-us"><br />
ASP. NET</span><br />
استفاده شده بود .<br />
در این بخش با نحوه ایجاد یک صفحه مبتنی بر Ajax با تمرکز بر روی<br />
پتانسیل های سمت سرویس گیرنده فریمورک  ASP. NET Ajax ، آشنا خواهیم شد . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong>مقدمه<br />
</strong></span>رویکرد مبتنی بر سرویس دهنده در عین سادگی و شفافیت دارای چالش های مختص<br />
به خود با توجه به اصول اولیه تعریف شده در خصوص برنامه های مبتنی بر<br />
<span lang="en-us">Ajax</span> است .  پیاده سازی نرم افزارهای<br />
مبتنی بر <span lang="en-us">Ajax</span> زمانی که فرصت و یا بهتر بگوئیم<br />
شرایط اجرای اکثر ماژول های برنامه در مرورگر ( در مقابل سرویس دهنده ) فراهم گردد<br />
، نتایج بمراتب موثرتری را به دنبال خواهند داشت .<br />
فراموش نکنیم یکی از مهمترین اصول برنامه های <span lang="en-us">Ajax</span> ،<br />
عرضه هوشمندانه تر برنامه ها توسط مرورگر می باشد و به همین دلیل است که نقش سرویس<br />
دهنده به ارسال داده مورد نیاز جهت بهنگام سازی بخش رابط کاربر محدود شده است .<br />
بدیهی است تفکر فوق و تحقق عملی آن در زمان طراحی و پیاده سازی اینگونه برنامه ها ،<br />
کاهش محسوس مبادله داده بین سرویس دهنده و مرورگر را به دنبال خواهد داشت . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong>مدل پیاده سازی با محوریت سرویس گیرنده</strong></span></span></span></p>
<p><strong></strong> همانگونه که در <span style="font-family: Tahoma;"><br />
<a style="font-family: Tahoma; font-size: 10pt;" href="http://www.srco.ir/Articles/DocView.asp?ID=561">بخش ششم</a></span><br />
اشاره گردید ، در این مدل ، لایه <span lang="en-us">Presentation</span><br />
متاثر از اسکریپت های سمت سرویس گیرنده با بکارگیری <span lang="en-us">DHTML </span><br />
و جاوا اسکریپت می<br />
گردد. این بدان معنی است که یک برنامه با هوشمندی و تعامل بیشتر  ،<br />
از طریق سرویس دهنده برای سرویس گیرنده ارسال می گردد ( در زمان استقرار صفحه در<br />
حافظه برای مرتبه اول ) . پس از آن ، تعامل بین برنامه مرورگر و سرویس دهنده محدود<br />
به بازیابی داده مورد نیاز جهت بهنگام سازی صفحه است . در این مدل کاربران با<br />
برنامه تعامل<br />
زیادی خواهند داشت (<br />
برنامه ای که در سمت سرویس گیرنده و در مرورگر کاربر اجراء شده است ) .<br />
برای آشنائی عملی با مدل فوق ، در ادامه یک نمونه مثال ساده و در عین حال کاربردی<br />
را بررسی خواهیم کرد.<br />
در این مثال با فراخوانی یک سرویس وب از طریق کد سمت سرویس گیرنده ، داده مورد نیاز<br />
جهت بهنگام سازی بخش رابط کاربر از سرویس دهنده دریافت خواهد شد .</p>
<p>قبل از تشریح<br />
مثال فوق ، بد نیست در ابتدا با برخی از مفاهیم کلیدی و مهم در رابطه<br />
با بکارگیری سرویس های وب از طریق کد سمت سرویس گیرنده در برنامه های<br />
وب مبتنی بر<br />
<span lang="en-us">Ajax</span> آشنا شویم .</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong>دستیابی به سرویس های وب از<br />
طریق کد سمت سرویس گیرنده<br />
</strong></span><span lang="en-us">ASP. NET Ajax</span> روش های متعددی را<br />
به منظور<br />
فراخوانی سرویس های وب ارائه می نماید . جاوا اسکریپت ، <span lang="en-us">XML<br />
Script</span> و <span lang="en-us">AutoCompleteExtender</span> نمونه هائی<br />
در این زمینه می باشند . با استفاده از امکانات ارائه شده در فریمورک فوق ، پیاده<br />
کنندگان می توانند سرویس های وب  را ( فایل هائی با انشعاب <span lang="en-us"><br />
asmx</span> . ) از طریق مرورگر و<br />
به کمک کدهای سمت سرویس گیرنده فراخوانده و از<br />
پتانسیل های آنها در برنامه های وب با هدف بهبود بخش رابط کاربر استفاده نمایند .</span></span></p>
<p>در چنین مواردی ، یک صفحه می تواند متدهای سمت سرویس دهنده را بدون انجام<br />
<span lang="en-us">postback</span> و نیاز به بازخوانی تمامی صفحه<br />
فراخوانده و از آنها استفاده<br />
نماید<br />
، چراکه صرفا&#8221; داده بین مرورگر و سرویس دهنده وب مبادله خواهد شد .</p>
<p>بکارگیری کلاس های پراکسی جاوا اسکریپت<br />
یکی از روش های فریمورک <span lang="en-us">ASP.NET Ajax</span> برای<br />
فراخوانی سرویس های وب<br />
است .بدین ترتیب می توان یک متد از سرویس وب موجود در سمت سرویس دهنده را با<br />
فراخوانی متد کلاس پراکسی جاوا اسکریپت مرتبط با آن فراخواند .<br />
<span lang="en-us">ASP. NET Ajax</span> ، همچنین امکانات لازم برای جاوا اسکریپت<br />
به منظور فراخوانی سرویس هائی نظیر پروفایل و <span lang="en-us">membership</span><br />
را ارائه می نماید .<br />
در مثالی که در ادامه بررسی خواهیم کرد ، از طریق جاوا اسکریپت در سمت سرویس گیرنده<br />
، متد مورد نیاز سرویس وب در سمت سرویس دهنده صدا زده می شود .</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #336699;">آشنائی با پراکسی های<br />
ASP.NET AJAX Web Service<br />
</span></strong>کد پراکسی دارای یک نقش مهم و حیاتی در ارسال و دریافت پیام از سرویس<br />
های وب است . فراخوانی یک سرویس وب با استفاده از پراکسی سمت سرویس گیرنده یکی از<br />
ویژگی های مهم فریمورک<br />
<span lang="en-us">ASP. NET Ajax</span> در سمت سرویس گیرنده است . در دات نت ، با<br />
استفاده از <span lang="en-us">wsdl.exe</span> و یا بکارگیری گزینه<br />
<span lang="en-us">Add Web Reference</span> در ویژوال استودیو ، امکان ایجاد<br />
پراکسی<br />
فراهم می گردد . پراکسی های <span lang="en-us"><br />
ASP. NET Ajax </span> با روش های فوق تولید نخواهند شد و برای ایجاد آنها می بایست<br />
از خصلت <span lang="en-us">Service</span><br />
کنترل <span lang="en-us">ScriptManager</span><br />
استفاده کرد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #336699;">فعال کردن قابلیت<br />
فراخوانی سرویس های وب به کمک جاوا اسکریپت<br />
</span></strong>برای فراخوانی سرویس های وب از طریق اسکریپت می بایست پیکربندی لازم را<br />
به کمک فایل <span lang="en-us">web.config</span> انجام داد . بدین منظور لازم است<br />
ScriptHandlerFactory HTTP handler را از طریق فایل <span lang="en-us">web.config</span><br />
، ریجستر کرد تا قادر به پردازش درخواست هائی باشد که از سمت سرویس گیرنده و به کمک<br />
اسکریپت ها قصد استفاده از سرویس های وب را دارند. در مواردی که فراخوانی یک سرویس<br />
وب توسط <span lang="en-us">ASP.NET Ajax</span> صورت نمی پذیرد ، درخواست مربوطه<br />
به هندلر پیش فرض ارجاع داده می شود.<br />
کد زیر ، یک نمونه فایل <span lang="en-us">web.config</span> به همراه<br />
<span lang="en-us">handler</span> مربوطه را نشان می دهد .<br />
</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="font-family: NewBaskerville-Roman;"> </span></span></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="526" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="524" height="20" bgcolor="#f4f4ff">
<p dir="ltr"><span style="font-size: xx-small; font-family: Tahoma;">&lt;</span><span style="font-family: NewBaskerville-Roman;"><span style="font-size: xx-small; font-family: Tahoma;">system.web&gt;<br />
&lt;httpHandlers&gt;<br />
&lt;remove verb=&#8221;*&#8221; path=&#8221;*.asmx&#8221;/&gt;<br />
&lt;add verb=&#8221;*&#8221; path=&#8221;*.asmx&#8221;<br />
type=&#8221;System.Web.Script.Services.ScriptHandlerFactory&#8221; validate=&#8221;false&#8221;/&gt;<br />
&lt;/httpHandlers&gt;<br />
&lt;system.web&gt;</span></span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">توجه داشته باشید در زمان ایجاد یک وب سایت مبتنی بر<br />
<span lang="en-us">Ajax</span> در ویژوال استودیو نسخه های ۲۰۰۵ و یا ۲۰۰۸<br />
، تنظیمات<br />
فوق بطور اتوماتیک در فایل <span lang="en-us">web.config</span><br />
اعمال خواهد شد .<br />
پس از اعمال تغییرات فوق ،<br />
برای فعال کردن<br />
قابلیت  فراخوانی یک سرویس وب  از طریق اسکریپت در یک صفحه <span lang="en-us">ASP.NET</span><br />
،<br />
مراحل زیر را می بایست انجام داد :</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><strong><span style="color: #800000;">مرحله اول</span></strong> : اضافه کردن کنترل <span lang="en-us">ScriptManager</span> بر روی صفحه</p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><strong><span style="color: #800000;">مرحله دوم</span></strong> :<br />
اضافه کردن یک مرجع به سرویس وب توسط عنصر asp:ServiceReference  و تنظیم خصلت <span lang="en-us"><br />
path</span> آن به گونه ای که به  سرویس وب  اشاره نماید . شی<br />
ServiceReference  به <span lang="en-us">ASP.NET Ajax</span> اعلام می نماید<br />
که یک کلاس پراکسی جاوا اسکریپت را برای فراخوانی سرویس وب مورد نظر توسط اسکریپت ،<br />
تولید نماید .</li>
<p></span></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">کد زیر ، نحوه فراخوانی یک سرویس وب با نام<br />
<span lang="en-us">Test.asmx</span> توسط اسکریپت را نشان می دهد .<br />
</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="392" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="390" height="20" bgcolor="#f4f4ff">
<p dir="ltr"><span style="font-size: xx-small; font-family: Tahoma;">&lt;asp:ScriptManager runat=&#8221;server&#8221;<br />
ID=&#8221;scriptManager&#8221;&gt;<br />
&lt;Services&gt;<br />
&lt;asp:ServiceReference path=&#8221;~/WebServices/<span lang="en-us">Test</span>.asmx&#8221;<br />
/&gt;<br />
&lt;/Services&gt;<br />
&lt;/asp:ScriptManager&gt;</span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در زمان تفسیر صفحه ای که شامل عنصر<br />
&lt;asp:ScriptManager&gt;  می باشد ، یک کلاس پراکسی جاوا<br />
اسکریپت برای سرویس وب <span lang="en-us">Test.asmx</span> ایجاد می<br />
گردد . کلاس پراکسی ، دارای  متدهای مرتبط با هر یک از متدهای موجود در سرویس وب<br />
<span lang="en-us">Test.asmx</span> می باشد . صفحه همچنین شامل کلاس های پراکسی جاوا<br />
اسکریپت  مرتبط با نوع های داده سرویس دهنده است که به عنوان پارامتر ورودی و<br />
یا مقادیر برگردانده شده<br />
توسط متدهای سرویس وب<br />
مورد استفاده قرار می گیرد . بدین ترتیب ، اسکریپت قادر به مقداردهی اولیه<br />
پارامترها و برگرداندن مقادیر خواهد بود .<br />
پس از این مقدمه نسبتا&#8221; طولانی و شاید هم  خسته کننده !  ولی ضروری ،<br />
اجازه دهید در ادامه به منظور آشنائی با قابلیت های فریمورک <span lang="en-us"><br />
ASP.NET Ajax</span> در سمت سرویس گیرنده ، یک نمونه مثال کاربردی را با یکدیگر<br />
دنبال نمائیم .<br />
</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><br />
<span style="color: #336699;">مثال : ایجاد یک صفحه مبتنی بر <span lang="en-us">Ajax</span><br />
با تمرکز بر روی پتانسیل های سمت سرویس گیرنده<span lang="en-us"> </span><br />
</span></strong>در این مثال می خواهیم تعداد مقالاتی را که بر روی سایت<br />
سخا روش و در هر یک از گروه های مختلف منتشر شده است ، به اطلاع ملاقات کنندگان<br />
سایت برسانیم .برای سادگی کار ، فرض می شود  که تعداد مقالات منشتر شده بر روی<br />
سایت از طریق بانک اطلاعاتی  بازیابی نخواهد شد و  در مقابل از یک کلاس<br />
با نام <span lang="en-us">Maghalat</span> برای<br />
بازیابی تعداد مقالات منشتر شده در هر گروه استفاده خواهیم کرد . کلاس فوق دارای<br />
صرفا&#8221; یک متد با<br />
<span lang="en-us">GetNumberOfMaghalat</span> است که وظیفه آن برگرداندن تعداد<br />
مقالات منتشر شده در  هر گروه است .<br />
برای دستیابی به خدمات این متد از یک سرویس وب با نام MaghalatService.asmx<span lang="en-us"><br />
</span> استفاده خواهیم کرد که از طریق کد سمت سرویس گیرنده فعال خواهد شد .<br />
پس از آشنائی اولیه با صورت مسئله ،<br />
مراحل زیر را برای پیاده سازی یک صفحه وب مبتنی بر<br />
<span lang="en-us">Ajax</span> با محوریت سرویس<br />
گیرنده ، دنبال می نمائیم .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #800000;">مراحل اول</span></strong> (<br />
ایجاد سایت   )  و <strong><span style="color: #800000;">دوم </span></strong>(<br />
طراحی و پیاده سازی کلاس Maghalat  ) همانند مثال ارائه شده در <span style="font-family: Tahoma;"><br />
<a style="font-family: Tahoma;" href="http://www.srco.ir/Articles/DocView.asp?ID=562">بخش<br />
هفتم </a><span lang="en-us"> </span></span> است .<br />
</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"><strong><br />
مرحله سوم : تعریف یک سرویس وب<br />
</strong><br />
</span>برای جستجو و یافتن تعداد مقالات منتشر شده در هر گروه از یک<br />
سرویس وب با نام<br />
MaghalatService.asmx<span lang="en-us"> </span>استفاده<br />
خواهیم کرد که متد<br />
<span lang="en-us">GetNumberOfMaghalat</span> کلاس <span lang="en-us">Maghlat</span><br />
را فرامی خواند . کد سرویس وب فوق در جدول زیر نشان داده شده است .<br />
</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="414" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="412" height="20" bgcolor="#f4f4ff"><span style="font-family: Tahoma;"><br />
<span style="font-size: xx-small;"><br />
&lt;%</span><span style="font-size: xx-small; color: #0000ff;">@</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #a31515;">WebService</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; color: #ff0000;">Language</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;VB&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">Class</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;MaghalatService&#8221;</span><span style="font-size: xx-small;"><br />
%&gt;<br />
</span><span style="font-size: xx-small; color: #0000ff;">Imports</span><span style="font-size: xx-small;"> System<br />
</span><span style="font-size: xx-small; color: #0000ff;">Imports</span><span style="font-size: xx-small;"> System.Web<br />
</span><span style="font-size: xx-small; color: #0000ff;">Imports</span><span style="font-size: xx-small;"><br />
System.Web.Services<br />
</span><span style="font-size: xx-small; color: #0000ff;">Imports</span><span style="font-size: xx-small;"><br />
System.Web.Services.Protocols<br />
</span><span style="font-size: xx-small; color: #0000ff;">Imports</span><span style="font-size: xx-small;"><br />
System.Web.Script.Services </span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small;">&lt;ScriptService()&gt; _<br />
</span><span style="font-size: xx-small; color: #0000ff;">Public</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; color: #0000ff;">Class</span><span style="font-size: xx-small;"> MaghalatService<br />
</span><span style="font-size: xx-small; color: #0000ff;"><br />
Inherits</span><span style="font-size: xx-small;"> System.Web.Services.WebService<br />
<span lang="en-us"> </span> </span> <span lang="en-us"><br />
<span style="font-size: xx-small;">&lt;ScriptMethod()&gt; _</span></span><span style="font-size: xx-small;"><br />
&lt;WebMethod()&gt; _<br />
</span><span style="font-size: xx-small; color: #0000ff;"><br />
Public</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Function</span><span style="font-size: xx-small;"><br />
GetNumberOfMaghalat(</span><span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"><br />
articleGroup </span><span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">String</span><span style="font-size: xx-small;">) </span><br />
<span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; color: #0000ff;">Integer<br />
</span><span style="font-size: xx-small;"><br />
System.Threading.Thread.Sleep(1000)<br />
</span><span style="font-size: xx-small; color: #0000ff;"><br />
Return</span><span style="font-size: xx-small;"> Maghalat.GetNumberOfMaghalat(articleGroup)<br />
</span><span style="font-size: xx-small; color: #0000ff;"> End</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">Function<br />
End</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Class<br />
</span></span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #008000;">توضیحات :</span></strong><span style="color: #008000;"><br />
</span> </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span lang="en-us">namespace</span> با نام System.Web.Script.Services<br />
بخشی از هسته فریمورک <span lang="en-us">ASP.NET Ajax</span> است که<br />
برخی از عملیات مبادله داده در شبکه و  اسکریپت نویسی را کپسوله می نماید .</li>
<li dir="rtl">
<p dir="rtl" align="justify">از دو خصلت جدید<span lang="en-us"> ScriptService<br />
</span>و  ScriptMethod  در زمان تعریف متد و کلاس سرویس وب<br />
استفاده شده است . با استفاده از خصلت های فوق ، فریمورک <span lang="en-us">ASP.NET Ajax</span><br />
تشخیص می دهد که کدام بخش از سرویس ها توسط پراکسی های جاوا اسکریپت بکار گرفته شده<br />
است .  وجود خصلت <span lang="en-us">ScriptMethod</span> ضروری نیست ولی با<br />
استفاده از آن می توان برخی تنظیمات متد را انجام داد .</li>
<li dir="rtl">
<p dir="rtl" align="justify">پرداختن به این موضوع که پراکسی چه چیزهائی را تولید<br />
می نماید ، خارج از حوصله این مقاله است. با نگاهی به انتهای پراکسی تعریف شده در<br />
سرویس وب فوق ،در انتها با<br />
متد GetNumberOfMaghalat مواجه می شویم .<br />
متد فوق به اسکریپت سمت سرویس گیرنده مکانیزمی را<br />
ارائه می نماید که بتواند متدهای وب<br />
موجود در سرویس وب را استفاده نماید .<br />
در زمان فراخوانی سرویس وب از  مجموعه<br />
پارامترهای بمراتب بیشتری استفاده<br />
خواهد شد که پیاده کنندگان آنها را در سرویس وب تعریف نکرده اند .</li>
<li dir="rtl">
<p dir="rtl" align="justify">در صورت مشاده فایل <span lang="en-us">ASMX</span><br />
در مرورگر به همراه سوئیچ <span lang="en-us">js/</span> ، پراکسی جاوا اسکریپت<br />
تولید شده توسط فریمورک برای سرویس فوق نشان داده می شود .</li>
<p></span></span></ul>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="49" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="494" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; font-family: Tahoma;">var MaghalatService=function() {<br />
MaghalatService.initializeBase(this);<br />
this._timeout = 0;<br />
this._userContext = null;<br />
this._succeeded = null;<br />
this._failed = null;<br />
}<br />
MaghalatService.prototype={<br />
_get_path:function() {<br />
var p = this.get_path();<br />
if (p) return p;<br />
else return MaghalatService._staticInstance.get_path();},<br />
GetNumberOfMaghalat:function(articleGroup,succeededCallback, failedCallback,<br />
userContext) {<br />
return this._invoke(this._get_path(),<br />
&#8216;GetNumberOfMaghalat&#8217;,false,{articleGroup:articleGroup},succeededCallback,failedCallback,userContext);<br />
}}<br />
MaghalatService.registerClass(&#8216;MaghalatService&#8217;,Sys.Net.WebServiceProxy);<br />
MaghalatService._staticInstance = new MaghalatService();<br />
MaghalatService.set_path = function(value) {<br />
MaghalatService._staticInstance.set_path(value); }<br />
MaghalatService.get_path = function() { return<br />
MaghalatService._staticInstance.get_path(); }<br />
MaghalatService.set_timeout = function(value) {<br />
MaghalatService._staticInstance.set_timeout(value); }<br />
MaghalatService.get_timeout = function() { return<br />
MaghalatService._staticInstance.get_timeout(); }<br />
MaghalatService.set_defaultUserContext = function(value) {<br />
MaghalatService._staticInstance.set_defaultUserContext(value); }<br />
MaghalatService.get_defaultUserContext = function() { return<br />
MaghalatService._staticInstance.get_defaultUserContext(); }<br />
MaghalatService.set_defaultSucceededCallback = function(value) {<br />
MaghalatService._staticInstance.set_defaultSucceededCallback(value); }<br />
MaghalatService.get_defaultSucceededCallback = function() { return<br />
MaghalatService._staticInstance.get_defaultSucceededCallback(); }<br />
MaghalatService.set_defaultFailedCallback = function(value) {<br />
MaghalatService._staticInstance.set_defaultFailedCallback(value); }<br />
MaghalatService.get_defaultFailedCallback = function() { return<br />
MaghalatService._staticInstance.get_defaultFailedCallback(); }<br />
MaghalatService.set_path(&#8220;/Ajax1/MaghalatService.asmx&#8221;);<br />
MaghalatService.GetNumberOfMaghalat=<br />
function(articleGroup,onSuccess,onFailed,userContext)<br />
{MaghalatService._staticInstance </span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #a31515;"><strong>مرحله چهارم : ایجاد یک<br />
صفحه <span lang="en-us">ASP.NET</span><br />
</strong></span>در ادامه یک صفحه <span lang="en-us">aspx</span> . را به منظور استفاده<br />
از امکانات ارائه شده در سرویس فوق ایجاد می نمائیم . در اولین گام می بایست قابلیت<br />
استفاده از <span lang="en-us">Ajax</span> در صفحه فعال گردد . بدین منظور از کنترل ScriptManager استفاده<br />
خواهیم کرد . در ادامه ، یک مرجع به سرویس وب توسط عنصر asp:ServiceReference<br />
اضافه کرده و مقدار خصلت <span lang="en-us"><br />
path</span> آن را  MaghalatService.asmx<span lang="en-us"> </span>در نظر می گیریم . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="370" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="368" height="20" bgcolor="#f4f4ff"><span style="font-family: Tahoma;"><br />
<span style="font-size: xx-small; color: #a31515;"><span lang="en-us">&lt;</span>asp</span><span style="font-size: xx-small; color: #0000ff;">:</span><span style="font-size: xx-small; color: #a31515;">ScriptManager</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">ID</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;ScriptManager1&#8243;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">runat</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;server&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">Services</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">asp</span><span style="font-size: xx-small; color: #0000ff;">:</span><span style="font-size: xx-small; color: #a31515;">ServiceReference</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">Path</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;MaghalatService.asmx&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">/&gt;<br />
<span lang="en-us"> </span>&lt;/</span><span style="font-size: xx-small; color: #a31515;">Services</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: xx-small; color: #a31515;">asp</span><span style="font-size: xx-small; color: #0000ff;">:</span><span style="font-size: xx-small; color: #a31515;">ScriptManager</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span><span style="font-size: xx-small;"><br />
</span></span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در بخش ویژوال صفحه <span lang="en-us">ASP.NET</span><br />
از عناصر سرویس دهنده استفاده نشده است و صرفا&#8221; از عناصر <span lang="en-us">HTML</span><br />
که امکان دستیابی به آنها از طریق کدهای سمت سرویس گیرنده وجود دارد ، استفاده شده<br />
است .<br />
</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="font-size: small; font-family: Tahoma;"> </span></span></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="503" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="501" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">&lt;</span><span style="font-size: xx-small; font-family: Tahoma; color: #a31515;">div</span><span style="font-size: xx-small; font-family: Tahoma;"><br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">align</span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">=&#8221;center&#8221;&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">style</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;</span><span style="font-size: xx-small; color: #ff0000;">font-size</span><span style="font-size: xx-small;">:<br />
</span><span style="font-size: xx-small; color: #0000ff;">10pt</span><span style="font-size: xx-small;">; </span><br />
<span style="font-size: xx-small; color: #ff0000;">font-family</span><span style="font-size: xx-small;">: </span><br />
<span style="font-size: xx-small; color: #0000ff;">Tahoma&#8221;&gt;<br />
</span></p>
<p><span style="font-size: small;"> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"><span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; font-family: Tahoma; color: #a31515;">strong</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">dir</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;rtl&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">style</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;</span><span style="font-size: xx-small; color: #ff0000;">text-align</span><span style="font-size: xx-small;">:<br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">center&#8221;&gt;ایجاد یک صفحه وب مبتنی بر<br />
Ajax &lt;</span><span style="font-size: xx-small; font-family: Tahoma; color: #a31515;">br</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">/&gt;<br />
</span><span style="font-size: xx-small; font-family: Tahoma;"> <span lang="en-us"><br />
</span>(( پیاده سازی با محوریت پتانسیل های سمت سرویس گیرنده فریمورک ASP.NET Ajax<br />
)) </span><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">strong</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">br</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">/&gt;<br />
<span lang="en-us"> </span>&lt;/</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span><span style="font-size: xx-small;"><br />
</span></p>
<p><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">br</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">/&gt;</span></span><span style="font-size: xx-small;"> </span></p>
<p><span style="font-size: small;"> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"><span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; font-family: Tahoma; color: #a31515;">select</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">id</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;ArticleGroup&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">size</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;5&#8243;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">style</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;</span><span style="font-size: xx-small; color: #ff0000;">font-size</span><span style="font-size: xx-small;">:<br />
</span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">12pt</span><span style="font-size: xx-small;">; </span><br />
<span style="font-size: xx-small; color: #ff0000;">width</span><span style="font-size: xx-small;">: </span><br />
<span style="font-size: xx-small; color: #0000ff;">146px</span><span style="font-size: xx-small;">; </span><br />
<span style="font-size: xx-small; color: #ff0000;">color</span><span style="font-size: xx-small;">: </span><br />
<span style="font-size: xx-small; color: #0000ff;">navy</span><span style="font-size: xx-small;">; </span><br />
<span style="font-size: xx-small; color: #ff0000;">font-family</span><span style="font-size: xx-small;">: </span><br />
<span style="font-size: xx-small; color: #0000ff;">Tahoma&#8221;&gt;<br />
<span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">value</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;Software&#8221;&gt;</span><span style="font-size: xx-small;"><br />
</span></span></p>
<p><span style="font-family: Tahoma;"><span style="font-size: xx-small;">نرم افزار</span><span style="font-size: small;"><span style="font-size: xx-small; color: #0000ff;"><br />
&lt;/</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">value</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;Hardware&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span><span style="font-size: xx-small;">سخت<br />
افزار </span><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
</span></span></span></p>
<p><span style="font-family: Tahoma;"><br />
</span></p>
<p><span style="font-size: small; font-family: Tahoma;"> <span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">value</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;Security&#8221;&gt;</span><span style="font-size: xx-small;"><br />
امنیت اطلاعات </span></span><br />
<span style="font-family: Tahoma;"><span style="font-size: xx-small;"> </span><span style="font-size: small;"><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">value</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;Network&#8221;&gt;</span><span style="font-size: xx-small;"><br />
شبکه </span><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
</span></span></span></p>
<p><span style="font-family: Tahoma;"><br />
</span></p>
<p><span style="font-size: small; font-family: Tahoma;"> <span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">value</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;others&#8221;&gt;</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small;">سایر</span><span style="font-size: small;"><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">option</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;/</span><span style="font-size: xx-small; color: #a31515;">select</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span><span style="font-size: xx-small;"><br />
</span></span></p>
<p><span style="font-family: Tahoma;"><br />
</span></p>
<p><span style="font-size: small; font-family: Tahoma;"><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">div</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span><span style="font-size: xx-small;"><br />
</span></span></p>
<p><span style="font-size: small; font-family: Tahoma;"><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">br</span><span style="font-size: xx-small; color: #0000ff;">/&gt;</span></span><span style="font-size: xx-small;"><br />
</span></span></p>
<p><span style="font-size: small; font-family: Tahoma;"><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;">&lt;</span><span style="font-size: xx-small; color: #a31515;">div</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">align</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;center&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">style</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; color: #0000ff;">=&#8221;</span><span style="font-size: xx-small; color: #ff0000;">font-family</span><span style="font-size: xx-small;"><br />
:</span><span style="font-size: xx-small; color: #0000ff;">Tahoma</span><span style="font-size: xx-small;"> ; </span><br />
<span style="font-size: xx-small; color: #ff0000;">font-size</span><span style="font-size: xx-small;"> :</span><span style="font-size: xx-small; color: #0000ff;">small</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">&#8220;&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">id</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;maghalatResults&#8221;&gt;&lt;/</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">id</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;loading&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">style</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;</span><span style="font-size: xx-small; color: #ff0000;">display</span><span style="font-size: xx-small;">:</span><span style="font-size: xx-small; color: #0000ff;">none</span><span style="font-size: xx-small;">;</span><span style="font-size: xx-small; color: #0000ff;">&#8220;&gt;<br />
<span lang="en-us"><br />
</span>&lt;</span><span style="font-size: xx-small; color: #a31515;">img</span><span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small; color: #ff0000;">src</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;images/ajax1.gif&#8221;</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">alt</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;"</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #0000ff;">/&gt;<br />
</span></span></span></p>
<p><span style="font-size: small; font-family: Tahoma;"><br />
<span style="font-size: xx-small; color: #ff0000;"><span lang="en-us"><br />
</span>&amp;nbsp;&amp;nbsp;</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"><br />
در حال بارگذاری&#8230;<br />
</span></span></p>
<p><span style="font-size: small; font-family: Tahoma;"><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;"> <span lang="en-us"><br />
</span>&lt;/</span><span style="font-size: xx-small; color: #a31515;">span</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span><span style="font-size: xx-small;"><br />
</span></span></p>
<p><span style="font-size: small; font-family: Tahoma;"><span style="font-size: small;"> <span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">div</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span><span style="font-size: x-small;"></span></span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">با توجه به این که<br />
برای ایجاد بخش رابط کاربر به امکانات موجود در سمت سرویس دهنده نیاز نمی باشد ،<br />
صرفا&#8221; از عناصر <span lang="en-us">HTML</span> معمولی در مقابل کنترل های سرویس<br />
دهنده استفاده شده است . در صفحه فوق از عناصری نظیر <span lang="en-us"> Select</span><br />
( جهت ارائه لیست گروه مقالات  )   و <span lang="en-us">Span</span><br />
( جهت نمایش فیدبک دیداری به کاربر در زمان بازیابی داده از سرویس دهنده ) استفاده<br />
شده است .<br />
برای دمیدن روح حیات در کالبد صفحه فوق از کد جاوا اسکریپت زیر استفاده شده است . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div>
<p><span style="font-size: small; font-family: Times New Roman;"></span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="347" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="345" height="20" bgcolor="#f4f4ff"><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><br />
&lt;</span><span style="font-size: xx-small; color: #a31515;">script</span><span style="font-size: xx-small;"><br />
</span><span style="font-size: xx-small; color: #ff0000;">type</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;text/javascript&#8221;&gt;<br />
</span><span style="font-size: xx-small;"><span lang="en-us"> </span>&lt;!&#8211;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; color: #0000ff;">var</span><span style="font-size: xx-small;"><br />
articleGroup = </span><span style="font-size: xx-small; color: #0000ff;">null</span><span style="font-size: xx-small;">;<br />
<span lang="en-us"> </span>Sys.Application.add_load(page_load);<br />
<span lang="en-us"> </span>Sys.Application.add_unload(page_unload); </span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">function</span><span style="font-size: xx-small;"><br />
page_load(sender, e){<br />
<span lang="en-us"> </span>articleGroup = $get(</span><span style="font-size: xx-small; color: #a31515;">&#8220;ArticleGroup&#8221;</span><span style="font-size: xx-small;">);<br />
<span lang="en-us"> </span>$addHandler(articleGroup, </span><br />
<span style="font-size: xx-small; color: #a31515;">&#8220;change&#8221;</span><span style="font-size: xx-small;">,<br />
articleGroup_onchange);<br />
<span lang="en-us"> </span>}</span></span></p>
<p><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">function</span><span style="font-size: xx-small;"><br />
page_unload(sender, e){<br />
<span lang="en-us"> </span>$removeHandler(articleGroup, </span><br />
<span style="font-size: xx-small; color: #a31515;">&#8220;change&#8221;</span><span style="font-size: xx-small;">,<br />
articleGroup_onchange);<br />
<span lang="en-us"> </span>}</span></span></p>
<p><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">function</span><span style="font-size: xx-small;"><br />
articleGroup_onchange(sender, e){<br />
<span lang="en-us"> </span>$get(</span><span style="font-size: xx-small; color: #a31515;">&#8220;maghalatResults&#8221;</span><span style="font-size: xx-small;">).innerHTML<br />
= </span><span style="font-size: xx-small; color: #a31515;">&#8220;&#8221;</span><span style="font-size: xx-small;">;<br />
<span lang="en-us"> </span>$get(</span><span style="font-size: xx-small; color: #a31515;">&#8220;loading&#8221;</span><span style="font-size: xx-small;">).style.display<br />
= </span><span style="font-size: xx-small; color: #a31515;">&#8220;block&#8221;</span><span style="font-size: xx-small;">;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; color: #0000ff;">var</span><span style="font-size: xx-small;"><br />
selectedValue = articleGroup.value;<br />
<span lang="en-us"> </span><br />
MaghalatService.GetNumberOfMaghalat(selectedValue,onSuccess);<br />
<span lang="en-us"> </span>}</span></span></p>
<p><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">function</span><span style="font-size: xx-small;"><br />
onSuccess(result){<br />
<span lang="en-us"> </span>$get(</span><span style="font-size: xx-small; color: #a31515;">&#8220;loading&#8221;</span><span style="font-size: xx-small;">).style.display<br />
= </span><span style="font-size: xx-small; color: #a31515;">&#8220;none&#8221;</span><span style="font-size: xx-small;">;<br />
<span lang="en-us"> </span>$get(</span><span style="font-size: xx-small; color: #a31515;">&#8220;maghalatResults&#8221;</span><span style="font-size: xx-small;">).innerHTML<br />
= </span><span style="font-size: xx-small; color: #a31515;">&#8220;<span lang="en-us"> تعداد مقالات در<br />
گروه : </span> &#8220;</span><span style="font-size: xx-small;"> + result;<br />
<span lang="en-us"> </span>}<br />
</span><span style="font-size: xx-small; color: #008000;">//&#8211;&gt;<br />
</span><span style="font-size: xx-small; color: #0000ff;">&lt;/</span><span style="font-size: xx-small; color: #a31515;">script</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span></p>
<p><span style="font-size: xx-small; font-family: Tahoma;"> </span></p>
<p><span style="font-size: x-small; font-family: Tahoma;"> </span></td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #008000;">توضیحات :</span></strong></span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<li dir="rtl">
<p dir="rtl" align="justify">با استفاده از دستورات (<br />
Sys.Application.add_load(page_load  و   (<br />
Sys.Application.add_unload(page_unload ، توابع مربوط به رویدادهای<br />
<span lang="en-us">Load</span> و <span lang="en-us">Unload</span> در مرورگر<br />
ریجستر شده است .</li>
<li dir="rtl">
<p dir="rtl" align="justify">فریمورک سمت سرویس گیرنده یک چرخه حیات مشابه با چرخه حیات صفحات<br />
<span lang="en-us">ASP.NET</span> را ارائه می نماید . در<br />
چنین مواردی می توان از<br />
رویداد <span lang="en-us">Load</span> به عنوان فرصتی<br />
جهت  ریجستر کردن یک<br />
handler به منظور کنترل هر گونه تغییرات در لیست مقالات استفاده<br />
کرد.<br />
<span style="font-family: Tahoma;"><span style="font-size: xx-small;">($addHandler(articleGroup, </span><br />
<span style="font-size: xx-small; color: #a31515;">&#8220;change&#8221;</span><span style="font-size: xx-small;">,<br />
articleGroup_onchange</span></span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: xx-small; font-family: Tahoma;"> </span><span style="font-size: x-small; font-family: Tahoma;">از متد <span lang="en-us">unload</span> برای<br />
سلب مسئولیت از handler  ریجستر شده استفاده شده است<br />
<span style="font-family: Tahoma;"><span style="font-size: xx-small;">($removeHandler(articleGroup, </span><br />
<span style="font-size: xx-small; color: #a31515;">&#8220;change&#8221;</span><span style="font-size: xx-small;">,<br />
articleGroup_onchange<br />
</span></span> </span></li>
<li dir="rtl">
<p dir="rtl" align="justify">
<p><span style="font-size: x-small; font-family: Tahoma;"> در کد فوق به دستورات جدیدی برخورد می کنیم که با علامت <span lang="en-us">$<br />
</span>شروع شده اند . دستورات فوق ، اسامی مستعار و یا کوتاه شده ای می باشند که<br />
در نهایت به کد جاوا اسکریپت ترجمه خواهند شد .  به عنوان نمونه، دستور  <span lang="en-us">$get</span><br />
همانند بکارگیری  document.getElementById  می باشد . یکی از مزایای این<br />
روش ، استقلال کدها از تفاوت های موجود بین مرورگرهای مختلف است . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">در ادامه ، به هندلر<br />
ریجستر شده ای برخورد می کنیم که پس از هر مرتبه انتخاب یک گروه مقاله توسط کاربر ،<br />
صدا زده می شود . در چنین مواردی ، سرویس وب   MaghalatService.asmx صدا<br />
زده شده تا تعداد مقالات منتشر شده در گروه مقالات انتخاب شده توسط کاربر  را<br />
برگرداند . اولین پارامتر ، گروه مقاله انتخاب شده توسط کاربر است و دومین پارامتر<br />
نام تابع <span lang="en-us">callback</span> است که در صورت اجرای موفقیت آمیز متد<br />
مربوطه در سرویس وب  ، فراخوانده می شود .<br />
</span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us">(</span></span><span style="font-size: xx-small; font-family: Tahoma;">MaghalatService.GetNumberOfMaghalat(selectedValue,onSuccess<br />
</span><span style="font-size: xx-small; font-family: Tahoma;"> </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">در نهایت ، به کمک<br />
نتایج برگردانده شده  بخش رابط کاربر بطور پویا بهنگام خواهد شد . </span></li>
<p></span></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="font-size: x-small; font-family: Tahoma;">خروجی برنامه فوق که<br />
مشابه خروجی ارائه شده در <span lang="en-us"> </span><span style="font-family: Tahoma;"><a style="font-family: Tahoma;" href="http://www.srco.ir/Articles/DocView.asp?ID=562">بخش<br />
هفتم </a><span lang="en-us"> </span></span><span lang="en-us"><br />
</span> می باشد  در شکل ۱ نشان داده شده است .<br />
<span lang="en-us"> </span> </span> </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="font-size: x-small; font-family: Tahoma;"><br />
<img src="http://www.srco.ir/Articles/images/introajax24.jpg" border="0" alt="introajax24 Ajax : تحولی بزرگ در عرصه وب ( بخش هشتم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش هشتم ) " /><br />
شکل ۱ : </span><br />
<span style="font-size: x-small; font-family: Tahoma;">نمایش تعداد مقالات منتشر شده در هر گروه </span></span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="font-size: x-small; font-family: Tahoma;"><strong><span style="color: #336699;">جمع بندی<br />
</span></strong>به منظور آشنائی اولیه علاقه مندان با <span lang="en-us">Ajax</span> و<br />
تاثیر آن در دنیای برنامه نویسی وب ، هشت مقاله بر روی سایت منتشر گردید . در<br />
مجموعه مقالات فوق ، پس از بررسی تاثیر متقابل نرم افزار بر وب و بالعکس  ،<br />
<span lang="en-us">Ajax</span> را معرفی کردیم و این که از کجا آمده است و قصد آن<br />
پوشش چه مسائلی در عرصه برنامه های وب است . در ادامه با کنترل<br />
XMLHttpRequest آشنا شدیم و  به ضرورت استفاده از یک فریمورک برای بکارگیری<br />
قابلیت های <span lang="en-us">Ajax</span> در برنامه های وب اشاره کردیم . در<br />
ادامه ، فریمورک <span lang="en-us">ASP.NET Ajax</span> را معرفی و با<br />
معماری آن آشنا شدیم . در نهایت به منظور آشنائی عملی با فریمورک فوق دو نمونه مثال<br />
کاربردی را با هدف آشنائی با پتانسیل های سمت سرویس دهنده و سرویس گیرنده بررسی<br />
کردیم .<br />
هدف از ارائه مقالات فوق ، آشنائی اولیه با فریمورک <span lang="en-us">ASP.NET<br />
Ajax</span> بود . هم اینک علاقه مندانی که مطالب منتشر شده را مطالعه کرده اند<br />
دارای یک شناخت مناسب از فریمورک فوق بوده و می توانند از آن به عنوان یک زیرساخت<br />
علمی مناسب در ادامه راه خود استفاده نمایند .<br />
قطعا&#8221; تمامی داستان به این نقطه ختم نخواهد شد و امیدواریم در آینده بتوانیم با<br />
انتشار مقالاتی دیگر با مزایای بکارگیری فریمورک فوق در برنامه های وب بطور کاملا&#8221;<br />
کاربردی آشنا شویم .</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part8-870830-42/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part7-870830-40/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part7-870830-40/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:30:32 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=40</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش تاکنون و در طی شش مقاله با مواردی نظیر شی XMLHttpRequest ، برخی الگوهای Ajax استفاده شده در زمان پیاده سازی برنامه های وب قدرتمند با توانائی ایجاد تعامل بیشتر ، معماری  ASP.NET AJAX  و سناریوهای مختلف پیاده سازی آشنا شدیم . در این بخش با استناد به موارد فوق با [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">تاکنون و در طی شش مقاله با مواردی نظیر شی XMLHttpRequest ، برخی  الگوهای <span lang="en-us">Ajax</span> استفاده شده در زمان پیاده سازی برنامه های  وب قدرتمند با توانائی ایجاد تعامل بیشتر ، معماری  ASP.NET AJAX  و  سناریوهای مختلف پیاده سازی آشنا شدیم .<br />
در این بخش با استناد به موارد فوق با نحوه استفاده از این فریمورک  آشنا خواهیم شد  و صفحات وب مبتنی بر <span lang="en-us">Ajax</span> را با  تبعیت از مدل پیاده سازی با محوریت سرویس دهنده ایجاد خواهیم کرد   .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"> <strong>مدل پیاده سازی با محوریت سرویس دهنده<br />
</strong></span>همانگونه که در <span style="font-family: Tahoma;"> <a style="font-family: Tahoma; font-size: 10pt;" href="http://www.srco.ir/Articles/DocView.asp?ID=561">بخش ششم</a></span> اشاره گردید ، در این مدل ، منطق برنامه و اکثر عناصر بخش رابط کاربر بر روی سرویس  دهنده باقی می مانند و در ادامه ، تغییرات مورد نیاز رابط کاربر برای برنامه مرورگر  ارسال می گردد ( در مقابل این که تغییرات از طریق اجرای اسکریپت های سمت سرویس  گیرنده ایجاد شوند) .<br />
برای آشنائی عملی با مدل فوق ، در ادامه یک نمونه مثال ساده و در عین حال کاربردی  را با یکدیگر دنبال می نمائیم . </span> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">مثال : ایجاد یک صفحه مبتنی بر <span lang="en-us">Ajax</span> با تمرکز بر روی پتانسیل های سمت سرویس دهنده فریمورک <span lang="en-us"> ASP. NET  Ajax</span><br />
</span></strong>در این مثال می خواهیم تعداد مقالاتی را که بر روی سایت  سخا روش و در هر یک از گروه های مختلف منتشر شده است ، به اطلاع ملاقات کنندگان  سایت برسانیم .برای سادگی کار ، فرض می شود  که تعداد مقالات منشتر شده بر روی  سایت از طریق بانک اطلاعاتی  بازیابی نخواهد شد و  در مقابل از یک کلاس  با نام <span lang="en-us">Maghalat</span> برای  بازیابی تعداد مقالات منشتر شده در هر گروه استفاده خواهیم کرد . کلاس فوق دارای  صرفا&#8221; یک متد با  <span lang="en-us">GetNumberOfMaghalat</span> است که وظیفه آن برگرداندن تعداد  مقالات منتشر شده در  هر گروه است .<br />
پس از آشنائی اولیه با صورت مسئله ،  مراحل زیر را برای پیاده سازی یک صفحه وب مبتنی بر <span lang="en-us">Ajax</span> با محوریت سرویس دهنده ، دنبال می نمائیم .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">مرحله اول : ایجاد سایت<br />
</span></strong>اولین مرحله در پیاده سازی هر نوع برنامه وب مبتنی بر <span lang="en-us">ASP. NET</span> ، ایجاد وب سایت اولیه است . بدین  منظور از برنامه ویژوال استودیو نسخه های ۲۰۰۵ و یا ۲۰۰۸ استفاده کرده ( و یا نسخه <span lang="en-us">Visual Web Developer </span> ) و برای وب سایت خود تمپلیت  ASP.NET AJAX-Enabled Web Site را انتخاب می کنیم . بدین ترتیب ، یک وب سایت با  قابلیت استفاده از اسمبلی <span lang="en-us"> ASP. NET AJAX</span> ( با  نام System.Web.Extensions.dll  ) از طریق <span lang="en-us">GAC</span> (  برگرفته شده از   Global Assembly Cache  )  ایجاد می گردد . این کار  همچنین باعث ایجاد یک فایل <span lang="en-us">web.config </span> پیچیده می  گردد که شامل تنظیمات اضافه دیگر برای ارتباط با فریمورک <span lang="en-us"> ASP. NET AJAX</span> است .<br />
شکل ۱ ، نحوه انتخاب تمپلیت ASP.NET AJAX-Enabled Web Site  را در زمان ایجاد  یک وب سایت نشان می دهد . </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax20.jpg" border="0" alt="introajax20  Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )"  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )" /></span></p>
<p><span style="font-size: x-small; font-family: Tahoma;">شکل ۱ : انتخاب تمپلیت ASP.NET AJAX-Enabled Web Site<br />
در زمان ایجاد یک وب سایت</span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">مرحله دوم : طراحی و پیاده سازی کلاس  <span lang="en-us">Maghalat</span><br />
</span></strong> <span lang="en-us">Maghalat</span> یک کلاس ساده است که دارای  صرفا&#8221; یک متد با نام <span lang="en-us">GetNumberOfMaghalat</span> است که گروه  مقاله را به عنوان پارامتر ورودی گرفته و تعداد مقالات منشتر شده در آن گروه را  برمی گرداند . بدین منظور از یک ساختار <span lang="en-us">Select Case</span> استفاده شده است تا بر اساس مقدار پارامتر ورودی ، یک عدد را بطور ایستا برگرداند (  برای سادگی کار نام گروه مقاله و تعداد آن مستقیما&#8221; در کد درج شده اند ) .<br />
شکل ۲ ، ساختار کلاس <span lang="en-us">Maghalat</span> را نشان می دهد .</span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/introajax21.jpg" border="0" alt="introajax21  Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )"  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )" /><br />
شکل ۲ : ساختار کلاس <span lang="en-us">Maghalat</span></span></span></p>
<p dir="rtl" align="right"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">کد زیر ، کلاس فوق به همراه متد مربوطه را نشان می دهد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="409" bordercolor="#c0c0c0">
<tbody>
<tr>
<td dir="rtl" width="407" height="20" bgcolor="#bfd5ea">
<p style="text-align: center;"><span style="font-family: Tahoma;"><span style="font-size: x-small;">کلاس </span> <span lang="en-us"><span style="font-size: x-small;">Maghalat.VB</span></span></span></p>
</td>
</tr>
<tr>
<td width="407" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Public</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Class</span></span><span style="font-size: xx-small; font-family: Tahoma;"> Maghalat<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">Public</span><span style="font-size: xx-small;"> <span lang="en-us"> </span></span></span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">Shared<span lang="en-us"> </span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">Function</span><span style="font-size: xx-small;"> <strong>Get</strong></span></span><strong><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us">NumberOfMaghalat</span></span></strong><span style="font-family: Tahoma;"><span style="font-size: xx-small;">(</span><span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"> ArticleGroup </span><span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">String</span><span style="font-size: xx-small;">) </span> <span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span></span> <span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Integer<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"> <span lang="en-us"> </span>Dim</span><span style="font-size: xx-small;"> Count </span> <span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #0000ff;">Integer</span></span><span style="font-size: xx-small; font-family: Tahoma;"> = 0<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Select</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Case</span></span><span style="font-size: xx-small; font-family: Tahoma;"> ArticleGroup<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Case</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #800000;"> <span style="font-family: Tahoma;">&#8220;Software&#8221;<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span>Count = 11<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Case</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #800000;"> <span style="font-family: Tahoma;">&#8220;Hardware&#8221;<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span>Count = 12<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Case</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #800000;"> <span style="font-family: Tahoma;">&#8220;Security&#8221;<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span>Count = 13<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Case</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #800000;"> <span style="font-family: Tahoma;">&#8220;Network&#8221;<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span>Count = 14<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>Case</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #800000;"> <span style="font-family: Tahoma;">&#8220;other&#8221;<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span>Count = 15<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;"><span lang="en-us"> </span>End</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Select<br />
</span></span><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us"> </span></span><span style="font-size: x-small; font-family: Tahoma;"><span style="font-size: xx-small; font-family: Tahoma;"><strong>Get</strong></span><strong><span style="font-size: xx-small; font-family: Tahoma;"><span lang="en-us">NumberOfMaghalat</span></span></strong></span><span style="font-size: xx-small; font-family: Tahoma;"> = Count<br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">End</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">Function<br />
End</span><span style="font-size: xx-small; font-family: Tahoma;"> </span><span style="font-size: xx-small; color: #0000ff;"> <span style="font-family: Tahoma;">Class</span></span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">مرحله سوم : ایجاد یک صفحه وب <span lang="en-us">ASP.NET</span><br />
</span></strong>در زمان ایجاد وب سایت ، بطور اتوماتیک یک صفحه <span lang="en-us"> Default.aspx</span> نیز ایجاد می گردد . کد اولیه این صفحه به صورت زیر است .</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="507" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="505" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small;"><span style="font-family: Tahoma;">&lt;%</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">@</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #800000;">Page</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #ff0000;">Language</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;VB&#8221;</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #ff0000;">AutoEventWireup</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;true&#8221;</span><span style="font-size: xx-small;"> %&gt;<br />
</span><span style="font-size: xx-small; color: #0000ff;">&lt;!</span><span style="font-size: xx-small; color: #800000;">DOCTYPE</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #ff0000;">html</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #ff0000;">PUBLIC</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #0000ff;">&#8220;-//W3C//DTD XHTML 1.1//EN&#8221;</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;"> &#8220;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&#8221;&gt;<br />
&lt;</span><span style="font-size: xx-small; color: #800000;">html</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #ff0000;">xmlns</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>&#8221; </span><span lang="en-us"><span style="font-size: xx-small; color: #ff0000;">dir</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;rtl&#8221;</span></span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-size: xx-small; color: #800000;">head</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #ff0000;">runat</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;server&#8221;&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #800000;">title</span><span style="font-size: xx-small; color: #0000ff;">&gt;تست  شماره یک /</span><span style="font-size: xx-small; color: #800000;">title</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: xx-small; color: #800000;">head</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-size: xx-small; color: #800000;">body</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #800000;">form</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #ff0000;">id</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;form1&#8243;</span><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #ff0000;">runat</span><span style="font-size: xx-small; color: #0000ff;">=&#8221;server&#8221;&gt;<br />
<span lang="en-us"> </span></span><span style="font-size: x-small; color: #0000ff;"><strong>&lt;</strong></span><strong><span style="font-size: x-small; color: #800000;">asp</span><span style="font-size: x-small; color: #0000ff;">:</span><span style="font-size: x-small; color: #800000;">ScriptManager</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">ID</span><span style="font-size: x-small; color: #0000ff;">=&#8221;ScriptManager1&#8243;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">runat</span><span style="font-size: x-small; color: #0000ff;">=&#8221;server&#8221;</span><span style="font-size: x-small;"> </span></strong><span style="font-size: x-small; color: #0000ff;"><strong>/&gt;</strong></span><span style="font-size: xx-small; color: #0000ff;"><br />
<span lang="en-us"> </span>&lt;</span><span style="font-size: xx-small; color: #800000;">div</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;/</span><span style="font-size: xx-small; color: #800000;">div</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
<span lang="en-us"> </span>&lt;/</span><span style="font-size: xx-small; color: #800000;">form</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: xx-small; color: #800000;">body</span><span style="font-size: xx-small; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: xx-small; color: #800000;">html</span><span style="font-size: xx-small; color: #0000ff;">&gt;</span></span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">تنها تفاوت صفحه فوق با  سایر صفحات <span lang="en-us">Default.aspx</span> ایجاد شده توسط ویژوال استودیو ، اضافه شدن کنترل ScriptManager است . همانگونه که قبلا&#8221; اشاره گردید ، کنترل فوق به عنوان مغز متفکر یک صفحه مبتنی بر <span lang="en-us">Ajax</span> ایفای وظیفه می نماید . کنترل فوق  ، مسئولیت توزیع کدهای سمت سرویس گیرنده برای مرورگر و مدیریت بهنگام سازی جزئی ( نه  تمامی صفحه ) صفحه را برعهده دارد .<br />
پس از ایجاد اولیه صفحه  وب ، از کنترل های دیگری برای طراحی بخش رابط کاربر متناسب با خواسته های موجود  استفاده می کنیم . در این مثال خاص از یک کنترل <span lang="en-us">ListBox</span> جهت نمایش گروه  مقاله با قابلیت <span lang="en-us">AutoPostBack</span> و یک کنترل  Label به منظور نمایش نتایج استفاده شده است  .</span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<div><span style="font-size: small; font-family: Times New Roman;"> <span style="font-size: xx-small; font-family: Tahoma;"> </span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="534" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="532" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">&lt;%@</span> <span style="font-size: xx-small; font-family: Tahoma; color: #800000;">Page</span> <span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">Language</span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">=&#8221;VB&#8221;</span> <span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">AutoEventWireup</span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">=&#8221;true&#8221;</span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">%&gt;</span><br />
<span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">&lt;!</span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;">DOCTYPE</span> <span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">html</span> <span style="font-size: xx-small; font-family: Tahoma; color: #ff0000;">PUBLIC</span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;">&#8220;-//W3C//DTD XHTML 1.1//EN&#8221;</span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> &#8220;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&#8221;&gt;<br />
</span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> &lt;</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">html</span> <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">=&#8221;http://www.w3.org/1999/xhtml&#8221;</span> <span style="color: #ff0000;">dir</span><span style="color: #0000ff;">=&#8221;rtl&#8221;&gt;<br />
&lt;</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">head</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;&gt;<br />
&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span>تست  شماره یک <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">form</span> <span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;form1&#8243;</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ScriptManager</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;ScriptManager1&#8243;</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;</span> <span style="color: #0000ff;">/&gt;<br />
&lt;</span><span style="color: #800000;">div</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;text-align: center&#8221;&gt;<br />
&lt;</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">colspan</span><span style="color: #0000ff;">=&#8221;3&#8243;&gt;<br />
&lt;</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;</span><span style="color: #ff0000;">&amp;nbsp;</span>ایجاد  یک صفحه وب مبتنی بر Ajax<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span> <span style="color: #0000ff;">/&gt;<br />
</span>(( پیاده سازی با محوریت پتانسیل های سمت سرویس دهنده فریمورک ASP.NET Ajax  )) <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">br</span> <span style="color: #0000ff;">/&gt;<br />
&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  150px&#8221;&gt;<br />
</span>لطفا&#8221; یک گروه مقاله را انتخاب نمائید<br />
<span style="color: #0000ff;"> &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">align</span><span style="color: #0000ff;">=&#8221;right&#8221;</span> <span style="color: #ff0000;">colspan</span><span style="color: #0000ff;">=&#8221;2&#8243;</span> <span style="color: #ff0000;">dir</span><span style="color: #0000ff;">=&#8221;rtl&#8221;&gt;<br />
<strong> &lt;</strong></span><strong><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListBox</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;<span lang="en-us">ArticleGroup</span>&#8220;</span></strong> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;</span> <strong> <span style="color: #ff0000;">AutoPostBack</span><span style="color: #0000ff;">=&#8221;True&#8221;</span></strong> <span style="color: #ff0000;">Font-Names</span><span style="color: #0000ff;">=&#8221;Tahoma&#8221;<br />
</span><span style="color: #ff0000;">Font-Size</span><span style="color: #0000ff;">=&#8221;Small&#8221;</span> <span style="color: #ff0000;">ForeColor</span><span style="color: #0000ff;">=&#8221;#C04000&#8243;&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt; </span> </span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> نرم افزار  &lt;/</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt; </span> </span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> سخت افزار  &lt;/</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt; </span> </span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> امنیت اطلاعات  &lt;/</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;</span></span><span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> شبکه  &lt;/</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt; </span> </span> <span style="font-size: xx-small; font-family: Tahoma; color: #0000ff;"> سایر &lt;/</span><span style="font-size: xx-small; font-family: Tahoma;"><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListBox</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  150px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  100px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  131px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">colspan</span><span style="color: #0000ff;">=&#8221;3&#8243;</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;height: 18px&#8221;&gt;<br />
<strong>&lt;</strong></span><strong><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">Label</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;LblFinalResult&#8221;</span></strong> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;</span> <span style="color: #ff0000;">Font-Names</span><span style="color: #0000ff;">=&#8221;Tahoma&#8221;</span> <span style="color: #ff0000;">Font-Size</span><span style="color: #0000ff;">=&#8221;Small&#8221;<br />
</span><span style="color: #ff0000;">ForeColor</span><span style="color: #0000ff;">=&#8221;Black&#8221;</span> <span style="color: #ff0000;">Text</span><span style="color: #0000ff;">=&#8221;Label&#8221;&gt;&lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">span</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></span></span></td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">از <span lang="en-us"> ListBox</span> برای نمایش لیست گروه مقالات استفاده شده است .  مقدار خصلت <span lang="en-us">AutoPostBack</span> کنترل فوق  ،  <span lang="en-us"> True</span> در نظر گرفته شده است تا بلافاصله پس از انتخاب یکی از آیتم های موجود در لیست  ، یک <span lang="en-us">PostBack</span> به سمت سرویس دهنده  تحقق یابد . این کار از طریق رویداد   SelectedIndexChanged  محقق  خواهد شد که متعاقب آن روتین  ArticleGroup_SelectedIndexChanged فراخوانده  می شود . در  انتهای صفحه از یک کنترل <span lang="en-us">Label</span> استفاده شده است تا به  کمک آن بتوان نتایج را در خروجی نمایش داد .<br />
از طریق کد نوشته شده در روتین  ArticleGroup_SelectedIndexChanged ، انتخاب کاربر تشخیص و متد مربوط به کلاس <span lang="en-us">maghalat</span> صدا زده می شود تا پس از برگرداندن نتایج ،  ماحصل کار از طریق کنترل <span lang="en-us">Label</span> نمایش داده شود .<br />
کد روتین ArticleGroup_SelectedIndexChanged در جدول زیر نشان داده شده است . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<div><span style="font-size: small; font-family: Times New Roman;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="500" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="498" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Protected</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Sub</span><span style="font-size: xx-small;"> ArticleGroup_SelectedIndexChanged(</span><span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"> sender </span><span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #0000ff;">Object</span><span style="font-size: xx-small;">, </span> <span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"> e </span> <span style="font-size: xx-small; color: #0000ff;">As</span></span><span style="font-size: xx-small; font-family: Tahoma;"> System.EventArgs)</p>
<p><span lang="en-us"> </span>LblFinalResult.Text =  Maghalat.GetNumberOfMaghalat(ArticleGroup.SelectedValue)<br />
<span lang="en-us"> </span>LblFinalResult.Text +=</p>
<p></span> <span style="font-size: xx-small; font-family: Tahoma; color: #800000;">&#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;مقاله تاکنون در گروه &#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += ArticleGroup.SelectedValue<br />
<span lang="en-us"> </span>LblFinalResult.Text += </span> <span style="font-size: xx-small; font-family: Tahoma; color: #800000;">&#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;برروی سایت سخا روش منشتر شده است &#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"><br />
</span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">End</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Sub</span></span></td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">مررحله چهارم : اجرای  برنامه و بررسی  نتایج<br />
</span></strong>پس از اجرای  برنامه فوق از طریق مرورگر و انتخاب یک گروه مقاله ، خروجی آن به صورت  زیر نمایش داده می شود .</span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax022.jpg" border="0" alt="introajax022  Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )"  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )" /></span></p>
<p><span style="font-size: x-small; font-family: Tahoma;">شکل ۳ : نمایش تعداد مقالات منتشر شده در هر گروه </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">عملکرد برنامه فوق  متناسب با انتظار ما است : با انتخاب یک گروه مقاله ، تعداد مقالات منتشر شده در آن  گروه در قسمت پائین صفحه نمایش داده می شود . تنها مسئله مهم و قابل توجه  بازخوانی مجدد تمامی صفحه پس از هر مرتبه ای است که کاربر یک گروه مقاله را انتخاب  می نماید . برای حل این موضوع می توان از کنترل جادوئی <span lang="en-us">UpdatePanel</span> استفاده کرد . شکل زیر نحوه استفاده از کنترل فوق در  مثال اشاره شده را نشان می دهد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<div><span style="font-size: small; font-family: Times New Roman;"> <span style="font-size: x-small; font-family: Tahoma;"> </span></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="502" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="500" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small;">&#8230;</span><span style="font-size: xx-small; font-family: Tahoma;"><br />
<strong><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">UpdatePanel</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;UpdatePanel1&#8243;</span> <span style="color: #ff0000;">runat</span></strong><span style="color: #0000ff;"><strong>=&#8221;server&#8221;&gt;</strong><br />
<strong> &lt;</strong></span><strong><span style="color: #800000;">ContentTemplate</span> <span style="color: #0000ff;">&gt;</span></strong><span style="font-size: x-small; color: #0000ff;"><br />
</span><span style="color: #0000ff;"><strong> &lt;</strong></span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListBox</span><strong> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;<span lang="en-us">ArticleGroup</span>&#8220;</span></strong> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;</span> <strong> <span style="color: #ff0000;">AutoPostBack</span><span style="color: #0000ff;">=&#8221;True&#8221;</span></strong> <span style="color: #ff0000;">Font-Names</span><span style="color: #0000ff;">=&#8221;Tahoma&#8221;<br />
</span><span style="color: #ff0000;">Font-Size</span><span style="color: #0000ff;">=&#8221;Small&#8221;</span> <span style="color: #ff0000;">ForeColor</span><span style="color: #0000ff;">=&#8221;#C04000&#8243;&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;  <span style="font-size: x-small; font-family: Tahoma;"> نرم افزار</span> &lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;  <span style="font-size: x-small; font-family: Tahoma;"> سخت افزار</span> &lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;  <span style="font-size: x-small; font-family: Tahoma;"> امنیت اطلاعات</span> &lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<span style="font-size: x-small; font-family: Tahoma;"> شبکه</span> &lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;   <span style="font-size: x-small; font-family: Tahoma;"> سایر</span> &lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListItem</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">ListBox</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  150px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  100px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;width:  131px&#8221;&gt; &lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
&lt;</span><span style="color: #800000;">td</span> <span style="color: #ff0000;">colspan</span><span style="color: #0000ff;">=&#8221;3&#8243;</span> <span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#8221;height: 18px&#8221;&gt;<br />
<strong>&lt;</strong></span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">Label</span><strong> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">=&#8221;LblFinalResult&#8221;</span></strong> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">=&#8221;server&#8221;</span> <span style="color: #ff0000;">Font-Names</span><span style="color: #0000ff;">=&#8221;Tahoma&#8221;</span> <span style="color: #ff0000;">Font-Size</span><span style="color: #0000ff;">=&#8221;Small&#8221;<br />
</span><span style="color: #ff0000;">ForeColor</span><span style="color: #0000ff;">=&#8221;Black&#8221;</span> <span style="color: #ff0000;">Text</span><span style="color: #0000ff;">=&#8221;Label&#8221;&gt;&lt;/</span><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;<br />
&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;<br />
</span><strong><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ContentTemplate</span></strong><span style="color: #0000ff;"><strong>&gt;</strong><br />
<strong>&lt;/</strong></span><strong><span style="color: #800000;">asp</span><span style="color: #0000ff;">:</span><span style="color: #800000;">UpdatePanel</span></strong><span style="color: #0000ff;"><strong>&gt;<br />
</strong></span></span> <span style="font-size: x-small; font-family: Tahoma;"> <span style="font-size: xx-small; font-family: Tahoma;"> &#8230;</span></span></td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;">به صورت پیش فرض ، محتویات موجود  بین تگ <span lang="en-us">ContentTemplate</span> مربوط به کنترل <span lang="en-us"> UpdatePanel</span> در زمان بروز یک <span lang="en-us">postback</span> غیرهمزمان بطور اتوماتیک بهنگام خواهند شد. <span lang="en-us">Postback</span> فوق بطور  غیرهمزمان اتفاق می افتد و رفتار آن با <span lang="en-us">postback</span> عادی  متفاوت است . ( در <span lang="en-us">postback</span> عادی  ، یک درخواست  برای سرویس دهنده ارسال می گردد تا پس از انجام پردازش های ضروری در سمت سرویس  دهنده ، رابط کاربر جدید برای مرورگر ارسال گردد ) .<br />
و اما یک سوال مهم که ممکن است در ذهن شما مطرح شده باشد . یک <span lang="en-us"> postback</span> غیرهمزمان چیست ؟ اکثر پیاده کنندگان برنامه های وب به کمک فناوری <span lang="en-us">ASP.NET</span> صرفا&#8221; با یک نوع <span lang="en-us">postback</span> آشنا می باشند . با بکارگیری <span lang="en-us">UpdatePanel</span> ، صفحه روال  طبیعی  حیات خود را طی می نماید ، ولی <span lang="en-us">PostBack</span> به  عنوان یک <span lang="en-us">postBack</span> غیرهمزمان شناخته می شود . که در آن   از روش های هوشمندانه تری استفاده می گردد و صفحه با مدلی متفاوت تر در حین چرخه  حیات خود پردازش می گردد .<br />
در ادامه ،  همزمان با اجرای صفحه و انتخاب یک گروه مقاله ، بخش رابط کاربر  بطور اتوماتیک و بدون نیاز به بازخوانی کامل صفحه بهنگام خواهد شد . بطور خلاصه ،  با اضافه کردن یک مجموعه اندک از کنترل های سرویس دهنده بر روی صفحه ، از بازخوانی  مجدد تمامی صفحه ممانعت بعمل آمده و همچنین  در تعامل کاربر با برنامه  وقفه ای ایجاد نخواهد شد  . </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><strong><span style="color: #800000;"> مرحله پنجم : بهینه  سازی خروجی و ضرورت استفاده از  کنترل <span lang="en-us">UpdateProgress</span><br />
</span></strong>در صورتی  که با یک خط سرعت پائین برنامه فوق اجراء گردد ، مشاهده  خواهیم کرد که زمان نسبتا&#8221; زیادی بطول خواهد انجامید تا نتایج نمایش داده شود . این  موضوع ( تاخیر محسوس در مشاهده خروجی کار  ) باعث می شود  کاربری که  برنامه را اجراء کرده است ، نگران عملکرد صحیح برنامه باشد و اینگونه برداشت کند که  برنامه دچار اختلال شده است .<br />
قبل از معرفی <span lang="en-us">Ajax</span> ، برای صفحاتی که بازخوانی مجدد  می گردیدند از علامتی استفاده می شد که کاربران متوجه این موضوع می شدند که فرآیندی  در حال انجام است و یا درخواست آنان مورد پذیرش قرار گرفته شده است . هم اینک با  توقف <span lang="en-us">postback</span> طبیعی ، کاربران متوجه این موضوع نمی شوند  که عملیاتی در شرف انجام است تا این که فرآیند مورد نظر به اتمام برسد ( از علامتی  برای نشان دادن این که فرآیندی در حال انجام است ، استفاده نمی شود ) . در چنین  مواردی ، کاربران نیازمند یک فیدبک دیداری ( ویژوال )  هستند تا نسبت به انجام  یک فرآیند در پس زمینه آگاه گردند .<br />
کنترل <span lang="en-us">UpdateProgress</span> یک راه حل جهت مشکل فوق را ارائه  می نماید . هدف کنترل فوق ، نشان دادن  یک نشانه دیداری  به کاربران در زمان بروز یک <span lang="en-us">postback</span> غیرهمزمان است . بدین  منظور می توان کد زیر را به انتهای صفحه اضافه نمود .<br />
</span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: small; font-family: NewBaskerville-Roman;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: small; font-family: NewBaskerville-Roman;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="470" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="468" height="20" bgcolor="#f4f4ff"><span style="color: #0000ff;"> </span></p>
<p dir="ltr"><span style="color: #0000ff;"><span style="font-size: x-small; font-family: Tahoma;">&lt;</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">asp</span><span style="font-size: x-small; color: #0000ff;">:</span><span style="font-size: x-small; color: #800000;">UpdateProgress</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">ID</span><span style="font-size: x-small; color: #0000ff;">=&#8221;UpdateProgress1&#8243;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">runat</span><span style="font-size: x-small; color: #0000ff;">=&#8221;server&#8221;&gt;<br />
&lt;</span><span style="font-size: x-small; color: #800000;">ProgressTemplate</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-size: x-small; color: #800000;">img</span><span style="font-size: x-small;"> </span> <span style="font-size: x-small; color: #ff0000;">src</span><span style="font-size: x-small; color: #0000ff;">=&#8221;  images/ajax1.gif &#8220;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #0000ff;"> /&gt;</span><span style="font-size: x-small;"> <span style="color: #ff0000;"> </span>در حال بارگذاری &#8230;<br />
</span><span style="font-size: x-small; color: #0000ff;"> &lt;/</span><span style="font-size: x-small; color: #800000;">ProgressTemplate</span><span style="font-size: x-small; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; color: #800000;">asp</span><span style="font-size: x-small; color: #0000ff;">:</span><span style="font-size: x-small; color: #800000;">UpdateProgress</span></span><span style="color: #0000ff;"><span style="font-size: x-small; font-family: Tahoma;">&gt;</span></span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;">پس از اجرای برنامه ( با لحاظ کردن کنترل <span lang="en-us">UpdateProgress</span> )  ، پس از انتخاب یک  گروه مقاله توسط کاربر یک نشانه دیداری نمایش داده خواهد شد . شکل ۴ ، خروجی برنامه  را به همراه نشانه دیداری نشان می دهد . </span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax023.jpg" border="0" alt="introajax023  Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )"  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش هفتم )" /></span></p>
<p>شکل ۴ : ارائه یک نشانه دیداری در زمان تحقق یک <span lang="en-us">postback</span> غیرهمزمان</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;">در صورت اجرای برنامه فوق بر  روی ماشین محلی ،  به احتمال فراوان فرآیند بهنگام سازی صفحه به سرعت انجام خواهد شد و عملکرد کنترل <span lang="en-us">UpdateProgress</span> مشاهده نخواهد شد . برای کاهش سرعت و  مشاهده  نشانه دیداری  می توان سرعت آن را به صورت زیر کاهش داد .</span></p>
<div><span style="font-size: small; font-family: Times New Roman;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="500" bordercolor="#c0c0c0">
<tbody>
<tr>
<td dir="ltr" width="498" height="20" bgcolor="#f4f4ff"><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Protected</span></span><span style="font-family: Tahoma;"><span style="font-size: xx-small;"> </span><span style="font-size: xx-small; color: #0000ff;">Sub</span><span style="font-size: xx-small;"> ArticleGroup_SelectedIndexChanged(</span><span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"> sender </span><span style="font-size: xx-small; color: #0000ff;">As</span><span style="font-size: xx-small;"> </span> <span style="font-size: xx-small; color: #0000ff;">Object</span><span style="font-size: xx-small;">, </span> <span style="font-size: xx-small; color: #0000ff;">ByVal</span><span style="font-size: xx-small;"> e </span> <span style="font-size: xx-small; color: #0000ff;">As</span></span><span style="font-size: xx-small; font-family: Tahoma;"> System.EventArgs)</p>
<p><span lang="en-us"> </span>LblFinalResult.Text =  Maghalat.GetNumberOfMaghalat(ArticleGroup.SelectedValue)<br />
<span lang="en-us"> </span>LblFinalResult.Text +=</p>
<p></span> <span style="font-size: xx-small; font-family: Tahoma; color: #800000;">&#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;مقاله تاکنون در گروه &#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += ArticleGroup.SelectedValue<br />
<span lang="en-us"> </span>LblFinalResult.Text += </span> <span style="font-size: xx-small; font-family: Tahoma; color: #800000;">&#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> LblFinalResult.Text += </span><span style="font-size: xx-small; font-family: Tahoma; color: #800000;"> &#8220;برروی سایت سخا روش منشتر شده است &#8221;<br />
<span lang="en-us"> </span></span><span style="font-size: xx-small; font-family: Tahoma;"> </span> <span style="font-size: x-small; font-family: Tahoma;"><strong>System.Threading.Thread.Sleep(2000)</strong></span><span style="font-family: Tahoma;"><span style="font-size: xx-small; color: #0000ff;">End</span><span style="font-size: xx-small;"> </span></span><span style="font-size: xx-small; color: #0000ff;"><span style="font-family: Tahoma;">Sub</span></span></td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;">توجه داشته باشید که نمی بایست از متد <span lang="en-us">Sleep</span> در کد تولید شده نهائی استفاده کرد . در مثال فوق  با فرض این که برنامه بر روی یک ماشین محلی اجراء شده است و هدف مشاهده عملکرد  کنترل <span lang="en-us">UpdateProgress</span> است ، از کنترل فوق استفاده شده  است . </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="color: #336699;"><strong>خلاصه<br />
</strong></span>در این مقاله با نحوه  ایجاد یک صفحه مبتنی بر Ajax با تمرکز بر  روی پتانسیل های سمت سرویس دهنده فریمورک     ASP. NET Ajax آشنا شدیم .  بدین  منظور  یک نمونه مثال ساده را بررسی کردیم که در آن از کنترل های  <span lang="en-us">UpdatePanel</span> و  <span lang="en-us">UpdateProgress</span> به منظور نشان دادن قابلیت <span lang="en-us">Ajax</span> در صفحات <span lang="en-us">ASP.NET</span> استفاده شده بود .<br />
در بخش بعد با نحوه ایجاد یک صفحه مبتنی بر Ajax با تمرکز بر روی پتانسیل های سمت  سرویس گیرنده فریمورک         ASP. NET Ajax ، آشنا خواهیم شد . </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part7-870830-40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش ششم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part6-870830-38/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part6-870830-38/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:29:26 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=38</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش در بخش پنجم ضمن اشاره به ضرورت استفاده از یک فریمورک در برنامه های وب مبتنی بر Ajax ، با عناصر موجود در سمت سرویس دهنده و سرویس گیرنده  فریمورک ASP.NET AJAX آشنا شدیم . در این بخش با نحوه تعامل این عناصر در جهت تامین خواسته پیاده کنندگان برنامه های [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در </span> <span style="font-size: x-small; font-family: Tahoma;"> <a style="font-family: Tahoma; font-size: 10pt;" href="http://www.srco.ir/Articles/DocView.asp?ID=559"> بخش پنجم</a> ضمن اشاره به ضرورت استفاده از یک فریمورک در برنامه های  وب مبتنی بر <span lang="en-us">Ajax</span> ، با عناصر موجود در سمت سرویس دهنده و  سرویس گیرنده  فریمورک ASP.NET AJAX آشنا شدیم . در<span lang="en-us"> </span>این بخش با نحوه تعامل این عناصر در جهت تامین خواسته پیاده کنندگان برنامه  های وب آشنا خواهیم شد . بدین منظور به بررسی دو سناریوی  مختلف خواهیم پرداخت : مدل پیاده سازی با محوریت سرویس گیرنده  و مدل پیاده  سازی با محوریت سرویس دهنده .<br />
طراحی انعطاف پذیر معماری <span lang="en-us">ASP. NET Ajax</span> ، دو رویکرد و  یا مدل پیاده سازی مختلف را ارائه می نماید . به اولین سناریو که در سمت سرویس  گیرنده پیاده سازی می گردد ، &#8220;مدل پیاده سازی با محوریت سرویس گیرنده&#8221;  و به دومین رویکرد  که مبتنی بر  سرویس دهنده است  ، &#8220;مدل پیاده سازی با  محوریت سرویس دهنده &#8221; گفته می شود .<br />
قبل از هر چیز لازم است با نحوه عملکرد هر یک از  مدل های فوق بیشتر آشنا  شویم تا بتوانیم از هر یک در زمان مناسب استفاده کنیم . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong>مدل پیاده سازی با محوریت سرویس گیرنده<br />
</strong> </span>در این مدل ، لایه <span lang="en-us">Presentation</span> متاثر از اسکریپت های سمت سرویس گیرنده با بکارگیری <span lang="en-us">DHTML </span> و جاوا اسکریپت است. این بدان معنی است که یک برنامه با هوشمندی و تعامل بیشتر  ،   از طریق سرویس دهنده برای سرویس گیرنده ارسال می گردد ( در زمان استقرار صفحه در  حافظه برای مرتبه اول ) . پس از آن ، تعامل بین برنامه مرورگر و سرویس دهنده محدود  به بازیابی داده مورد نیاز جهت بهنگام سازی صفحه است . در این مدل کاربران با  برنامه تعامل  زیادی خواهند داشت (  برنامه ای که در سمت سرویس گیرنده و در مرورگر کاربر اجراء شده است ) .<br />
شکل ۱ ، مدل پیاده سازی با محوریت سرویس گیرنده  را نشان می دهد . </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/introajax18.jpg" border="0" alt="introajax18 Ajax : تحولی بزرگ در عرصه وب ( بخش ششم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش ششم ) " /><br />
شکل ۱ : مدل پیاده سازی  با محوریت سرویس گیرنده </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">مدل فوق برای برنامه هائی که  اشتیاق زیادی  به استفاده همه جانبه  از ویژگی های <span lang="en-us">DHTML</span> دارند مناسب  تر می باشد ( نظیر برنامه های  mashup ).  برنامه های  mashup ، برنامه های وبی می  باشند که محتویات خود را از بیش از یک منبع خارجی دریافت و  آنها را با یک  مکانیزم مطلوب در اختیار کاربران قرار می دهند . سایت  Pageflakes.com یک  نمونه در این رابطه است . این نوع سایت ها در تعامل مستمر با کاربر می باشند . با  توجه به این که لازم است از یک طرف صفحه سبک و با کارائی مطلوب باشد و از طرف دیگر  از منابع سمت سیستم بطور هوشمندانه استفاده  گردد ، پیاده سازی این نوع برنامه  ها با محوریت سرویس گیرنده ، یک گزینه مطلوب می باشد.</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong>مدل پیاده سازی با محوریت سرویس دهنده<br />
</strong></span>در این مدل  ، منطق برنامه و اکثر عناصر بخش رابط کاربر  بر روی سرویس دهنده باقی می مانند .  در ادامه ، تغییرات مورد نیاز رابط کاربر  برای برنامه مرورگر ارسال می گردد ، در  مقابل این که تغییرات از طریق اجرای اسکریپت های سمت سرویس گیرنده ایجاد شوند  .  رویکرد فوق ما را به یاد مدل سنتی صفحات <span lang="en-us">ASP.NET</span> می  اندازد . مدلی که بر اساس آن ، سرویس دهنده  بخش رابط کاربر  را در هر مرتبه <span lang="en-us">postback</span> ایجاد و آن را برای مرورگر و به منظور تفسیر و  نمایش یک صفحه جدید ارسال می نماید .<br />
تفاوت مدل فوق  با مدل سنتی صفحات <span lang="en-us"> ASP. NET</span> در  این است که صرفا&#8221;  قسمت هائی از بخش رابط کاربر که  می بایست تفسیر گردند برای برنامه  مرورگر ارسال می  شوند ( در مقابل تمام صفحه ) . مهمترین دستاورد رویکرد فوق ،  بهبود محسوس میزان تعامل و تاخیر در برنامه های وب است .<br />
شکل ۲ ، ماهیت مدل پیاده سازی با  محوریت سرویس دهنده را نشان می دهد . </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/introajax19.jpg" border="0" alt="introajax19 Ajax : تحولی بزرگ در عرصه وب ( بخش ششم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش ششم ) " /><br />
شکل ۲  : مدل پیاده سازی با محوریت سرویس دهنده </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">رویکرد فوق برای بسیاری از پیاده  کنندگان <span lang="en-us">ASP. NET</span> جالب است . چراکه در این مدل به پیاده  کنندگان امکان نگهداری هسته رابط کاربر  به همراه منطق برنامه بر روی سرویس دهنده  داده می شود .عدم تاثیر پذیری این نوع برنامه ها از عملیاتی نظیر غیرفعال کردن جاوا  اسکریپت در مرورگر ، باعث شده است که ادامه حیات و سرویس دهی آنها مستقل از  پارامترهای تاثیرگذار در سمت سرویس گیرنده باشد .<br />
در زمان کار با کنترل هائی نظیر <span lang="en-us"> GridView</span> و <span lang="en-us">Repeater</span> در <span lang="en-us">ASP. NET</span> ، مدل فوق ساده ترین و مطمئن ترین روش را ارائه می نماید . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"><strong> اهداف  <span lang="en-us">ASP. NET Ajax</span><br />
</strong></span>پس از آشنائی اولیه با معماری و برخی از  ویژگی های  <span lang="en-us">ASP. NET Ajax</span> ، بد نیست به اهداف و  دستاوردهای این فریمورک برای پیاده کنندگان برنامه های وب نیز اشاره ای داشته باشیم  . </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;"> استفاده ساده ،  فریمورکی با کارآئی بالا </span></strong>: پیاده کنندگان برنامه های وب تمایل دارند که به سادگی و با صرف وقت  اندک بتوانند از پتانسیل های <span lang="en-us">Ajax</span> در برنامه های خود  استفاده نمایند . فریمورک <span lang="en-us">ASP. NET Ajax</span> با ارائه یک کتابخانه قدرتمند  در سمت سرویس گیرنده و یک مجموعه از کنترل های سرویس دهنده این امکان را در اختیار  پیاده کنندگان برنامه های وب قرار می دهد که بتوانند به سادگی از امکانات فوق در  جهت تامین خواسته های خود ( برنامه های گذشته و برنامه های جدید )  استفاده  نمایند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">یکپارچگی مدل برنامه نویسی سرویس دهنده </span></strong>: کنترل  های سرویس دهنده ارائه شده به همراه فریمورک <span lang="en-us">ASP. NET Ajax</span> برای پیاده کنندگان برنامه های وب یک  الگوی کاملا&#8221; شناخته شده می باشد . چراکه پیش از این پیاده کنندگان از کتترل های  سرویس دهند متعددی در برنامه های وب <span lang="en-us">ASP. NET</span> استفاده  کرده اند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">عناصر و ابزارهائی با کلاس جهانی </span></strong>: عناصر و  ابزارهائی که بر روی فریمورک ایجاد شده اند ، نه تنها قابلیت و توانمندهای فریمورک  را توسعه داده اند ، بلکه مجموعه ای از ابزارهای قدرتمند  ( نظیر اشکال زدائی  ، <span lang="en-us">tracing</span> و <span lang="en-us">profiling</span> )    را در اختیار جامعه بزرگ پیاده کنندگان قرار می دهد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">حمایت از پلت فرم های متعدد </span></strong>: حمایت در <span lang="en-us">IE</span> ، فایرفاکس  ، <span lang="en-us">Safari</span> و سایر مرورگرها این اطمینان را ایجاد می نماید  که در زمان کار با مرورگرهای مختلف درگیر مشکلات  مربوطه نخواهیم شد . </span></p>
</li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">سادگی ، قابلیت توسعه ، ابزارهای قدرتمند و وجود هزاران پیاده کننده  از مشخصه های مثبت فریمورک <span lang="en-us">ASP. NET Ajax</span> محسوب می گردد. </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">خلاصه<br />
</span></strong>تاکنون و در طی شش مقاله با مواردی نظیر شی XMLHttpRequest ، برخی  الگوهای <span lang="en-us">Ajax</span> استفاده شده در زمان پیاده سازی برنامه های  وب قدرتمند با توانائی ایجاد تعامل بیشتر ، معماری  ASP.NET AJAX  و  سناریوهای مختلف پیاده سازی آشنا شدیم .<br />
در بخش بعد با استناد به موارد فوق با نحوه استفاده از این فریمورک آشنا خواهیم شد  و صفحاتی را  ایجاد خواهیم کرد که در آنها از <span lang="en-us">Ajax</span> استفاده شده باشد. </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part6-870830-38/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش پنجم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part5-870830-36/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part5-870830-36/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:28:30 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=36</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش پس از آشنائی با  اصول اولیه Ajax در طی چهار مقاله ، پیاده کنندگانی که علاقه مند به استفاده از این فناوری در برنامه های وب می باشند این پرسش را مطرح می نمایند که آیا برای استفاده از پتانسیل های Ajax می بایست از یک فریمورک و یا toolkit خاص [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">پس از آشنائی با   اصول اولیه <span lang="en-us">Ajax</span> در طی چهار مقاله ، پیاده کنندگانی که  علاقه مند به استفاده از این فناوری در برنامه های وب می باشند این پرسش را مطرح می  نمایند که آیا برای استفاده از پتانسیل های <span lang="en-us">Ajax</span> می  بایست از یک فریمورک و یا <span lang="en-us">toolkit</span> خاص استفاده کرد ؟ در  ادامه ضمن پاسخ به این سوال ،<span lang="en-us"> </span>به بررسی معماری <span lang="en-us">ASP.NET Ajax</span> خواهیم پرداخت .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><strong><span style="font-size: x-small; font-family: Tahoma; color: #336699;">چرا  به یک فریمورک <span lang="en-us">Ajax</span> نیاز داریم ؟ </span></strong><span style="font-size: x-small; font-family: Tahoma;"> <span style="color: #336699;"><strong><br />
</strong> </span>بدون بهره گیری از پتانسیل های یک <span lang="en-us">toolkit</span> و یا  یک فریمورک ، پیاد ه سازی برنامه های مبتنی بر <span lang="en-us">Ajax</span> کار ساده ای نخواهد بود و  پیاده  کنندگان با مسائل متعددی مواجه خواهند شد : </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"> <strong>سازگاری بین مرورگرها</strong></span> :  گذشته از پیاده سازی نسخه های متعدد و  مختلف از شی <span lang="en-us">XMLHttpRequest</span> ، هر مرورگر یک نسخه متفاوت  از <span lang="en-us">DOM</span> را پیاده سازی کرده است . به روز نگه  داشتن تغییرات بین مرورگرها و مدیریت تشخیص مرورگرها می تواند یک فرآینده مشکل و  خسته کننده را برای پیاده کنندگان به دنبال داشته باشد .یکی از اهداف مهم یک  <span lang="en-us">toolkit</span> و یا فریمورک ، تفکیک پیچیدگی ها و   تفاوت ها است  تا پیاده کنندگان بتوانند با بکارگیری مجموعه ای از  امکانات رابط برنامه نویسی ( <span lang="en-us">API</span> ) ، عملیات مشابه و  یکسانی را انجام دهند . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <strong><span style="color: #800000;">ضرورت    درک عمیق تر از جاوا اسکریپت</span></strong> : جاوا اسکریپت ذاتا&#8221; یک زبان پیچیده    نیست ، گرچه ، تعداد زیادی از پیاده کنندگان برنامه های وب این عقیده را ندارند.    جاوا اسکریپت ویژگی هائی نظیر شی گراء   و یا <span lang="en-us">Type safe</span> را که بتواند انتظار برنامه نویسان را  تامین نماید ، ارائه نمی نماید . مفاهیمی نظیر توارث ، اینترفیس ها و رویدادها را  می توان در جاوا اسکریپت شبیه سازی کرد ولی پیاده سازی آنها برای    پیاده کنندگان کار مشکلی خواهد بود .  اشکال زدائی و    عدم حمایت از زبان های اسکریپت نویسی سمت سرویس گیرنده در محیط های <span lang="en-us">IDE </span>( برگرفته شده از integrated development  environments  ) نیز به پیچیدگی کار می افزاید . </span></p>
</li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">با توجه به موارد فوق ،  توصیه می گردد در زمان پیاده سازی برنامه های وب مبتنی بر <span lang="en-us">Ajax</span> از یک فریمورک و یا <span lang="en-us">toolkit</span> استفاده  شود و پیاده کنندگان خود را درگیر برخی کارهای پیچیده و تکراری ننمایند .<br />
<span lang="en-us">ASP. NET Ajax</span> یکی از فریمورک های ارائه شده در این خصوص  است که در ادامه با معماری آن بیشتر آْشنا می شویم . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"> <strong>معماری فریمورک <span lang="en-us">ASP. NET Ajax</span><br />
</strong></span>فریمورک <span lang="en-us"> ASP. NET Ajax</span> ، به پیاده کنندگان این امکان را  می دهد که بتوانند برنامه های وب قدرتمندتر ، با توان پاسخگوئی بیشتر  و سازگار با مرورگرهای مختلف را ایجاد نمایند . در   نگاه اول ممکن است این گونه برداشت شود که فریمورک یک کتابخانه <span lang="en-us">Ajax</span> است . با این که استنباط فوق  درست است ولی تصویری واقعی از آنچه وجود دارد را در ذهن ایجاد  نمی کند.<br />
با بررسی معماری فریمورک فوق و آشنائی با نحوه عملکرد هر یک از عناصر موجود در این  ساختار ، با قابلیت های فریمورک <span lang="en-us">ASP. NET Ajax</span> بیشتر  خواهیم شد .<br />
شکل ۱ ، ساختار معماری فریمورک <span lang="en-us">ASP. NET Ajax</span> را نشان می  دهد . اولین چیزی که در شکل فوق مشهود است ، پوشش این فریمورک در دو سمت سرویس  گیرنده و سرویس دهنده است .  علاوه بر مجموعه ای از کتابخانه های سمت سرویس گیرنده و  عناصر ، با مجموعه ای از امکانات در سمت سرویس دهنده مواجه هستیم که امکان بکارگیری  آنها توسط کنترل های سرویس دهنده <span lang="en-us">ASP. NET</span> و سرویس ها  وجود دارد . </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><br />
<img src="http://www.srco.ir/Articles/images/introajax17.jpg" border="0" alt="introajax17  Ajax : تحولی بزرگ در عرصه وب ( بخش پنجم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش پنجم ) " /></span></span></p>
<p>شکل ۱ : ساختار معماری  فریمورک <span lang="en-us">ASP. NET Ajax</span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">فریمورک سمت سرویس گیرنده<br />
</span></strong>یکی از نکات جالب  در ارتباط با فریمورک سمت سرویس گیرنده  ، عدم وابستگی کتابخانه مرکزی به عناصر سرویس دهنده است . از کتابخانه فوق می توان  جهت پیاده سازی برنامه های نوشته شده توسط <span lang="en-us">PHP</span> و یا <span lang="en-us">ColdFusion</span> و سایر زبان های برنامه نویسی و یا پلت فرم ها نیز استفاده کرد .<br />
با توجه به  انعطاف پذیری معماری فوق  ،‌ می توان آن را بطور منطقی به دو بخش  تقسیم کرد : فریمورک سرویس دهنده و  فریمورک سرویس گیرنده تقسیم نمود .<br />
آگاهی از  نحوه عملکرد معماری  فوق در سمت سرویس  گیرنده  ، برای پیاده کنندگان سمت سرویس دهنده نیز ضروری است  چراکه این  بخش آغازگر حیات یک صفحه وب می باشد .</span></span></p>
<p><span style="color: #800000;"><strong>Microsoft Ajax Library<br />
</strong></span>در هسته فریمورک سمت سرویس دهنده  Microsoft Ajax Library  قرار دارد که از آن با نام کتابخانه مرکزی و یا هسته نام برده می شود .این کتابخانه  شامل مجموعه ای از فایل های جاوا اسکریپت است که می توان  از آنها صرفنظر از  ویژگی های سرویس دهنده استفاده کرد <span lang="en-us">. </span>در ادامه به بررسی  هر یک از اجزاء و یا لایه های کتابخانه فوق خواهیم پرداخت .<br />
کار خود را با بررسی  لایه <span lang="en-us">Type system</span> که زیربنای تمامی لایه های دیگر است ،  آغاز می نمائیم . ( در نسخه  های قبلی <span lang="en-us">ASP. NET Ajax</span> با کد نام <span lang="en-us">Atlas</span> ، به کتابخانه  مرکزی  Client Script Library گفته می شد ) .</p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <strong><span style="color: #008000;"><span lang="en-us">Type    System</span></span></strong> : هدف از لایه فوق ، معرفی مفاهیم برنامه نویسی شی گراء    نظیر  کلاس ها ، توارث ، اینترفیس ها و  <span lang="en-us">event handling</span> برای جاوا اسکریپت است . این لایه همچنین نوع های موجود جاوا اسکریپت را توسعه می    دهد . مثلا&#8221; نوع <span lang="en-us">String</span> و <span lang="en-us">Array</span> در جاوا  اسکریپت توسعه یافته اند تا  قابلیت  هائی مشابه را برای پیاده کنندگان  برنامه های وب <span lang="en-us"> ASP. NET</span> ایجاد نمایند . <span lang="en-us">type system</span> اساس کار سایر اجزاء این    کتابخانه را فراهم می نماید .<br />
</span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #008000;"><span lang="en-us">Component</span></span><span style="color: #800000;"> </span></strong>: در لایه بعدی کتابخانه  مرکزی ، لایه <span lang="en-us">component</span> قرار دارد  که بر روی زیرساخت <span lang="en-us">type system</span> ایجاد  شده است  . لایه فوق  عملیات حیاتی و مهمی را برای کتابخانه  مرکزی انجام می دهد . این لایه امکانات حمایتی  لازم برای سریال سازی <span lang="en-us">JSON</span> ( برگرفته شده از     JavaScript Object Notation  ) ،  ارتباطات شبکه ای    ، محلی سازی ، تعامل با <span lang="en-us">DOM</span> ( برگرفته  شده از Document Object Model   ) و سرویس هائی    نظیر تائید و پروفایل را برای  برنامه های <span lang="en-us">ASP.NET</span> ارائه می نماید . این لایه همچنین ، امکان تولید و ایجاد ماژول  هائی با قابلیت استفاده مجدد را که می توان    آنها را در گروه هائی  به عنوان کنترل ها و رفتارها    تقسیم نمود ، فراهم  می نماید .<br />
</span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #008000;"> <span lang="en-us"> Application</span></span><span style="color: #800000;"> </span></strong> :  لایه فوق بالاترین لایه در کتابخانه    مرکزی است که می توان  برای آن از یک عنوان تشریحی و توصیفی بهتر     استفاده کرد :  <span lang="en-us">Application model</span> . همانند چرخه حیات یک صفحه در <span lang="en-us">ASP.NET</span> ، این لایه یک مدل برنامه نویسی مبتنی بر رویداد  را ارائه می نماید که شما می توانید از آن به منظور کار با عناصر <span lang="en-us">DOM</span> ، عناصر نرم افزاری و چرخه حیات یک برنامه در مرورگر  استفاده نمائید .</span></p>
</li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;"> <span lang="en-us">HTML</span> ، جاوا اسکریپت و اسکریپت <span lang="en-us">XML<br />
</span></span></strong> صفحات وب مبتنی بر <span lang="en-us">Ajax</span> در <span lang="en-us"> ASP. NET</span> با استفاده از <span lang="en-us">HTML</span> ، جاوا  اسکریپت و یک گرامر تعریفی مبتنی بر <span lang="en-us">XML</span> که به آن <span lang="en-us">XML script</span> گفته می شود ، نوشته می گردند <span lang="en-us"> .</span> بدین ترتیب پیاده کنندگان دارای گزینه های متعددی برای نوشتن کد صفحات وب  در سمت سرویس گیرنده می باشند .  می توان کد را به صورت اخباری و با استفاده  از <span lang="en-us">XML Script</span> و  یا به صورت دستوری با جاوا اسکریپت   پیاده سازی کرد . عناصر تعریف شده در <span lang="en-us">XML Script</span> شامل یک تگ اسکریپت جدید به صورت زیر می  باشند . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="200" bordercolor="#c0c0c0">
<tbody>
<tr>
<td width="198" height="20" bgcolor="#f4f4ff">
<p dir="ltr"><span style="font-size: x-small; font-family: Tahoma;"> &lt;script type=&#8221;text/xml-script&#8221;&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">مرورگر قادر به تشخیص تگ <span lang="en-us">Script</span> است ولی دارای یک مکانیزم برای پردازش نوع <span lang="en-us">xml-script</span> نمی باشد . در مقابل ، فایل های جاوا اسکریپت  از فریمورک <span lang="en-us">ASP.NET Ajax</span> می توانند اسکریپت را  تفسیر   و یک نمونه از عناصر و کنترل های موجود بر روی صفحه را ایجاد نمایند .  کد زیر ،  نحوه استفاده از <span lang="en-us">XML Script</span> به منظور نمایش یک پیام پس  از استقرار صفحه در حافظه مرورگر را نشان می دهد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="413" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" width="411" height="20" bgcolor="#bfd5ea">
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us">XML-Script</span> :  گزینه ای برای پیاده سازی صفحات مبتنی بر <span lang="en-us">Ajax</span> </span></p>
</td>
</tr>
<tr>
<td width="411" height="20" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> &lt;script type=&#8221;text/xml-script&#8221;&gt;<br />
&lt;page xmlns=&#8221;http://schemas.microsoft.com/xml-script/2005&#8243;&gt;<br />
&lt;components&gt;<br />
&lt;application load=&#8221;page_load&#8221;  /&gt;<br />
&lt;/components&gt;<br />
&lt;/page&gt;<br />
&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
function  page_load(sender, e) {<br />
alert(&#8220;Hello from XML-Script!&#8221;);<br />
}<br />
&lt;/script&gt;</span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در مثال فوق ، یک تابع  نوشته شده به زبان جاوا اسکریپت با نام   <span lang="en-us">Page_load</span> به صورت تعریفی به رویداد  <span lang="en-us">Load</span> در چرخه حیات صفحه  نسبت داده شده است . با اجرای این صفحه ، تابع <span lang="en-us">Page_Load</span> فراخوانده می شود تا یک پیام برای سرویس گیرنده نمایش داده شود .<br />
شاید برای شما این سوال مطرح شده باشد که چرا در مقابل جاوا اسکریپت می بایست از <span lang="en-us">XML Script</span> استفاده کرد ؟ ( عکس این سوال نیز می تواند مطرح شود ) . در پاسخ می توان به تمایل پیاده کنندگان و توانمندی آنها اشاره کرد . برخی از پیاده کنندگان ترجیح می دهند که از یک زبان نشانه گذاری در مقابل اسکریپت استفاده نمایند . در مقابل تعداد دیگری از پیاده کنندگان استفاده از زبان جاوا اسکریپت را در مقابل یک زبان نشانه گذاری ، ترجیح می دهند . به هر حال از دو رویکرد فوق می توان استفاده کرد و هر یک دارای مزایا و محدودیت های مختص به خود می باشند. </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">ASP.NET AJAX service proxies<br />
</span></strong>فریمورک در سمت سرویس گیرنده قابلیت  فراخوانی سرویس های وب را از طریق جاوا اسکریپت و به کمک مجموعه ای از پروکسی های  سمت سرویس گیرنده که از طریق سرویس دهنده ایجاد شده اند ، فراهم می نماید .پروکسی  ها را می توان به منزله یک مرجع وب در کد مدیریت یافته دات نت در نظر گرفت .  یک پروکسی کلاسی است که به عنوان یک اینترفیس برای  آیتم دیگر  عمل می نماید . در این حالت ، یک سرویس وب . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">جمع بندی فریمورک سمت سرویس گیرنده<br />
</span></strong> تا این جا یک دید کلی و اولیه نسبت به فریمورک سمت سرویس گیرنده  پیدا کردیم . اجازه دهید سفری داشته باشیم به سمت سرویس دهنده و  ببینیم که این  فریمورک در سمت سرویس دهنده چه حرفی برای گفتن دارد و از چه نوع معماری تبعیت می  کند . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"> <strong>فریمورک  در سمت سرویس دهنده<br />
</strong></span>در بالاترین سطح <span lang="en-us">ASP. NET 2.0</span> ، مجموعه ای از کنترل ها و  سرویس های ارزشمند وجود دارد که فریمورک دات نت را جهت حمایت از <span lang="en-us"> Ajax</span> تحت تاثیر قرار می دهد . این لایه از فریمورک سرویس دهنده  ،  ASP.NET AJAX server extensions نامیده شده و مشتمل بر سه بخش مجزا است : </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">کنترل های سرویس دهنده <span lang="en-us">Ajax</span> </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">web services bridge </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">application services  bridge </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در ادامه هر یک از امکانات فوق را به  اختصار توضیح می دهیم . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"> <strong>کنترل های سرویس دهنده <span lang="en-us">Ajax</span><br />
</strong></span>مجموعه ای جدید از کنترل های سرویس دهنده  می باشند که به جعبه ابزار <span lang="en-us">ASP. NET</span> اضافه می شوند . دو  کنترل آنها شاخص تر از سایر کنترل ها می باشند . اولین کنترل ، <span lang="en-us">ScriptManager</span> است که به عنوان مغز یک صفحه وب مبتنی بر <span lang="en-us">Ajax</span> تلقی می  گردد . یکی از چندین مسئولیت  کنترل فوق ، مدیریت ناحیه ای از صفحه است که در  حین <span lang="en-us">Postback</span> غیرهمزمان می بایست بطور پویا بهنگام گردد.<br />
دومین کنترل ، <span lang="en-us">UpdatePanel</span> است که از آن به منظور تعریف  ناحیه ای بر روی صفحه که می بایست به صورت جزئی بهنگام گردد ، استفاده می شود . با  تلفیق توانمندی دو کنترل اشاره شده وضعیت بخش رابط کاربر یک برنامه وب بطرز محسوسی  بهبود خواهد یافت ( در واقع <span lang="en-us">Postback</span> سنتی جای خود را به <span lang="en-us">Postback</span> غیرهمزمان می دهد ) . پیامد بکارگیری کنترل های  فوق ، بهنگام سازی نواحی خاص و مشخص شده ای بر روی صفحه ، در مقابل <span lang="en-us">refresh</span> تمامی صفحه است .<br />
سایر عناصر <span lang="en-us">server extension</span> ، سرویس هائی را شامل می  شوند که به منزله یک پل ارتباطی بین سرویس گیرنده و سرویس دهنده رفتار می نمایند . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">web services bridge<br />
</span></strong>برنامه های وب عموما&#8221; ، محدود به منابع موجود بر روی سرویس دهنده محلی  می باشند . گذشته از منابع خارجی اندکی نظیر فایل های تصویر و <span lang="en-us"> CSS</span> ، برنامه ها مجاز به دستیابی به منابع در حوزه برنامه سرویس گیرنده نمی  باشند . به منظور غلبه بر این موانع ، <span lang="en-us">server extensions</span> در فریمورک <span lang="en-us"> ASP. NET Ajax</span> شامل یک <span lang="en-us">web service bridge</span> است که یک <span lang="en-us">gateway</span> برای فراخوانی سرویس های وب از طریق  اسکریپت های سمت سرویس گیرنده را فراهم می نماید . تامین داده از سمت سرویس دهنده  برای استفاده در سمت سرویس گیرنده یکی از موارد کاربرد این فناوری است . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;"><span lang="en-us">Application Service  bridge</span><br />
</span></strong>با توجه به ارتباط  تنگاتنگ  <span lang="en-us">ASP. NET Ajax</span> با <span lang="en-us">ASP. NET</span> ، دستیابی به برخی از سرویس های <span lang="en-us">application</span> نظیر تائیدیه و یا پروفایل را می توان به یک  برنامه موجود  اضافه نمود . این ویژگی باعث می شود بتوان عملیاتی نظیر بررسی  اطلاعات حساس یک کاربر و دستیابی به اطلاعات پروفایل را که توسط اسکریپت های سمت  سرویس گیرنده ارسال شده اند  را انجام داد . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"> <strong>خلاصه<br />
</strong></span>در این مقاله ضمن اشاره به ضرورت استفاده از یک فریمورک در برنامه های  وب مبتنی بر <span lang="en-us">Ajax</span> ، با عناصر موجود در سمت سرویس دهنده و  سرویس گیرنده  فریمورک ASP.NET AJAX آشنا شدیم . در بخش بعد با نحوه تعامل این  عناصر در جهت تامین خواسته پیاده کنندگان برنامه های وب مبتنی بر <span lang="en-us">Ajax</span> آشنا خواهیم شد . بدین منظور به بررسی دو سناریوی  مختلف خواهیم پرداخت : مدل پیاده سازی با محوریت سرویس گیرنده  و مدل پیاده  سازی با محوریت سرویس دهنده .</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part5-870830-36/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part4-870829-32/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part4-870829-32/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 23:25:17 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=32</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش در این بخش قرار بود که در رابطه با فریمورک های مختلف ارائه شده  جهت بکارگیری فناوری Ajax آشنا شویم . ولی به دلیل درخواست تعداد زیادی از خوانندگان مبنی بر آشنائی بیشتر با معماری Ajax ، برنامه نویسی غیرهمزمان در برنامه های وب و شی XMLHttpRequest  ، این بخش را [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در این بخش قرار بود که  در رابطه با فریمورک های مختلف ارائه شده  جهت بکارگیری فناوری <span lang="en-us">Ajax</span> آشنا شویم . ولی به دلیل درخواست تعداد زیادی  از خوانندگان مبنی بر آشنائی بیشتر با معماری </span> <span style="font-family: Tahoma;"> <span lang="FA"><span style="font-size: x-small; font-family: Tahoma;">Ajax</span></span></span><span style="font-size: x-small; font-family: Tahoma;"> ، برنامه نویسی غیرهمزمان در برنامه های وب و شی XMLHttpRequest  ، این بخش را  به بررسی موارد فوق اختصاص دادیم تا علاقه مندان بتوانند قبل از پرداختن به اصل  موضوع با برخی مفاهیم کلیدی و مهم بیشتر آشنا شوند . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">مقدمه<br />
</span></strong><span lang="en-us">Ajax</span> یک رویکرد و یا الگوی جدید برای پیاده  سازی برنامه های وب است که در آن از اسکریپت های سمت سرویس گیرنده برای مبادله داده  با سرویس دهنده وب استفاده می گردد. رویکرد فوق باعث می شود که صفحات وب بدون نیاز  به <span lang="en-us">refresh</span> کامل بتوانند بطور پویا بهنگام گردند (  رویائی برای پیاده کنندگان برنامه های وب ) . مهمترین دستاورد رویکرد فوق ، ارتباط   بدون وقفه و پیوسته کاربران با برنامه های وب است .<br />
برخی از کارشناسان بر این اعتقاد هستند که رویکرد فوق بیش از آن که یک الگو باشد یک  فناوری است  <span lang="en-us">. </span>در واقع ،  <span lang="en-us">Ajax</span> ترکیبی از   مجموعه فناوری  های مرتبط به هم است که از آنها با یک نگرش جدید در جهت تولید نسل  جدیدی از برنامه های وب استفاده می گردد .<br />
نام بردن از فناورهائی که در <span lang="en-us">Ajax</span> از آنها استفاده می  گردد کار مشکلی نیست ولی مهم این است که بدانیم این فناورها در کنار یکدیگر به چه  صورت کار می کنند و هر یک از آنها در <span lang="en-us">Ajax </span>دارای چه  مختصاتی است .شکل ۱ ، نحوه تعامل و  ارتباط این فناوری ها را از منظر مرورگر نشان می دهد .</span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax014.jpg" border="0" alt="introajax014  Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۱ : عناصر <span lang="en-us">Ajax</span><br />
</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">جاوا اسکریپت در <span lang="en-us">Ajax</span> دارای یک نقش محوری  و تعیین کننده است و می توان آن را به منزله یک  نیروی چسبنده در نظر گرفت که سایر فناوری ها  را با هم مرتبط می نماید . زمانی که یک برنامه به داده نیاز  داشته باشد ، از شی <span lang="en-us">XMLHttpRequest</span> به منظور ایجاد درخواست به سرویس دهنده  استفاده می گردد . پس از برگرداندن داده توسط سرویس دهنده ، از فناورهای <span lang="en-us">DOM</span> ( برگرفته شده  از <span lang="en-us">Document Object Model</span> )  و <span lang="en-us">CSS </span> ( برگرفته شده از cascading style sheets  )  برای بهنگام  سازی رابط کاربر مرورگر به صورت پویا استفاده می گردد . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">برنامه نویسی وب غیرهمزمان<br />
</span></strong>حرف <span lang="en-us">A</span> موجود در <span lang="en-us">Ajax</span> از  <span lang="en-us">A</span>synchronous گرفته شده است که در زبان فارسی به غیرهمزمان و یا ناهمگام  ترجمه می شود و بیانگر یکی از قابلیت های مهم و کلیدی الگوی برنامه نویسی <span lang="en-us">Ajax</span> است . <span lang="en-us"> </span><br />
در برنامه های وب سنتی ، تعامل کاربر با برنامه بطور پیوسته نبوده و در مقاطع زمانی  خاصی لازم است کاربر در انتظار اتمام یک عملیات باشد . زمانی که کاربر عملیات  خاصی نظیر کلیک بر روی دکمه موجود بر روی یک فرم را انجام می دهد ، یک درخواست  مبتنی بر پروتکل <span lang="en-us">HTTP</span> برای سرویس دهنده وب ارسال می گردد  . در ادامه ، سرویس دهنده درخواست را پردازش ( به عنوان نمونه ، انجام برخی محاسبات  و یا عملیات مرتبط با بانک های اطلاعاتی ) و نتایج تولید شده را در قالب یک صفحه وب  با محتویات جدید برای سرویس گیرنده ارسال می نماید .<br />
نحوه عملکرد صفحات وب متاثر از ماهیت <span lang="en-us">stateless</span> بودن  پروتکل <span lang="en-us">HTTP</span> است  <span lang="en-us">. </span>با توجه به این که تمامی منطق برنامه  معمولا&#8221; بر روی سرویس دهنده قرار می گیرد  ، نقش مرورگرها صرفا&#8221; نمایش بخش  رابط کاربر و یا اصطلاحا&#8221; اینترفیس برنامه است . سرویس دهنده ، چرخه حیات یک صفحه  وب را بطور کامل طی می نماید و برای مرورگر تگ های <span lang="en-us">HTML</span> ، کدهای <span lang="en-us">CSS </span> و سایر منابع مورد نیاز را جهت  بازخوانی و نمایش مجدد صفحه ارسال می نماید . ماهیت فرآیند فوق بگونه ای است که در  دراز مدت نمی تواند رضایت خاطر کامل کاربران را   حداقل در سطح بخش رابط کاربر برنامه تامین نماید . در این مدل کاربران  از یک الگوی  <span lang="en-us">stop-start-stop</span> تبعیت می نمایند  . کاربران در برخی موارد و با توجه به شرایط حاکم بر برنامه بطور موقت  و از روی ناچار ارتباط خود را با  برنامه از دست داده و می بایست در انتظار بهنگام  سازی صفحه وب درخواستی  بمانند .<br />
شکل ۲ ، نحوه عملکرد برنامه های وب در یک فرآیند همزمان را نشان می دهد  .</span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><br />
<img src="http://www.srco.ir/Articles/images/introajax14.jpg" border="0" alt="introajax14  Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) " /><br />
شکل ۲ : نحوه عملکرد برنامه های وب در یک فرآیند همزمان<br />
( عدم تعامل کاربر با برنامه در زمان درخواست های <span lang="en-us">HTTP</span> ) </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در <span lang="en-us">ASP.NET</span> زمانی که یک صفحه داده    را برای خود و یا حتی صفحه  ای دیگر ارسال می نماید ، یک <span lang="en-us"> postback</span> اتفاق می افتد . در حین این فرآیند ، وضعیت جاری صفحه به همراه  کنترل های موجود بر روی آن جهت پردازش برای سرویس دهنده ارسال می گردند . مکانیزم <span lang="en-us">postback</span> با هدف تامین خواسته هائی نظیر  نگهداشت وضعیت صفحه و کنترل های  سرویس دهنده موجود بر روی  آن  دنبال می شود . فرآیند فوق گرچه در نهایت می تواند منجر به <span lang="en-us"> refresh</span> صفحه وب و نمایش محتویات جدید برای کاربر گردد ولی هزینه انجام آن  زیاد خواهد بود چراکه اولا&#8221; یک حجم داده می بایست برای سرویس دهنده ارسال گردد و  ثانیا&#8221; ارتباط  منطقی کاربر با برنامه از بین خواهد رفت .</span></span></p>
<p>یک برنامه وب مبتنی بر <span lang="en-us">Ajax</span> با مدل و یا رویکردی متفاوت  نسبت به آنچه اشاره گردید ، کار می کند  . در این مدل ،  تعامل مستمر کاربر با برنامه  از طریق معرفی یک نماینده  که بین سرویس گیرنده و سرویس دهنده قرار می گیرد ،  تامین می گردد . این نماینده و یا <span lang="en-us">agent</span> ، با سرویس دهنده بطور غیرهمزمان  ارتباط برقرار می نماید ( از طرف سرویس گیرنده ) تا درخواست <span lang="en-us">HTTP</span> را ایجاد و آن را برای سرویس دهنده ارسال  نماید . وظایف  نماینده فوق به این نقطه ختم نمی گردد و مسئولیت بهنگام سازی صفحه پس از  دریافت داده از سرویس دهنده نیز بر عهده وی می باشد .<br />
در مدل  غیر همزمان ، <span lang="en-us">Ajax engine</span> توسط جاوا اسکریپت فراخوانده می شود تا داده  مورد نظر را درخواست  نماید . پس  ایجاد درخواست توسط <span lang="en-us"> Ajax engine</span> و ارسال آن برای سرویس دهنده  و انجام پردازش های ضروری در  سمت سرویس دهنده ، نتایج توسط <span lang="en-us">Ajax engine</span> دریافت و   بخش رابط کاربر برنامه متناسب با آن بهنگام می گردد .<br />
شکل ۳ ، نحوه عملکرد  برنامه های وب در یک فرآیند غیرهمزمان را نشان می دهد .</p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax15.jpg" border="0" alt="introajax15  Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۳ : نحوه عملکرد  برنامه های وب در یک فرآیند غیرهمزمان<br />
(ارسال درخواست های <span lang="en-us">HTTP</span> از طریق <span lang="en-us"> Ajax engine</span> برای سرویس دهنده) </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در هسته <span lang="en-us">Ajax engine</span> ، شی  مهم و کلیدی  XMLHttpRequest قرار دارد که  در ادامه با <span lang="en-us"> </span>آن  بیشتر آشنا می شویم .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">شی XMLHttpRequest<br />
</span></strong>شی<span style="color: #336699;"><strong> ‌ </strong> </span>XMLHttpRequest  به منزله قلب برنامه نویسی <span lang="en-us">Ajax</span> مطرح می گردد چراکه  شی فوق باعث می شود جاوا اسکریپت بتواند درخواست هائی را ایجاد تا  برای سرویس دهنده ارسال و نتایج  ارسالی از سرویس دهنده را نیز پردازش نماید .<br />
شی  فوق اولین مرتبه و به صورت یک شی اکتیوایکس در <span lang="en-us">Internet  Explorer 5</span> عرضه گردید و هم اینک  از آن در  اکثر مرورگرها حمایت می  گردد .  سایر مرورگرها نظیر <span lang="en-us">Safari </span> ، <span lang="en-us"> Opera</span> ، <span lang="en-us">Mozilla</span> و فایرفاکس  پتانسیل های XMLHttpRequest  را به  صورت یک شی ذاتی جاوا اسکریپت ارائه کرده اند  ( در  <span lang="en-us">IE 7.0</span> شی فوق بطور ذاتی در جاوا اسکریپت  تعبیه شده است ) .<br />
با توجه به این که تاکنون نسخه های مختلفی از شی فوق  در مرورگرها پیاده سازی شده است ، پیاده  کنندگان می بایست کد لازم به منظور  تشخیص  نوع شی فوق را در زمان ایجاد یک نمونه از آن را در برنامه خود پیش بینی  نمایند . برای تعیین نسخه در دسترس شی XMLHttpRequest می توان از روشی موسوم به &#8221; تشخیص شی &#8221;  استفاده کرد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="457" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" width="455" height="20" bgcolor="#bfd5ea">
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">ایجاد یک نمونه از شی XMLHttpRequest با  توجه به نوع مرورگر</span></p>
</td>
</tr>
<tr>
<td width="455" height="20" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> var xmlHttp = null;<br />
if (window.XMLHttpRequest)     {     <span lang="en-us">//IE7 ,</span> <span lang="en-us">Mozilla </span> <span lang="en-us">,&#8230;</span><br />
xmlHttp = new XMLHttpRequest();<br />
} else if (window.ActiveXObject) {<br />
try{<br />
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;); //IE 5.x, 6<br />
}<br />
catch(e) {}<br />
}</span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">مثال<br />
</span></strong>برای آشنائی با نحوه عملکرد شی فوق و برنامه نویسی وب غیرهمزمان ، در  ادامه به بررسی یک نمونه مثال ساده خواهیم پرداخت . فرض کنید قصد داریم یک درخواست  غیرهمزمان به یک منبع موجود بر روی سرویس دهنده (در این مثال خاص یک صفحه  <span lang="en-us">html</span> که حاوی یک متن ساده است  ، صفحه   ArticleSummery.htm  ) را ایجاد نمائیم . صفحه فوق یک صفحه وب با حداقل  اطلاعات و شامل یک متن ایستا است . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="493" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" width="491" height="20" bgcolor="#bfd5ea">
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">صفحه  ArticleSummery.htm </span></p>
</td>
</tr>
<tr>
<td width="491" height="20" bgcolor="#f4f4ff"><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&lt;</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">html</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">xmlns</span><span style="font-size: x-small; color: #0000ff;">=&#8221;http://www.w3.org/1999/xhtml&#8221;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">dir</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">=&#8221;rtl&#8221;&gt;<br />
&lt;</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">head</span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">meta</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">content</span><span style="font-size: x-small; color: #0000ff;">=&#8221;text/html;  charset=utf-8&#8243;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;"> http-equiv</span><span style="font-size: x-small; color: #0000ff;">=&#8221;content-type&#8221;</span><span style="font-size: x-small;"> </span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">/&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">title</span><span style="font-size: x-small; color: #0000ff;">&gt;</span><span style="font-size: x-small;">تست  برنامه نویسی وب غیرهمزمان </span><span style="font-size: x-small; color: #0000ff;">&lt;/</span><span style="font-size: x-small; color: #800000;">title</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">head</span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">body</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">style</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">=&#8221;font-family:  Tahoma;&#8221;&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">div</span><span style="font-size: x-small; color: #0000ff;">&gt;</span><span style="font-size: x-small;">در  این مقاله با برنامه نویسی وب همزمان و غیرهمزمان آشنا شدیم </span> <span style="font-size: x-small; color: #0000ff;">&lt;/</span><span style="font-size: x-small; color: #800000;">div</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">body</span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">html</span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;</span></span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> مسئولیت ارسال یک  درخواست غیرهمزمان به تابع <span lang="en-us">SendRequest</span> سپرده شده است . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 1px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="513" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" colspan="2" width="511" height="19" bgcolor="#bfd5ea">
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;"> ارسال یک درخواست غیرهمزمان </span></p>
</td>
</tr>
<tr>
<td width="402" height="19" bgcolor="#f4f4ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">کد</span></p>
</td>
<td width="108" height="19" bgcolor="#f4f4ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">مرحله </span></p>
</td>
</tr>
<tr>
<td rowspan="2" width="402" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> function <span style="color: #800000;"><strong>sendRequest</strong></span>(url) {<br />
if (xmlHttp) {<br />
xmlHttp.open(&#8220;GET&#8221;, url, true); // true = async</span></td>
<td width="108" height="16" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><strong>1</strong> </span></p>
</td>
</tr>
<tr>
<td width="108" height="1" bgcolor="#f4f4ff">
<p style="text-align: center;"><span style="font-size: x-small; font-family: Tahoma;"> فعال کردن  ارتباط غیرهمزمان</span></p>
</td>
</tr>
<tr>
<td colspan="2" width="510" height="1" bgcolor="#ffffff"></td>
</tr>
<tr>
<td rowspan="2" width="402" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> xmlHttp.onreadystatechange = onCallback;<br />
</span></td>
<td width="108" height="16" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><strong>2</strong> </span></p>
</td>
</tr>
<tr>
<td width="108" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> </span></p>
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">نسبت دهی تابع <span lang="en-us"> callback</span></span></p>
</td>
</tr>
<tr>
<td colspan="2" width="511" height="1" bgcolor="#ffffff"></td>
</tr>
<tr>
<td colspan="2" width="511" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> </span> <span style="font-size: xx-small; font-family: Tahoma;"> xmlHttp.setRequestHeader(&#8216;Content-type&#8217;,'application/x-www-form-urlencoded&#8217;);</span></td>
</tr>
<tr>
<td colspan="2" width="510" height="1" bgcolor="#ffffff"></td>
</tr>
<tr>
<td rowspan="2" width="402" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> xmlHttp.send(null);<br />
}<br />
}</span></td>
<td width="108" height="2" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><strong> <span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><span lang="en-us">3</span> </span> </strong></p>
</td>
</tr>
<tr>
<td width="108" height="1" bgcolor="#f4f4ff">
<p style="text-align: center;"><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> </span>ارسال  درخواست غیرهمزمان</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">توضیحات </span> </strong> </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">متد  sendRequest ،‌ یک پارامتر که در واقع <span lang="en-us">URL</span> مربوطه به درخواست <span lang="en-us">HTTP</span> است را دریافت می نماید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله اول : یک ارتباط  غیرهمزمان ایجاد می گردد ( در نظر گرفتن مقدار <span lang="en-us">true</span> به  عنوان سومین پارامتر در زمان فعال کردن ارتباط نشان دهنده یک ارتباط غیرهمزمان است  ).<span lang="en-us"> </span> </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله دوم : پس از  مقداردهی اولیه ارتباط مورد نظر ، به خصلت onreadystatechange شی XMLHttpRequest یک  تابع محلی با نام onCallback نسبت داده می شود . توجه داشته باشید که فراخوانی تابع  فوق به صورت غیرهمزمان است . تابع <span lang="en-us">Callback</span> مشخص می  نماید که چه زمانی درخواست تکمیل و یا بهنگام شده است . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله سوم : پس از مشخص  کردن نوع محتوا در هدر درخواست ، با استفاده از متد <span lang="en-us">Send</span> شی XMLHttpRequest  ، درخواست <span lang="en-us">HTTP</span> برای سرویس  دهنده ارسال می گردد . </span></p>
</li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <strong><span style="color: #800000;">فراخوانی  تابع  onCallback<br />
</span></strong>هر مرتبه ای که وضعیت <span lang="en-us">ready</span> تغییر می یابد ،  از تابع <span lang="en-us">callback</span> جهت ایجاد یک درخواست غیرهمزمان  استفاده می گردد . در مرحله نهائی ، وضعیت بررسی و بخش رابط کاربر به همراه محتویات  برگردانده شده از صفحه ArticleSummery.htm ، بهنگام می گردد. </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 1px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="427" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" colspan="2" width="425" height="19" bgcolor="#bfd5ea"><span style="font-size: x-small; font-family: Tahoma;"> </span></p>
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">فراخوانی تابع <span lang="en-us">oncallback</span> </span></p>
</td>
</tr>
<tr>
<td width="312" height="19" bgcolor="#f4f4ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">کد</span></p>
</td>
<td width="112" height="19" bgcolor="#f4f4ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">مرحله </span></p>
</td>
</tr>
<tr>
<td rowspan="2" width="312" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us"> </span>function onCallback() {<br />
if (xmlHttp.readyState == 4) {</span></td>
<td width="112" height="16" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><strong>1</strong> </span></p>
</td>
</tr>
<tr>
<td width="112" height="1" bgcolor="#f4f4ff">
<p style="text-align: center;"><span style="font-size: x-small; font-family: Tahoma;"> بررسی تکمیل  عملیات</span></p>
</td>
</tr>
<tr>
<td colspan="2" width="424" height="1" bgcolor="#ffffff"></td>
</tr>
<tr>
<td rowspan="2" width="312" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> if (xmlHttp.status == 200){</span></td>
<td width="112" height="16" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><strong>2</strong> </span></p>
</td>
</tr>
<tr>
<td width="112" height="1" bgcolor="#f4f4ff">
<p style="text-align: center;" dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">مقدار ۲۰۰  نشان دهنده انجام موفقیت آمیز عملیات است </span></p>
</td>
</tr>
<tr>
<td colspan="2" width="424" height="1" bgcolor="#ffffff"></td>
</tr>
<tr>
<td rowspan="2" width="312" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> var r =  document.getElementById(&#8216;results&#8217;);<br />
r.innerHTML = xmlHttp.responseText;<br />
}<br />
</span></td>
<td width="112" height="2" bgcolor="#0000ff">
<p style="text-align: center;" dir="rtl"><strong> <span style="font-size: x-small; font-family: Tahoma; color: #ffffff;"><span lang="en-us">3</span> </span> </strong></p>
</td>
</tr>
<tr>
<td width="112" height="1" bgcolor="#f4f4ff">
<p style="text-align: center;"><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> </span>نمایش  نتایج</span></p>
</td>
</tr>
<tr>
<td colspan="2" width="425" height="1" bgcolor="#f4f4ff"><span style="font-size: x-small; font-family: Tahoma;"> else {<br />
alert(&#8216;Error: &#8216; + xmlHttp.status);<br />
}</span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">توضیحات </span> </strong> </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">وضعیت درخواست از طریق  خصلت <span lang="en-us">readyState</span> برگردانده می شود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله اول : در صورتی  که مقدار خصلت <span lang="en-us">readyState</span> شی <span lang="en-us"> XMLHttpRequest</span> برابر با مقدار ۴ باشد ، درخواست به اتمام رسیده است . <span lang="en-us"> </span></span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله دوم : در ادامه ،  پاسخ برگردانده شده از سرویس دهنده بررسی می شود تا این اطمینان حاصل گردد که همه  چیز با موفقیت انجام شده است .مقدار کد وضعیت ۲۰۰ مربوط به پروتکل <span lang="en-us">HTTP </span> ،  نشان دهنده این موضوع است که درخواست  با موفقیت انجام شده است .</span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">مرحله سوم :  در  نهایت  ،  خصلت  <span lang="en-us">innerHTML</span> مربوط به عنصر <span lang="en-us">span</span> متاثر از محتویات برگردانده شده ، بهنگام می گردد . </span></p>
</li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> کد زیر ، محتویات صفحه <span lang="en-us">Ajax1.aspx</span> را بطور کامل نشان می دهد . </span></span></p>
<p><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></p>
<div><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"></p>
<table class="code" style="border-collapse: collapse; height: 20px;" dir="ltr" border="1" cellspacing="0" cellpadding="0" width="493" bordercolor="#c0c0c0">
<tbody>
<tr>
<td style="text-align: center;" dir="rtl" width="491" height="20" bgcolor="#bfd5ea">
<p dir="rtl"><span style="font-size: x-small; font-family: Tahoma;">صفحه    Ajax1.aspx</span></p>
</td>
</tr>
<tr>
<td width="491" height="20" bgcolor="#f4f4ff"><span style="font-size: x-small;"><span style="font-family: Tahoma;">&lt;%</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;">@</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #800000;">Page</span><span style="font-size: x-small;"> </span> <span style="font-size: x-small; color: #ff0000;">Language</span><span style="font-size: x-small; color: #0000ff;">=&#8221;VB&#8221;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">Culture</span><span style="font-size: x-small; color: #0000ff;">=&#8221;fa-IR&#8221;</span><span style="font-size: x-small;"> %&gt;<br />
</span><span style="font-size: x-small; color: #0000ff;">&lt;</span><span style="font-size: x-small; color: #800000;">script</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">runat</span><span style="font-size: x-small; color: #0000ff;">=&#8221;server&#8221;&gt;<br />
&lt;/</span><span style="font-size: x-small; color: #800000;">script</span><span style="font-size: x-small; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-size: x-small; color: #800000;">html</span><span style="font-size: x-small;"> </span> <span style="font-size: x-small; color: #ff0000;">xmlns</span><span style="font-size: x-small; color: #0000ff;">=&#8221;http://www.w3.org/1999/xhtml&#8221;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">dir</span><span style="font-size: x-small; color: #0000ff;">=&#8221;rtl&#8221;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-size: x-small; color: #800000;">head</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">id</span><span style="font-size: x-small; color: #0000ff;">=&#8221;Head1&#8243;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">runat</span><span style="font-size: x-small; color: #0000ff;">=&#8221;server&#8221;&gt;<br />
&lt;</span><span style="font-size: x-small; color: #800000;">title</span><span style="font-size: x-small; color: #0000ff;">&gt;</span><span style="font-size: x-small;">نحوه  استفاده از شی XMLHttpRequest</span><span style="font-size: x-small; color: #0000ff;">&lt;/</span><span style="font-size: x-small; color: #800000;">title</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">head</span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">body</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">style</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">=&#8221;font-family:  Tahoma&#8221;&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">form</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">id</span><span style="font-size: x-small; color: #0000ff;">=&#8221;form1&#8243;</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">runat</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">=&#8221;server&#8221;&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">div</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;<br />
<span lang="en-us"> </span></span></span><span style="font-family: Tahoma;"> <span style="font-size: x-small; color: #0000ff;"> &lt;</span><span style="font-size: x-small; color: #800000;">span</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">id</span><span style="font-size: x-small; color: #0000ff;">=&#8221;results&#8221;&gt;</span><span style="font-size: x-small;">بارگذاری  صفحه &#8230;</span><span style="font-size: x-small; color: #0000ff;">&lt;/</span><span style="font-size: x-small; color: #800000;">span</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;/</span><span style="font-size: x-small; color: #800000;">div</span></span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;"> &lt;/</span><span style="font-size: x-small; color: #800000;">form</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">script</span><span style="font-size: x-small;"> </span><span style="font-size: x-small; color: #ff0000;">type</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">=&#8221;text/javascript&#8221;&gt;<br />
<span lang="en-us"> </span>var</span><span style="font-family: Tahoma;"><span style="font-size: x-small;"> xmlHttp = </span><span style="font-size: x-small; color: #0000ff;">null</span></span><span style="font-size: x-small; font-family: Tahoma;">;<br />
<span lang="en-us"> </span>window.onload = </span> <span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">function</span><span style="font-size: x-small; font-family: Tahoma;">()  {<br />
<span lang="en-us"> </span>loadXmlHttp();<br />
<span lang="en-us"> </span>sendRequest(</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">&#8220;ArticleSummery.htm&#8221;</span><span style="font-size: x-small;"><span style="font-family: Tahoma;">);<br />
<span lang="en-us"> </span>}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;"><span lang="en-us"> </span>function</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> loadXmlHttp() {<br />
<span lang="en-us"> </span></span></span><span style="font-family: Tahoma;"> <span style="font-size: x-small; color: #0000ff;">if</span><span style="font-size: x-small;"> (window.XMLHttpRequest)  { </span></span><span style="font-size: x-small; color: #008000;"><span style="font-family: Tahoma;">// IE7,  Mozilla, Safari, Opera, etc.<br />
</span></span><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> </span>xmlHttp = </span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">new</span><span style="font-size: x-small; font-family: Tahoma;"> XMLHttpRequest();<br />
<span lang="en-us"> </span>} </span><span style="font-family: Tahoma;"> <span style="font-size: x-small; color: #0000ff;">else</span><span style="font-size: x-small;"> </span> <span style="font-size: x-small; color: #0000ff;">if</span></span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> (window.ActiveXObject) {<br />
<span lang="en-us"> </span></span></span> <span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">try</span><span style="font-size: x-small; font-family: Tahoma;">{<br />
<span lang="en-us"> </span>xmlHttp = </span> <span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;">new</span><span style="font-size: x-small;"> ActiveXObject(</span><span style="font-size: x-small; color: #800000;">&#8220;Microsoft.XMLHTTP&#8221;</span><span style="font-size: x-small;">); </span></span><span style="font-size: x-small; color: #008000;"><span style="font-family: Tahoma;">// IE 5.x and 6<br />
</span></span><span style="font-size: x-small;"><span style="font-family: Tahoma;"><span lang="en-us"> </span>}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">catch</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> (e){}<br />
<span lang="en-us"> </span>}<br />
<span lang="en-us"> </span>}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;"><span lang="en-us"> </span>function</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> sendRequest(url) {<br />
<span lang="en-us"> </span></span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">if</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> (xmlHttp) {<br />
<span lang="en-us"> </span></span></span><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us"> </span>xmlHttp.open(</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">&#8220;GET&#8221;</span><span style="font-size: x-small;">,  url, </span><span style="font-size: x-small; color: #0000ff;">true</span><span style="font-size: x-small;">); </span> </span><span style="font-size: x-small; color: #008000;"><span style="font-family: Tahoma;">// true = async<br />
<span lang="en-us"> </span> </span></span><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us"> </span>xmlHttp.onreadystatechange = onCallback;<br />
<span lang="en-us"> </span></span><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us"> </span>xmlHttp.setRequestHeader(</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">&#8216;Content-type&#8217;</span><span style="font-size: x-small;">, </span><span style="font-size: x-small; color: #800000;">&#8216;application/x-www-form-urlencoded&#8217;</span></span><span style="font-size: x-small;"><span style="font-family: Tahoma;">);<br />
<span lang="en-us"> </span></span></span> <span style="font-size: x-small; font-family: Tahoma; color: #008000;">// Send request without any  additional parameters<br />
</span><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> </span> xmlHttp.send(</span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">null</span><span style="font-size: x-small;"><span style="font-family: Tahoma;">);<br />
}<br />
}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">function</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> onCallback() {<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">if</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> (xmlHttp.readyState == 4) {<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">if</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> (xmlHttp.status == 200){<br />
</span></span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #0000ff;">var</span><span style="font-size: x-small;"> r = document.getElementById(</span><span style="font-size: x-small; color: #800000;">&#8216;results&#8217;</span></span><span style="font-size: x-small;"><span style="font-family: Tahoma;">);<br />
r.innerHTML = xmlHttp.responseText;<br />
}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">else</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> { </span></span><span style="font-size: x-small; font-family: Tahoma; color: #008000;">// HTTP  error</span><span style="font-size: x-small; font-family: Tahoma;"><br />
<span style="color: #008000;"> </span>alert(</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">&#8216;Error:  &#8216;</span><span style="font-size: x-small;"><span style="font-family: Tahoma;"> + xmlHttp.status);<br />
}<br />
}<br />
}<br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;"> &lt;/</span><span style="font-family: Tahoma;"><span style="font-size: x-small; color: #800000;">script</span><span style="font-size: x-small; color: #0000ff;">&gt;</span></span><span style="font-size: x-small;"><span style="font-family: Tahoma;"><br />
</span></span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;"> &lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">body</span><span style="font-size: x-small; font-family: Tahoma; color: #0000ff;">&gt;<br />
&lt;/</span><span style="font-size: x-small; font-family: Tahoma; color: #800000;">html</span><span style="font-size: x-small; color: #0000ff;"><span style="font-family: Tahoma;">&gt;</span></span></td>
</tr>
</tbody>
</table>
<p></span></span></div>
<p><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> شکل   ۴ خروجی مثال فوق را نشان می دهد . </span></span></p>
<p dir="rtl" align="center"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> <img src="http://www.srco.ir/Articles/images/introajax16.jpg" border="0" alt="introajax16  Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش چهارم ) " /><br />
</span>شکل ۴ : ایجاد یک درخواست <span lang="en-us">Http</span> غیرهمزمان توسط شی  XMLHttpRequest</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در این مثال با نحوه  ایجاد یک درخواست <span lang="en-us">HTTP</span> غیرهمزمان توسط شی   XMLHttpRequest به صفحه دیگر موجود بر روی سرویس دهنده آشنا شدیم . پس از اتمام  درخواست ، کاربران صفحه نهائی را که محتویات عناصر رابط کاربر موجود در آن (یک <span lang="en-us">span</span> ) به صورت پویا بهنگام شده اند  ، مشاهده خواهند کرد .</span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">خلاصه<br />
</span></strong>در این مقاله با برنامه نویسی وب همزمان و غیرهمزمان و نحوه  عملکرد شی  XMLHttpRequest آشنا شدیم . هدف از بیان موارد فوق ، صرفا&#8221; آشنائی   با الگوی برنامه نویسی وب مبتنی بر <span lang="en-us"> Ajax</span> بود . تمامی داستان به این نقطه ختم نمی شود  و در مقالات آتی  به سایر پتانسیل های <span lang="en-us">Ajax</span> به منظور پیاده سازی برنامه های وب اشاره خواهیم کرد . </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part4-870829-32/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش سوم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part3-870830-31/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part3-870830-31/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 23:24:25 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/ajax-%d8%aa%d8%ad%d9%88%d9%84%db%8c-%d8%a8%d8%b2%d8%b1%da%af-%d8%af%d8%b1-%d8%b9%d8%b1%d8%b5%d9%87-%d9%88%d8%a8-%d8%a8%d8%ae%d8%b4-%d8%b3%d9%88%d9%85.htm</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش در بخش اول ضمن بررسی تاثیر متقابل وب بر نرم افزار ، مروری داشتیم به وب ایستا و وب پویا و این که برای انجام پردازش های مورد نیاز در برنامه های وب می توان از امکانات و فناوری های متعددی در سمت سرویس گیرنده و سرویس دهنده استفاده کرد . [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;" dir="rtl">نویسنده : شرکت سخاروش</p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در <a style="font-family: Tahoma; font-size: 10pt;" href="http://www.srco.ir/Articles/DocView.asp?ID=554">بخش اول</a> ضمن بررسی تاثیر متقابل وب بر نرم افزار ، مروری داشتیم به وب ایستا و وب پویا و  این که برای انجام پردازش های مورد نیاز در برنامه های وب می توان از امکانات و  فناوری های متعددی در سمت سرویس گیرنده و سرویس دهنده استفاده کرد . هدف از بیان  مطالب فوق ، پاسخ به این سوال بود که چرا به وجود یک فناوری دیگر نظیر <span lang="en-us">Ajax</span> نیاز است ( گرچه  <span lang="en-us">Ajax</span> یک فناوری نیست و مجموعه ای از فناوری ها را شامل می شود ) .<br />
در <a style="font-family: Tahoma;" href="http://www.srco.ir/Articles/DocView.asp?ID=555">بخش دوم</a> با <span lang="en-us">Ajax</span> و فناوری های مرتبط با آشنا شدیم . در این بخش  به بررسی نمونه برنامه هائی خواهیم پرداخت که در آنها از فناوری <span lang="en-us">Ajax</span> استفاده می گردد . </span></span></p>
<p style="text-align: right;"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"><strong> <span style="font-size: x-small; font-family: Tahoma; color: #336699;">Google Suggest<br />
</span> </strong> </span> <span style="font-size: x-small; font-family: Tahoma;">اجازه دهید کار خود را با نمونه ای آغاز نمائیم که  برای شما کاملا&#8221; آشنا است . در زمان استفاده از اینترنت هر یک از ما بدفعات از  موتورهای جستجو  جهت یافتن اطلاعات مورد نیاز حود استفاده می کنیم . <span lang="en-us">Google</span> یکی از محبوبترین و قدرتمندترین موتورهای جستجو   در اینترنت است . پس از تایپ کلید واژه مورد نظر و فشردن کلید  <span lang="en-us">Google Search</span> ، کلید واژه مورد نظر برای سرویس دهنده  ارسال می گردد . در ادامه ،‌ با توجه به ایجاد زیرساخت اطلاعاتی لازم در سمت سرویس  دهنده ، نتایج استخراج و برای شما ارسال می گردد .<br />
<a style="font-family: Tahoma;" href="http://www.google.com/webhp?complete=1">Google  Suggest</a> ، یکی از اولین نمونه برنامه هائی است که در آن از <span lang="en-us"> Ajax</span> استفاده شده است .برنامه فوق دارای اینترفیسی مشابه صفحه اصلی گوگل است  ( یک <span lang="en-us">text box</span> جهت تایپ کلید واژه مورد نظر به همراه یک <span lang="en-us">button</span> جهت جستجو ) . همه چیز مشابه صفحه اصلی و قدیمی  گوگل است تا زمانی که شروع به تایپ متن مورد نظر خود در <span lang="en-us">text  box</span> نکرده اید . به موازات تایپ متن در محل مربوطه ، گوگل پیشنهادات و یا  اطلاعاتی را از سرویس دهنده دریافت و به شما ارائه می نماید ( یک لیست از واژه ها  به همراه  تعداد نتایج مربوط به هر یک ) .<br />
به عنوان نمونه فرض کنید عبارت <span lang="en-us">srco.ir</span> را در بخش مربوطه  تاپپ نمائیم ، به موازات تایپ هر یک از حروف ، گوگل پیشنهادات خود را ارائه می  نماید . نحوه عملکرد <span lang="en-us">Google Suggest</span> در شکل ۱ نشان  داده شده است . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/introajx02.jpg" border="0" alt="introajx02 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
شکل ۱ : عملکرد برنامه <span lang="en-us">Google Suggest</span> </span></span></p>
<p style="text-align: right;"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"> </span></span></p>
<p style="text-align: right;" dir="rtl"><span lang="en-us"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"><span style="font-size: x-small;"><strong> <span style="color: #336699;">Gollum<br />
</span></strong></span></span></span></span> <span style="font-size: small; font-family: Times New Roman;"> <span style="font-size: x-small; font-family: Tahoma;">یکی از متداولترین موارد استفاده از <span lang="en-us">Ajax</span> ، ایجاد <span lang="en-us">live search</span> است  . <span lang="en-us">Google Suggest</span> که در بخش قبل به آن اشاره گردید ، یک  نمونه متداول در این زمینه است . تاکنون تعداد زیادی از اینگونه برنامه ها پیاده  سازی شده است . به عنوان مثال می توان به برنامه <span lang="en-us"> <a style="font-family: Tahoma;" href="http://gollum.easycp.de/en">Gollum</a></span> اشاره کرد ، که یک <span lang="en-us">live search</span> برای <span lang="en-us"> <a style="font-family: Tahoma;" href="http://www.wikipedia.org/">Wikipedia</a></span> ( بزرگترین دایره المعارف موجود در اینترنت ) <span lang="en-us"> </span>را  ارائه می نماید . نحوه عملکرد این برنامه در شکل ۲ نشان داده شده است . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax3.jpg" border="0" alt="introajax3 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۲ : عملکرد برنامه <span lang="en-us">Gollum</span> با هدف جستجو در Wikipedia </span></span></p>
<p style="text-align: right;"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-family: Tahoma;"><br />
<strong><span style="font-size: x-small; font-family: Tahoma; color: #336699;">ایجاد یک ماشین حساب  مبتنی بر <span lang="en-us">Ajax</span><br />
</span></strong> </span> <span style="font-size: x-small; font-family: Tahoma;">هر برنامه ای که در آن لازم است داده برای سرویس  دهنده ارسال تا پس از انجام پردازش های لازم در سمت سرویس دهنده ، نتایج برای سرویس  گیرنده برگردانده شود ، می تواند شرایط اولیه مورد نیاز  جهت  استفاده از  فناوری <span lang="en-us">Ajax</span> را دارا باشد . <a style="font-family: Tahoma;" href="http://www.funwithjustin.com/ajax-toybox-demo/calculator.html"> پیاده سازی یک ماشین حساب</a> ساده یک نمونه در این زمینه است .<br />
برای استفاده از ماشین حساب فوق ، کاف‍ی است دو عدد ( و یا اپراند ) را در فیلدهای  مربوطه درج و در ادامه  بر روی دکمه عملگر ( جمع ، تفریق ، ضرب ، تقسیم ) مورد  نظر کلیک نمائیم . برنامه فوق با استفاده از <span lang="en-us">Ajax</span> ،  اطلاعات خود را ( شامل اپراندها و نوع عملگر انتخابی ) برای سرویس دهنده ارسال می  نماید تا پس از انجام عملیات ، نتایج برای سرویس گیرنده برگردانده شود . تمامی  عملیات بدون نیاز به <span lang="en-us">refresh</span> صفحه انجام می شود . عملکرد  برنامه فوق از منظر کاربر ،‌ شباهت بسیار زیادی به برنامه های <span lang="en-us"> desktop</span> دارد.<br />
شکل ۳ ، نحوه عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax4.jpg" border="0" alt="introajax4 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۳ : یک ماشین حساب ساده مبتنی بر فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span lang="en-us"> <span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> </span></span></span><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><br />
<strong><span style="color: #336699;"> برنامه های <span lang="en-us">chat</span><br />
</span></strong><span lang="en-us">Ajax</span> در هر مکانی که به بهنگام سازی سنگین  داده نیاز باشد ، می تواند کارآئی فوق العاده ای داشته باشد . برنامه های چت یک  نمونه متداول در این زمینه می باشند . در این نوع برنامه ها ، هر یک از کاربران متن  مورد نظر خود را تایپ و بلافاصله متن تایپ شده برای کاربرانی که به سیستم <span lang="en-us">log in</span> کرده اند ، نمایش داده می شود . <span lang="en-us">Ajax</span> یک گزینه مناسب برای این نوع برنامه ها می باشد ،  چراکه متن نمایش داده شده همواره بهنگام شده است . با استفاده از <span lang="en-us">Ajax</span> می توان متن را به سادگی در هر محلی از صفحه بهنگام  کرد ( بدون این که به <span lang="en-us">refresh</span> نیاز باشد ) .<br />
<a style="font-family: Tahoma;" href="http://www.phpfreechat.net/demo.en.html">PHP  Free Chat</a> ،  یک نمونه از این نوع برنامه های چت است . برنامه فوق با  اتصال به سرویس دهنده پتانسیل های مورد نیاز یک برنامه چت را در اختیار کاربران  قرار می دهد . پس از درج یک نام می توان به برنامه وارد شد . پس از تایپ متن مورد  نظر و فشردن دکمه <span lang="en-us">enter</span> ، متن تایپ شده با استفاده از <span lang="en-us">Ajax</span> برای سرویس دهنده ارسال می گردد . در ادامه ، متن  فوق به همراه سایر متون تایپ شده توسط کاربران در <span lang="en-us">chat box</span> نمایش داده می شود . شکل <span lang="en-us">۴</span> ، نحوه عملکرد برنامه فوق را  نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax5.jpg" border="0" alt="introajax5 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل <span lang="en-us">۴</span> : یک برنامه چت  مبتنی بر فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">پردازش بر روی صفحات گسترده<br />
</span></strong>یکی دیگر از کاربردهای متداول <span lang="en-us">Ajax</span> استفاده  از آن در برنامه های صفحه گسترده و یا همان spreadsheet است . برنامه <a style="font-family: Tahoma;" href="http://numsum.com/spreadsheet/new">Num Sum</a> یک نمونه در این زمینه است . با استفاده از برنامه فوق می توان یک صفحه گسترده  واقعی ( بکارگیری فرمول ها و ذخیره آن بر روی سرویس دهنده مورد نظر )  را  ایجاد کرد . به موازات درج داده ، فرآیند بهنگام سازی بدون نیاز به انجام یک <span lang="en-us">refresh</span> توسط مرورگر انجام خواهد شد . شکل ۵ ، نحوه  عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax6.jpg" border="0" alt="introajax6 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۵ : یک برنامه صفحه گسترده مبتنی بر فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">استفاده از سایت آمازون<br />
</span></strong>استفاده از محتویات موجود بر روی سایت آمازون ، یک نمونه دیگر از برنامه  های وب مبتنی بر فناوری <span lang="en-us">Ajax</span> را نشان می دهد . با  استفاده از <a style="font-family: Tahoma;" href="http://lmap.co.nr/Amazon1.htm"> برنامه فوق</a> می توان تمامی محتویات منتشر شده بر روی سایت آمازون را با یک  ساختار درختی مشاهده کرد .با کلیک بر روی هر گره می توان محصولات مربوط به آن را  مشاهده کرد . شکل ۶ ، نحوه عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax7.jpg" border="0" alt="introajax7 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۶  : مشاهده محتویات سایت آمازون به کمک یک  برنامه وب مبتنی بر فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;"><span lang="en-us">log  in </span> توسط <span lang="en-us">Ajax</span><br />
</span></strong>با استفاده از <span lang="en-us">Ajax</span> می توان فرآیند <span lang="en-us">log in</span> به یک سایت را ساده تر کرد . به عنوان نمونه با مراجعه به آدرس   <a style="font-family: Tahoma;" href="http://www.jamesdam.com/ajax_login/login.html">www.jamesdam.com/ajax_login/login.html</a> صفحه ای را مشاهده خواهیم کرد که  اجازه <span lang="en-us">log in</span> اتوماتیک را با استفاده از <span lang="en-us">Ajax</span> به کاربران می دهد .  در صورتی که یک نام و رمز عبور صحیح توسط کاربر درج نشود و وی در هر مکانی از صفحه  کلیک نماید ، یک پیام خطاء نمایش داده خواهد شد . به عبارت دیگر ، در صورتی که  کاربر  نام و رمز عبور صحیح خود را وارد نماید و در هر مکانی از صفحه کلیک  نماید ، امکان <span lang="en-us">log in</span> به سایت در اختیار وی گذاشته می  شود . شکل ۷ عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax8.jpg" border="0" alt="introajax8 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۷ : فرآیند <span lang="en-us">log in</span> به  یک سایت با استفاده از فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;"><span lang="en-us"> Drag</span> و <span lang="en-us">Drop</span> با <span lang="en-us">Ajax</span><br />
</span></strong>به موازات افزایش چشمگیر شباهت برنامه های وب و برنامه های <span lang="en-us">desktop</span> ، هم اینک می توان بسیاری از عملیاتی را که در  برنامه های <span lang="en-us">desktop</span> انجام می شود در برنامه های وب نیز  انجام داد . فرآیند موسوم به <span lang="en-us">drag &amp; drop</span> نمونه ای در  این زمینه است که بکارگیری آن در برخی برنامه ها می تواند کار را برای کاربران ساده  تر نماید . سرویس دهنده بطور اتوماتیک از آیتم انتخاب شده توسط کاربر آگاه شده و  متناسب با آن از خود واکنش نشان خواهد داد . با مراجعه به آدرس  <a style="font-family: Tahoma;" href="http://www.broken-notebook.com/magnetic"> www.broken-notebook.com/magnetic</a> ، می توان یک نمونه از این نوع   برنامه ها را مشاهده کرد.<br />
زمانی که یک <span lang="en-us">magnet</span> را به یک مکان جدید <span lang="en-us">drag</span> می نمائید ، مکان جدید با استفاده از تکنولوژی <span lang="en-us">Ajax</span> برای سرویس دهنده ارسال و در آن مکان  داده ذخیره می گردد .  در ادامه ، سایر افرادی که صفحه فوق را  مشاهده   خواهند کرد ، آن را در موقعیت و یا مکانی خواهند یافت که قبلا&#8221; شما آن را مستقر  کرده اید ، مگر این که موقعیت آن توسط سایر کاربران تغییر یافته باشد .  شکل ۸  عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax9.jpg" border="0" alt="introajax9 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۸ :  عملیات <span lang="en-us">Drag &amp; Drop</span> به کمک فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">یکی از  متداولترین موارد استفاده از عملیات <span lang="en-us">Drag   &amp; Drop</span> به همراه <span lang="en-us">Ajax</span> ، پیاده سازی <span lang="en-us">Shopping  cart</span> است . زمانی که  خریدار قصد دارد یک آیتم را به یک <span lang="en-us"> shopping cart</span> اضافه نماید ، می بایست کاربر در چندین صفحه حرکت نماید  تا در نهایت با کلیک بر روی‌ دکمه <span lang="en-us">Add to Cart</span> کالای انتخاب شده را به سبد خرید اضافه نماید و مجددا&#8221; برای دنبال نمودن فرآیند  خرید به صفحات قبل برگردد . با استفاده از فناوری <span lang="en-us">Ajax</span> می توان به سادگی کالای مورد نظر خود را انتخاب و در ادامه با عملیات <span lang="en-us">Drag &amp; Drop</span> آن را در سبد خرید قرار داد . زمانی که با روش <span lang="en-us">Drag   &amp; Drop</span> یک آیتم به یک سبد خرید اضافه   می گردد  ، سرویس دهنده   از این موضوع مطلع شده و مبلغ کالای خریداری شده را به مجموع کالاهای خریداری شده  موجود در سبد خرید اضافه می نماید . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;"> تغییر صفحات وب به صورت پویا </span></strong><br />
یکی از حوزه هائی که <span lang="en-us">Ajax</span> در آن توانمند و حرف های  زیادی برای گفتن دارد ، بهنگام سازی و یا تغییر محتویات  یک صفحه وب به صورت پویا است . تاکنون هزاران نوع از این برنامه ها در طی سالیان  اخیر و به کمک فناوری <span lang="en-us">Ajax</span> پیاده سازی شده است .<br />
<a style="font-family: Tahoma;" href="http://www.sanebull.com/test.html">SaneBull Market  Monitor</a> یک نمونه از کاربرد <span lang="en-us">Ajax</span> به منظور تغییر محتویات یک صفحه را نشان می دهد .  همزمان با مشاهده صفحه ، اطلاعات مندرج در آن بهنگام و آخرین وضعیت سهام در اختیار  مخاطبان قرار داده می شود . شکل ۹ ، نحوه عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/introajax10.jpg" border="0" alt="introajax10 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
شکل ۹ : بهنگام سازی محتویات یک صفحه وب به کمک فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> برنامه های واژه  پرداز <span lang="en-us">online</span> یکی دیگر از نمونه کاربردهای <span lang="en-us">Ajax</span> در عرصه ارائه سرویس های <span lang="en-us">online</span> می باشند . یکی از این نوع برنامه ها را می توانید از طریق آدرس  <a style="font-family: Tahoma;" href="http://docs.google.com/"> http://docs.google.com</a> مشاهده نمائید . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">تعامل با  نقشه ها<br />
</span></strong> <span lang="en-us"><a style="font-family: Tahoma;" href="http://maps.google.com/">Google Map</a></span> ، یکی از اولین برنامه هائی است که در آن از  <span lang="en-us">Ajax</span> استفاده شده است  . پس از تمرکز بر روی یک نقطه ، اطلاعات آن نقطه خاص از  سرویس دهنده بازیابی و با یک فرمت مناسب نمایش داده می شود .  شکل ۱۰ ، نحوه  عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax11.jpg" border="0" alt="introajax11 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۱۰ : تعامل با نقشه ها به کمک فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">تاکنون سایت های متعددی با الهام از <span lang="en-us">Google Maps</span> ایجاد شده اند . یک  نمونه آن را  می توانید در آدرس <a style="font-family: Tahoma;" href="http://www.gtraffic.info/">www.gtraffic.info</a> مشاهده نمائید که در آن  اطلاعات ترافیک  حمل و نقل کشور انگلستان در  اختیار کاربران قرار داده می شود<br />
برنامه های نقشه <span lang="en-us">online</span> تنها برنامه های <span lang="en-us">Ajax </span> نمی  باشند که از <span lang="en-us">Pop-up</span> استفاده نمایند . به عنوان نمونه با  مراجعه به آدرس  <a style="font-family: Tahoma;" href="http://www.netflix.com/Top100">www.netflix.com/Top100</a> سایـتی را مشاهده خواهید کرد که با قرار گرفتن بر روی عنوان یک فیلم ، اطلاعات  مربوط به آن نمایش داده می شود ( بطور اتوماتیک داده  از سرویس دهنده و با استفاده از <span lang="en-us">Ajax</span> بازیابی  می گردد و در ادامه در یک <span lang="en-us">pop</span> <span lang="en-us">up</span> نمایش  داده می شود ) .<br />
شکل </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;"><span lang="en-us"> E-mail</span> مبتنی بر <span lang="en-us">Ajax</span><br />
</span></strong>یکی دیگر از موارد استفاده از <span lang="en-us">Ajax</span> ، حمایت  آن از برنامه های پست الکترونیکی مبتنی بر مرورگرها  است . یک نمونه آن را می توانید در آدرس <a style="font-family: Tahoma;" href="http://demo.nextapp.com/Email/app">http://demo.nextapp.com/Email/app</a> مشاهده نمائید .<br />
مشاهده نامه های الکترونیکی از طریق برنامه های<span lang="en-us"> </span>وب مبتنی  بر مرورگر دارای چالش های مختص به خود است .  در این نوع برنامه ها پس از  مشاهده لیستی از نامه های دریافتی با کلیک بر روی هر یک از آنها به صفحه ای هدایت  خواهیم شد که در آن متن نامه الکترونیکی جهت خواندن در اختیار ما قرار داده می شود  . پس از اتمام مطالعه یک نامه ، می بایست جهت مطالعه سایر نامه های دریافتی به   لیست نامه های الکترونیکی  مراجعه کرد .<br />
بکارگیری فناوری <span lang="en-us">Ajax</span> در برنامه های پست الکترونیکی باعث  تغییر اساسی رفتار اینگونه برنامه ها شده است . در این نوع برنامه ها ، پس از  مشاهده لیستی از برنامه ها ، با کلیک بر روی یک نامه دریافتی بطور اتوماتیک نامه  مورد نظر دانلود و برای شما نمایش داده می شود بدون این که لازم باشد مرورگر <span lang="en-us">refresh</span> گردد . محتویات نامه دریافتی در انتهای صفحه  نمایش داه می شود . شکل ۱۱ ، نحوه عملکرد برنامه فوق را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax12.jpg" border="0" alt="introajax12 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۱۱ :‌ یک برنامه وب پست الکترونیکی پیاده سازی  شده به کمک فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> Gmail ، یکی از سرویس  های رایگان گوگل است   که در آن از فناوری <span lang="en-us">Ajax</span> در بخش های متعددی استفاده شده  است .  زمانی که کاربران برای  اولین  مرتبه به برنامه فوق <span lang="en-us">log in</span> می نمایند ،  یک <span lang="en-us">engine</span> رابط کاربر  درون یک  <span lang="en-us">iframes</span> لود می شود .  در ادامه ، تمامی درخواست ها به سرویس دهنده از طریق این <span lang="en-us">engine</span> و به کمک شی <span lang="en-us"> XMLHttp</span> انجام می شود. </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">انتشار اخبار به کمک  <span lang="en-us">Ajax</span><br />
</span></strong><span lang="en-us"> </span>Yahoo! News ، یک نمونه دیگر از  بکارگیری فناوری <span lang="en-us">Ajax</span> در مشاهده اخبار را نشان می دهد .  پس از استقرار موس بر روی یک عنوان خبری ، خلاصه خبر و یک تصویر مرتبط با آن در یک  کادر کوچک نمایش داده می شود . اطلاعات فوق به صورت پویا و به کمک شی  ‌<span lang="en-us">XMLHttp</span> از سرویس دهنده وب بازیابی و نمایش داده می شود . شکل ۱۱ ، نحوه عملکرد برنامه فوق  را نشان می دهد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.srco.ir/Articles/images/introajax13.jpg" border="0" alt="introajax13 Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) "  title="Ajax : تحولی بزرگ در عرصه وب ( بخش سوم ) " /><br />
<span style="font-size: x-small; font-family: Tahoma;">شکل ۱۲ :‌  انتشار خبر به کمک فناوری <span lang="en-us">Ajax</span> </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">خلاصه<br />
</span></strong>با این که <span lang="en-us">Ajax</span> دارای عمری کوتاه است ولی در  زمانی اندک توانسته است در کانون توجه طراحان و پیاده کنندگان برنامه های وب و  سرویس های <span lang="en-us">online</span> قرار بگیرد . پیاده سازی هزاران برنامه  ، دلیلی روشن بر موفقیت <span lang="en-us">Ajax</span> است .  قطعا&#8221; در  آینده ای نه چندان شاهد حضور موفقیت آمیز برنامه های مبتنی بر <span lang="en-us"> Ajax</span> در سایر عرصه های فناوری خواهیم بود .<br />
در این مقاله به ذکر نمونه هائی اندک از کاربرد <span lang="en-us">Ajax</span> در  برنامه های وب اشاره گردید با این هدف که بتوان در عمل کارآئی این فناوری را مشاهده  نمود . شناخت منطقی و اصولی هر فناوری به ما کمک خواهد کرد تا از آن به درستی و در  جایگاه مناسب استفاده نمائیم .<br />
در بخش چهارم به بررسی فریمورک های ارائه شده جهت بکارگیری فناوری <span lang="en-us">Ajax</span> خواهیم پرداخت . </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part3-870830-31/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش دوم )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part2-870829-29/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part2-870829-29/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 23:23:33 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=29</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش در بخش اول ضمن بررسی تاثیر متقابل وب بر نرم افزار ، مروری داشتیم به وب ایستا و وب پویا و این که برای انجام پردازش های مورد نیاز در برنامه های وب می توان از امکانات و فناوری های متعددی در سمت سرویس گیرنده و سرویس دهنده استفاده کرد . [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;" dir="rtl">نویسنده : شرکت سخاروش</p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">در <a style="font-family: Tahoma; font-size: 10pt;" href="http://www.srco.ir/Articles/DocView.asp?ID=554">بخش اول</a> ضمن بررسی تاثیر متقابل وب بر نرم افزار ، مروری داشتیم به وب ایستا و وب پویا و  این که برای انجام پردازش های مورد نیاز در برنامه های وب می توان از امکانات و  فناوری های متعددی در سمت سرویس گیرنده و سرویس دهنده استفاده کرد . هدف از بیان  مطالب فوق ، پاسخ به این سوال بود که چرا به وجود یک فناوری دیگر نظیر <span lang="en-us">Ajax</span> نیاز است ( گرچه  <span lang="en-us">Ajax</span> یک فناوری نیست و مجموعه ای از فناوری ها را شامل می شود ) .<br />
با این که ایده فناورهائی نظیر <span lang="en-us">Ajax </span> در گذشته نیز  وجود داشته است و پیاده کنندگان برنامه های وب در زمان خود با بکارگیری برخی فناوری  ها و ترفندها  توانسته بودند مشکل خود را تا حدود زیادی برطرف نمایند ولی گذشت  زمان و  گسترش  باور نکردنی اینترنت ، باعث شد تا استفاده از بستر فوق  برای ارائه سرویس های <span lang="en-us">online</span> در دستور کار اکثر  سازمان ها و شرکت ها در اقصی نقاط جهان قرار بگیرید . همین موضوع باعث شد که دگر  باره جامعه بزرگ طراحان و پیاده کنندگان برنامه های وب این نیاز را احساس کنند که  به یک راه حل جامع و سیستماتیک برای برخورد با مسائل خود ( خصوصا&#8221; تعامل با کاربر )  در دنیای نوین برنامه نویسی وب نیاز دارند . دنیائی که در آن دقت و سرعت در ارائه  خدمات <span lang="en-us">online</span> با بکارگیری کمترین منابع و تولید بیشترین  بهره وری ، رمز ماندگاری یک سازمان در مدار رقابت و پیشرفت است . همین  امر باعث شد که شرکت های بزرگ تولید کننده نرم افزار و خدمات <span lang="en-us"> online</span> نیز دست به کار شوند و چیزی را خلق کنند که ما امروزه از آن با نام <span lang="en-us">Ajax</span> یاد می کنیم .<br />
در این بخش به بررسی موارد زیر خواهیم پرداخت : </span></span></p>
<ul style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl"> <span style="font-size: x-small; font-family: Tahoma;">تولد <span lang="en-us">Ajax</span> و ریشه یابی علت انتخاب این نام </span></li>
<li dir="rtl"> <span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> Ajax</span> و فناوری های مرتبط با آن </span></li>
<li dir="rtl"> <span style="font-size: x-small; font-family: Tahoma;">اصول حاکم بر فناوری <span lang="en-us">Ajax</span> . </span></li>
<li dir="rtl"> <span style="font-size: x-small; font-family: Tahoma;">نحوه کارکرد <span lang="en-us">Ajax</span> در برنامه های وب </span></li>
<p></span></ul>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">تولد <span lang="en-us">Ajax</span><br />
</span></strong>در فوریه سال ۲۰۰۵ ، Jesse James Garrett از  Adaptive Path مقاله ای را   با عنوان &#8221; <a style="font-family: Tahoma; font-size: 10pt;" href="http://www.adaptivepath.com/publications/essays/archives/000385.php"> یک رویکرد جدید به برنامه های وب</a> &#8220;   بر روی وب سایت خود منشتر کرد .<span lang="en-us"> </span>وی در این مقاله  ضمن اشاره به این موضوع که فاصله بین برنامه های وب و <span lang="en-us">desktop</span> در حال از بین رفتن است  ،  به بررسی دو  نمونه از برنامه های وب جدید با نام <span lang="en-us">Google Suggest</span> و <span lang="en-us">Google Maps</span> پرداخته  بود . Garrett  پس از تشریح نحوه عملکرد برنامه های فوق ، برای اولین  مرتبه از  واژه  <span lang="en-us">Ajax</span> در مقاله خود استفاده کرد  .<br />
وی در مقاله خود دنیائی را پیش بینی کرده  بود که در  آن برنامه های وب از لحاظ قابلیت دستیابی ، پاسخ گوئی و سادگی قابل مقایسه با  برنامه های <span lang="en-us">desktop</span> خواهند  شد . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"> <strong><span style="font-size: x-small; font-family: Tahoma; color: #336699;"><span lang="en-us">Ajax</span> چیست ؟ </span></strong> </span></p>
<ul style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span lang="en-us"> Ajax</span> برگرفته شده از Asynchronous JavaScript  XML است   و مشتمل بر مجموعه ای از  فناوری ها است  ، نه صرفا&#8221; یک فناوری .</span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us">Ajax</span> ، اساس و پایه چیزی  است که امروزه از آن با نام وب ۲<span lang="en-us"> </span>نام برده می شود  ( نسل جدید وب )  .   ایده اصلی ، ایجاد برنامه های وبی است که دارای شکل ظاهری و  توانمندی هائی  مشابه با برنامه  های <span lang="en-us">desktop</span> باشند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us">Ajax</span> چی‍زی بیشتر از یک نگرش  جدید به برنامه های وب نیست . نگرشی که در آن صرفا&#8221;  یک حجم اندک از اطلاعات بین سرویس گیرنده و سرویس دهنده با هدف افزایش تعامل کاربر  با برنامه ، مبادله می گردد . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span lang="en-us">Ajax</span> ، مشتمل بر مجموعه ای از فن آوری ها  است که هر یک دارای جایگاه مختص به خود می باشند :</span></p>
<p>- فن آوری های استاندارد <span lang="en-us">presentation</span> نظیر <span lang="en-us">XHTML</span> و <span lang="en-us">CSS</span><br />
-  بهنگام سازی پویای یک صفحه مستقر شده در حافظه با استفاده از <span lang="en-us">DOM</span> ( برگرفته شده  از <span lang="en-us">Document Object Model</span> )<br />
- مبادله و پردازش داده با استفاده از <span lang="en-us">XML</span> (فرمت مبادله داده  ) و <span lang="en-us">XSLT</span> ‌(  تبدیل <span lang="en-us"> XML</span> به <span lang="en-us">XHTML</span> )<br />
- بازیابی داده غیرهمزمان با استفاده از <span lang="en-us">XMLHttpRequest</span> ( کارگزار اولیه مبادله اطلاعات  )<br />
و جاوا اسکریپت  که همه چیز را به یکدیگر  مرتبط می نماید و از آن برای برنامه نویسی <span lang="en-us">Ajax engine</span> استفاده می  گردد .</li>
<p></span></p>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">در دنیای  واقعی ،  از تمامی فناوری های فوق در <span lang="en-us">Ajax</span> استفاده می گردد   ولی به وجود <span lang="en-us">HTML/XHTML</span> ، <span lang="en-us">DOM</span> و <span lang="en-us">Javascript</span> بیش از همه نیاز است چون :<br />
از <span lang="en-us">XHTML</span> برای نمایش  اطلاعات استفاده می گردد  .<br />
از  <span lang="en-us">DOM</span> برای تغییر بخش  هائی از یک صفحه <span lang="en-us">XHTML</span> بدون  نیاز به <span lang="en-us">load</span> مجدد صفحه  استفاده می گردد.<br />
از جاوا اسکریپت ، برای مقداردهی اولیه ارتباط بین سرویس گیرنده و سرویس دهنده و  بهنگام سازی صفحات وب  به کمک  <span lang="en-us">DOM</span> استفاده می گردد . </span></li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">یک عنصر اساسی و مهم  دیگر که در مقاله  <span lang="en-us">Garrett</span> به آن اشاره نشده است ، ضرورت  انجام پردازش های سمت سرویس  دهنده است . تمامی فناوری های اشاره شده  ( در پاراگراف قبل ) ، در ارتباط مستقیم با <span lang="en-us">Ajax  engine</span> سمت سرویس گیرنده می باشند  . بدون وجود یک سرویس دهنده مطمئن و پاسخگو به منظور ارسال محتویات برای <span lang="en-us">Ajax  engine</span> ، در عمل <span lang="en-us">Ajax</span> فاقد کارآئی لازم خواهد بود  . صرفنظر از فناوری استفاده شده در سمت سرویس دهنده ( نظیر <span lang="en-us">PHP</span> و یا <span lang="en-us">ASP.NET</span> ) ، می بایست این اطمینان حاصل گردد که  داده با فرمت صحیح برای <span lang="en-us">Ajax  engine</span> ارسال می گردد . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">از شی XMLHttpRequest درون جاوا اسکریپت  برای ارتباط با سرویس دهنده استفاده می گردد تا در ادامه بتوان داده برگردانده شده از سرویس دهنده (  با فرمت <span lang="en-us">Xml</span> و یا متن معمولی ) را  پردازش کرد .</span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">از <span lang="en-us">DHTML</span> و  <span lang="en-us">CSS</span> برای نمایش  نتایج در مرورگر  استفاده می گردد . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">هدف  از کنارهم قرار گرفتن تمامی فناوری های  اشاره شده ، این است که شکل ظاهری  برنامه های وب و نحوه پاسخ  گوئی آنها به خواسته کاربران  مشابه برنامه های <span lang="en-us">desktop</span> گردد .</span></p>
</li>
</ul>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">همانگونه که در نام این  فناوری مشخص است ، <span lang="en-us">Ajax</span> مشتمل بر مجموعه ای از  فناوری ها است : Asynchronous JavaScript  XML</span></span></p>
<ul style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"><strong>غیرهمزمان و یا   asynchronous</strong> </span> بدین معنی است که مرورگر لازم نیست منتظر بماند  تا داده    از سرویس دهنده برگردانده شود  و می تواند به محض دریافت داده  آن  را پردازش نماید . به عبارت دیگر ، انتقال داده  در پس زمینه انجام شده و مرورگر مجبور به توقف و انتظار برای تحقق  اتفاقی نخواهد بود .<br />
رویکرد فوق نشاندهنده یکی از ویژگی های مهم و حیاتی <span lang="en-us">Ajax</span> است  . در چنین مواردی‌، می توان داده را  پس از ارسال توسط سرویس دهنده ، پردازش  کرد . لازم نیست تمامی برنامه را معطل رسیدن  داده از سمت سرویس دهنده کرد .<br />
در صورتی که لازم است پردازش های سمت سرویس گیرنده  منتظر دریافت داده بمانند ، مکانیرم دریافت و پردازش داده می بایست بطور همزمان  انجام شود . در صورتی که یک ارتباط ضعیف بین سرویس گیرنده و سرویس دهنده برقرار شده  باشد این موضوع می تواند عملکرد و موفقیت  یک برنامه وب را با مشکل مواجه نماید . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">بخش جاوا اسکریپت  واژه <span lang="en-us">Ajax</span></span> </strong>نیز  بسیار مهم است چراکه بالفعل شدن پتانسیل های <span lang="en-us">Ajax</span> در مرورگر  توسط آن محقق می گردد . <span lang="en-us">Ajax</span> به کمک جاوا اسکریپت با سرویس دهنده  ارتباط خود را برقرار می نماید و در ادامه نیز داده برگردانده شده از سرویس  دهنده را پردازش  می نماید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"><strong>بخش <span lang="en-us">xml</span> واژه <span lang="en-us">Ajax</span> دارای چه  مسئولیتی است</strong></span> ؟  <span lang="en-us">XML</span> به عنوان یک استاندارد  جهانی در عرصه وب مطرح است و به کمک آن  می توان از یک روش مبتنی بر  متن برای مبادله داده در عرصه اینترنت استفاده کرد .  یکی از دلایل مهم گسترش <span lang="en-us">xml</span> ، ماهیت مبتنی بر متن آن است  . با توجه به این که طراحی اینترنت بگونه ای انجام شده بود تا بتواند مستندات مبتنی  بر متن نظیر اسناد <span lang="en-us">HTML</span> را نمایش دهد ، وجود <span lang="en-us">xml</span> به منزله قلابی است که می توان آن را دور اینترنت  انداخت و به صید داده پرداخت. داده ئی که به  همراه ساختار خود می تواند امکان پردازش را در سایر سیستم ها فراهم نماید . به همین دلیل است که برنامه های <span lang="en-us">Ajax</span> بگونه ای نوشته می گردند تا بتوانند بر روی داده برگردانده شده از سرویس دهنده با فرمت <span lang="en-us">xml</span> ، عملیات مورد نظر را انجام دهند . به عبارت  دیگر ، پس از برقراری ارتباط با سرویس دهنده ، داده با فرمت <span lang="en-us">xml</span> برگردانده خواهد شد .<br />
<span lang="en-us">xml</span> ، صرفا&#8221; یکی از روش های برگرداندن داده است  و در صورت لزوم می توان از  فرمت هائی دیگر نظیر متن معمولی نیز استفاده کرد . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">در کنار جاوا اسکریپت و <span lang="en-us">XML</span> ، فناوری <span lang="en-us">Ajax</span> با  فناوری های دیگری نظیر <span lang="en-us">DHTML </span> و <span lang="en-us">CSS</span> نیز کار می کند .  به کمک فناورهای فوق می توان داده  موجود در یک صفحه وب را  بدون نیاز به <span lang="en-us">load</span> تمامی صفحه  بهنگام کرد ( صرفا&#8221; <span lang="en-us">load</span> بخشی که ضرورت آن احساس می شود  )  . پتانسیل فوق  یکی از اهداف و ویژگی های مهم برنامه های وب مبتنی بر فناوری <span lang="en-us"> Ajax</span> محسوب می گردد . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;">بخشی از جاوا اسکریپت که  امکان <span lang="en-us">Ajax</span> را میسر می سازد ، شی XMLHttpRequest است .  شی فوق تقریبا&#8221; در تمامی مرورگرهای مدرن و پیشرفته از قبل تعبیه شده  است . به کمک این شی امکان اتصال به سرویس دهنده و  مدیریت داده برگردانده شده از  آن در پس زمینه فراهم می گردد .<br />
اقتدار <span lang="en-us">Ajax</span> نه تنها وابسته به جاوا اسکریپت بلکه مدیون  شی XMLHttpRequest است . </span></li>
<p></span></ul>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #336699;"> <strong>اصول <span lang="en-us">Ajax</span><br />
</strong></span><span lang="en-us">Ajax</span> هنوز در ابتدای راه است و بسیاری از  پیاده کنندگان با این پرسش مواجه هستند که از این فناوری در چه زمانی و در چه نوع  برنامه هائی می توان استفاده کرد . عدم شناخت مناسب  از این فناوری باعث می شود تا از  آن در برنامه هائی استفاده  گردد که نه تنها قابلیت و یا ویژگی جدیدی را به برنامه  اضافه نمی نماید بلکه در بسیاری از موارد  عدم موفقیت یک برنامه و نارضایتی کاربران آن را به دنبال خواهد داشت .<br />
زمانی می توان این ادعا را داشت که یک برنامه وب مبتنی بر <span lang="en-us">Ajax</span> در اهداف خود موفق بوده است که  در آن اصول زیر رعایت شده باشد . </span></span></p>
<ul style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">به حداقل رساندن ترافیک</span></strong> : برنامه های <span lang="en-us">Ajax</span> می بایست  حتی المقدور حجم اندکی از اطلاعات را برای سرویس دهنده ارسال و یا  از آن دریافت نمایند .  به عبارت دیگر ، با بکارگیری <span lang="en-us">Ajax</span> می  بایست حجم ترافیک بین سرویس  گیرنده و سرویس دهنده  کاهش  یابد . </span><span style="font-size: x-small;"> </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span style="color: #800000;"><strong>عدم  سردرگمی کاربر </strong></span>:  برنامه های وب مبتنی بر فناوری <span lang="en-us">Ajax</span> مدل تعامل با کاربر مختلفی را نسبت به برنامه های وب سنتی معرفی  کرده اند . در  مقابل وب استاندارد ( کلیک کن و منتظر باش ) ، برخی برنامه های <span lang="en-us">Ajax</span> از یک رویکرد دیگر برای پیاده سازی بخش  رابط  کاربر خود نظیر <span lang="en-us">drag-and-drop</span> و یا <span lang="en-us">double-clicking</span> استفاده می نمایند . صرفنظر از نوع مدل انتخاب شده برای پیاه سازی تعامل با کاربر ،  مهم ارائه امکانات بخش رابط کاربر بگونه ای  است که همواره کاربر در سریع ترین زمان  بتواند در خصوص انجام حرکت بعدی خود تصمیم گیری نماید . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"> <strong>استفاده منطقی از تجارب مثبت گذشته </strong></span>: وقت خود را بی خودی به ابداع مدل های تعامل با کاربر جدید که کاربران  شما با آنها آشنا نیستند ، هدر ندهید .  استفاده از تجارب برنامه های  وب سنتی و <span lang="en-us">desktop</span> می  تواند پیاده کنندگان را در طراحی یک مدل مناسب جهت تعامل با کاربر کمک نماید . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><span style="color: #800000;"> <strong>اجتناب از بکارگیری عناصر غیرضروری </strong></span><strong><span style="color: #800000;"> </span></strong>: از بکارگیری عناصر غیر ضروری نظیر تکرار انیمیشن و  بخش هائی نظیر <span lang="en-us">blinking page</span> اجتناب کنید. بکارگیری این چنین عناصری  باعث می شود تا کاربران در  زمان انجام فعالیت های  مورد نظر دچار سردرگمی شوند . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">قابلیت دسترسی و رضایت کاربران</span></strong> : برنامه های <span lang="en-us">Ajax</span> را با در نظر گرفتن رفتار و نوع خواسته کاربران  طراحی و پیاده سازی نمائید . برای طراحی و پیاده سازی خود را در یک مکان بسته محبوس  ننمائید. در غیر اینصورت همواره این احتمال وجود خواهد داشت که خواسته برخی از  کاربران نادیده گرفته شود . قابلیت دسترسی و رضایت کاربران یکی از نکات بسیار مهم  در موفقیت یک برنامه کامپیوتری محسوب می گردد . </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">پیشگیری از دانلود تمامی  صفحه</span></strong> : تمامی  ارتباط با سرویس دهنده پس از مقدار دهی اولیه دانلود صفحه ، می بایست توسط <span lang="en-us">Ajax engine</span> مدیریت گردد .  عدم مدیریت صحیح بر روی فرآیند فوق می تواند بخش رابط کاربر یک برنامه وب را با  مشکل اساسی مواجه سازد ( نظیر دانلود حجم اندکی از داده در یک مکان و دانلود تمامی  صفحه در بخش دیگر ) </span></p>
</li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">توجه  به نیاز کاربران  قبل از هر چیز</span></strong> : برنامه های <span lang="en-us">Ajax</span> را قبل از هر چیز  با کاربران  خیالی در ذهن طراحی نمائید . سهولت در انجام عملیات متداول می بایست در دستور کار  قرار بگیرد . کمتر در اندیشه انجام کارهای تبلیغاتی و یا افکت های غیرضروری باشید . </span></p>
</li>
<p></span></ul>
<p style="text-align: right;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">نقطه مشترک بین تمامی  اصول اشاره شده ،  قابلیت استفاده  از یک برنامه با حداکثر ظرفیت و رضایتمندی کاربران است . هدف اولیه <span lang="en-us">Ajax</span> ، بهبود و ارتقاء بخش رابط کاربر برنامه ها با هدف  رضایتمندی بیشتر کاربران است . </span> </span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">نحوه کار <span lang="en-us">Ajax</span><br />
</span></strong>در برنامه های وب سنتی  مرورگر مسئولیت مقداردهی اولیه درخواست  ها  و پردازش آنها  جهت ارسال به سرویس دهنده وب را برعهده  دارد . در مقابل ،  در  <span lang="en-us">Ajax</span> یک لایه میانی ( که <span lang="en-us">Garrett </span>آن را <span lang="en-us">Ajax engine</span> نامید ) مسئولیت  مدیریت  ارتباط برقرار شده را برعهده می گیرد .  <span lang="en-us">Ajax engine</span> در واقع  یک شی جاوا  اسکریپت و یا تابع است  و  زمانی که به اطلاعاتی از سرویس دهنده نیاز باشد ،‌   از آن استفاده خواهد شد .<br />
در مقابل برنامه های وب سنتی که یک لینک به یک منبع دیگر ارائه می گردد  ( نظیر یک صفحه وب دیگر ) ، در برنامه های وب مبتنی بر <span lang="en-us">Ajax</span> ، هر لینک باعث فراخوانی <span lang="en-us">Ajax engine</span> می گردد که وظیفه  آن زمانبندی و انجام درخواست بطور غیرهمزمان است  .<br />
سرویس دهنده ( که از لحاظ سنتی  اسناد <span lang="en-us">HTML</span> ،  تصاویر ، <span lang="en-us">CSS</span> و جاوا اسکریپت را ارائه می نماید )  ، بگونه ای پیکربندی  می گردد تا داده مورد نیاز را در اختیار <span lang="en-us">Ajax Engine</span> قرار دهد. این داده می تواند متن معمولی ، <span lang="en-us">XML </span> و یا سایر فرمت های  مورد نیاز داده باشد.  بدیهی است در چنین مواردی ، <span lang="en-us">Ajax engine</span> می بایست قادر  به خواندن و تفسیر داده باشد .<br />
پس از دریافت پاسخ لازم از سرویس دهنده ، <span lang="en-us">Ajax engine</span> عملیات خود را که اغلب بررسی داده و ایجاد تغییرات لازم در بخش رابط کاربر است ،   آغاز می نماید .  با توجه به این که  در فرآیند فوق به اطلاعات کمتری نسبت به برنامه های وب سنتی نیاز است ، بخش رابط  کاربر با سرعت بیشتری بهنگام می گردد و کاربر قادر به انجام کارهای خود با سرعت  بیشتری است .<br />
در  شکل  ۱ ، عملکرد برنامه های وب سنتی نسبت به برنامه های وب  مبتنی بر <span lang="en-us">Ajax</span> نشان داده شده است . </span></span></p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"> <img src="http://www.srco.ir/Articles/images/Ajax1.jpg" border="0" alt="Ajax1  Ajax : تحولی بزرگ در عرصه وب ( بخش دوم ) "  title=" Ajax : تحولی بزرگ در عرصه وب ( بخش دوم ) " /></span></span></p>
<p>شکل ۱  : عملکرد برنامه های وب سنتی نسبت به برنامه های وب مبتنی بر <span lang="en-us"> Ajax</span><br />
منبع : Adaptive Path</p>
<p style="text-align: right;" dir="rtl"><span style="font-size: small; font-family: Times New Roman;"><strong><span style="font-size: x-small; font-family: Tahoma; color: #336699;"> خلاصه<br />
</span></strong><span style="font-size: x-small; font-family: Tahoma;">فناوری های مرتبط با <span lang="en-us">Ajax</span> در طی سالیان گذشته  مطرح  و  از  آنها در مجموعه ای از نرم افزارها استفاده می گردید .  Jesse James Garrett در  مقاله خود تمامی فناوری های اشاره شده را در زیر یک سقف و با نام <span lang="en-us">Ajax</span> کنار هم قرار داد . با بکارگیری فناوری <span lang="en-us">Ajax</span> در نرم افزارهای برجسته ای نظیر Google Suggest در  سال ۲۰۰۵ ، <span lang="en-us">Ajax</span> در کانون توجه جهانی  قرار گرفت .  وب ۲ ، برای نیل به اهداف خود به <span lang="en-us">Ajax</span> دل بسته است و <span lang="en-us">Ajax</span> می تواند تصویری جدید از برنامه های وب را در عرصه  اینترنت به نمایش بگذارد .<br />
وجود برخی خصایص خاص در بخش رابط کاربر برنامه های <span lang="en-us">desktop</span> و نحوه تعامل کاربران با اینگونه برنامه ها ، حلقه گمشده ای در برنامه های وب است.  حلقه ای که <span lang="en-us">Ajax</span> سعی دارد خلاء آن را پر کند .   قطعا&#8221; در آینده ای نه چندان دور شاهد حضور بیشتر برنامه های وبی خواهیم بود که  دارای شکل ظاهری و عملکردی مشابه (خصوصا&#8221; تعامل با کاربر )  با برنامه های <span lang="en-us">desktop</span> می باشند .<br />
شاید روزی فرا رسد که یکی از واژه های برنامه های <span lang="en-us">desktop</span> و برنامه های وب به نفع دیگری کنار برود و یا هر دو بر یک نام مشترک دیگر به توافق  برسند .<br />
در بخش سوم به بررسی نمونه برنامه هائی خواهیم پرداخت که در آنها از فناوری <span lang="en-us">Ajax</span> استفاده می گردد . </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part2-870829-29/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : تحولی بزرگ در عرصه وب ( بخش اول )</title>
		<link>http://www.irandevelopers.com/programming/ajax-part1-870829-27/</link>
		<comments>http://www.irandevelopers.com/programming/ajax-part1-870829-27/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 23:21:36 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[آجکس Ajax]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=27</guid>
		<description><![CDATA[نویسنده : شرکت سخاروش اینترنت و مهمترین سرویس آن وب علاوه بر این که حیات بشری را در هزاره سوم دستخوش تحولات فراوانی کرده است ، توانسته است منشاء تحولات گسترده ای در سایر حوزه های فناوری گردد . در واقع ، تحول در زندگی بشریت  مدیون پیشرفت در سایر حوزه های فناوری‌ است . [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify">نویسنده : شرکت سخاروش</p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">اینترنت و مهمترین  سرویس آن وب علاوه بر این  که حیات بشری را در هزاره سوم دستخوش تحولات فراوانی کرده است ، توانسته است منشاء  تحولات گسترده ای در سایر حوزه های فناوری گردد . در واقع ، تحول در زندگی بشریت   مدیون پیشرفت در سایر حوزه های فناوری‌ است . یکی از این حوزه ها ، صنعت نرم افزار است .<br />
برای آشنائی با این  تحول بد نیست مروری سریع داشته باشیم به گذشته وب و نرم افزار تا از این رهگذر  بتوانیم ضرورت ایجاد فناورهای جدیدی نظیر <span lang="en-us">Ajax</span> ( برگرفته شده از Asynchronous JavaScript And XML ) را بهتر درک کنیم . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">مروری بر وب  ، نرم افزار و تاثیر متقابل آنها بر  یکدیگر<br />
</span></strong>موجودات جدیدی که ما امروزه آنها را با نام برنامه های وب می شناسیم ،  ماحصل تاثیر وب بر نرم افزار و رشد رو به فزاینده استفاده از اینترنت در متن زندگی  ، ماحصل تاثیر نرم افزار بر وب است . اجازه دهید ببینیم موضوع از کجا و با چه  مختصاتی شروع گردید و هم اینک در چه وضعیتی به سر می بریم . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">وب ایستا </span></strong>: زمانی که تیم . برنرز لی در سال ۱۹۹۰ اولین پیشنهاد خود در رابطه با وب را ارائه  کرد ،  ایده کار بسیار ساده  بود : ایجاد یک شبکه از اطلاعات متصل  شده به یکدیگر با استفاده از ابرمتن ها و <span lang="en-us">URIs</span> ( برگرفته  شده از  Uniform Resource Identifiers ) . وب در آغاز به عنوان یک  رسانه اشتراک اطلاعات مطرح گردید تا از طریق آن دانشمندان و محققین بتوانند دانش و  اطلاعات را بین خود به اشتراک گذاشته و نتایج تحقیقات را با یکدیگر مبادله نمایند .  ارائه دهند گان با استفاده از یک استاندارد مستند سازی ، اطلاعات خود را تهیه و  آنها را به مخاطبان خود ارائه می کردند . در آغاز برای استاندارد مستند سازی از  ابزاری که در آن زمان خود هنوز استاندارد نشده بود استفاده می  گردید . <span lang="en-us">HTML</span> ، ابزاری است که  با بکارگیری مجموعه ای  از تگ ها ،  استاندارد لازم جهت نمایش یک مستند در نرم افزارهای نمایش دهنده  ( مرورگرها )  را فراهم می  نماید . نرم افزارهای نمایش دهنده ، مجهز به مفسرهائی جهت تفسیر تگ  ها و نمایش اطلاعات موجود در مستند بر اساس تعاریف از قبل تعریف شده شدند . در آن  زمان که به سال های ابتدائی دهه ۹۰ میلادی برمی گردد ، چیزی با نام برنامه های وب  وجود نداشت و وب به عنوان رسانه ای جهت اشتراک و مبادله اطلاعات مطرح بود .  تمامی تعاملات در عرصه وب محدود به درخواست یک مستند توسط سرویس  گیرنده و ارسال  آن توسط سرویس دهنده بود . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">وب پویا با تمرکز بر روی پردازش های سمت سرویس گیرنده</span></strong> : در ادامه ، نیاز به  انجام برخی پردازش های اولیه مطرح گردید . با  توجه به این که اینترنت  از یک بستر  سرویس گیرنده و سرویس دهنده  ( <span lang="en-us">client server based</span>) به منظور دریافت درخواست کاربر و پاسخ به  آن استفاده می کرد ، طراحان و پیاده کنندگان برای تحقق پردازش ها بر روی دو گزینه متمرکز شدند : انجام پردازش  ها در سمت سرویس گیرنده و  یا سمت سرویس دهنده . در آغاز ، برای انجام پردازش  ها بر روی سرویس گیرنده متمرکز شدند . با این هدف که بتوان پردازش های مورد نیاز را  ( با حوزه ای که در آن زمان تعریف شده بود ) ، در سمت سرویس گیرنده انجام داد .  برای تحقق خواسته فوق لازم  بود که بستر و ابزارهای لازم در بطن مرورگر ها ایجاد  گردد . ظهور فناورهائی نظیر <span lang="en-us">Html-DOM</span> ، جاوااسکریپت ، <span lang="en-us">CSS </span> ( برگرفته شده از  cascading style  sheets ) و <span lang="en-us">DHTML</span> ( برگرفته شده از Dynamic  HTML  )  از جمله  مهمترین تلاش های انجام گرفته در آن زمان برای تحقق پردازش ها در سمت سرویس  گیرنده  بود . برای آشنائی بیشتر با تلاش های انجام گرفته در آن زمان  بد نیست مروری سریع داشته باشیم  به آنچه طی سالیان گذشته در عرصه وب اتفاق افتاده است . </span></span></p>
<ul dir="rtl"><span style="font-size: small; font-family: Times New Roman;"></p>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span style="color: #008000;"><strong>عرضه جاوا اسکریپت</strong></span> : Netscape Navigator اولین مرورگر وبی  بود که پس از طراحی و پیاده سازی موفقیت آمیز توانست به عنوان کاتالیزوری در رشد وب  و عرضه فناوری های مرتبط با آن نقش بسیار مثبتی را ایفاء‌ کند . اغلب سازمان ها و  شرکت ها از مرورگر فوق به عنوان معیار استاندارد خود برای پیاده سازی فناوری های  جدید استفاده می کردند . یکی از این فناوری ها ، جاوا اسکریپت بود .<br />
جاو ااسکریپت توسط Brendan Eich از نت اسکیپ ایجاد و  نسخه شماره دو  آن  در سال ۱۹۹۵ عرضه گردید . برای اولین مرتبه ، پیاده کنندگان قادر به ایجاد صفحات  وبی شدند که می توانست با کاربر تعامل برخورد نماید . استفاده از جاوا اسکریپت برای  معتبر سازی داده در سمت سرویس گیرنده و حذف برخی مبادلات غیره ضروری بین سرویس  گیرنده و سرویس دهنده از جمله مهمترین دستاورد بکارگیری جاوا اسکریپت در آن زمان  بود . بدین ترتیب نطفه پردازش های ساده در سمت سرویس گیرنده به کمک  جاوا اسکریپت بسته شد . قابلیت فوق در زمانی که اکثر کاربران اینترنت از طریق یک  مودم با سرعت ۸ . ۲۸ ( <span lang="en-us">Kbps</span> ) به شبکه وصل می شدند ،  باعث می شد که تعداد دفعاتی که کاربران مجبور به انتظار برای دریافت یک پاسخ از  سرویس دهنده باشند ،  کاهش یابد . تحول فوق اولین مرحله جدی  به سمت رویکرد <span lang="en-us">Ajax</span> در آن زمان بود . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <strong><span style="color: #008000;"> ایجاد فریم :</span></strong> در نسخه اولیه <span lang="en-us">HTML</span> با هر سند به عنوان یک موجودیت رفتار می شد   تا این که در نسخه شماره چهار فریم ها معرفی گردیدند . با استفاده از فریم ها   نمایش یک صفحه وب می توانست مشتمل بر بکارگیری مجموعه ای از سایر صفحات وب باشد .  ایده فوق یک اصلاح ساختاری اساسی در خصوص نحوه نمایش یک صفحه وب بود .   Netscape Navigator 2.0 اولین مرورگری بود که از فریم ها و جاوا اسکریپت حمایت کرد  . این یک مرحله جدی به سمت رشد و توسعه <span lang="en-us">Ajax</span> در آن زمان  بود .<br />
با توجه به این که یک فریم ، یک درخواست مجزاء را   برای سرویس دهنده ایجاد می کرد ، قابلیت کنترل یک فریم و محتویات آن با استفاده از  جاوا اسکریپت دنیای جدیدی را پیش روی طراحان و پیاده کنندگان صفحات وب قرار داد . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <strong><span style="color: #008000;">روش فریم  مخفی</span></strong> : به موازات این که پیاده کنندگان درگیر نحوه استفاده از فریم ها شدند  ، یک  روش جدید با هدف تسهیل در امر ارتباط بین سرویس گیرنده و سرویس دهنده مطرح گردید . روش فریم مخفی شامل تنظیم یک <span lang="en-us">frameset</span> با طول و یا عرض صفر پیکسل است که هدف اساسی آن انجام فرآیند مقداردهی اولیه با  سرویس دهنده بود . فریم مخفی شامل یک فرم <span lang="en-us">HTML</span> با فیلدهای خاصی است که می توانست بطور اتوماتیک توسط جاوا اسکریپت تکمیل و برای  سرویس دهنده ارسال گردد . زمانی که فریم از سرویس دهنده مراجعت می کرد ، یک تایع  دیگر جاوا اسکریپت فراخوانده می شد تا اعلام نماید که داده از سمت سرویس دهنده  برگردانده شده است . روش فریم مخفی ، اولین مدل درخواست و پاسخ غیرهمزمان را برای  برنامه های وب به ارمغان آورد ( اولین رویکرد به مدل ارتباطی <span lang="en-us"> Ajax</span> ) . </span></p>
</li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span style="color: #008000;"><strong><span lang="en-us"> Dynamic HTML </span> و <span lang="en-us">DOM</span> : </strong></span>تا سال ۱۹۹۶ ، وب یک دنیای ایستا را تجربه می کرد  و برای تعامل محدود با کاربر از جاوا اسکریپت و روش فریم های مخفی استفاده می  گردید . همچنان امکان تغییر در محتویات یک صفحه بدون نیاز به <span lang="en-us">load</span> مجدد آن از سرویس دهنده وجود نداشت .   در ادامه <span lang="en-us">IE 4.0</span> ( برگرفته شده از  Internet Explorer  )  توسط شرکت مایکروسافت  ارائه گردید . در این نسخه علاوه بر بکارگیری اکثر فناوری های استفاده شده در  Netscape Navigator ، یک ویژگی مهم دیگر  با نام <span lang="en-us">DHTML</span> (  برگرفته شده از Dynamic HTML  ) نیز  ارائه گردید . <span lang="en-us"> DHTML</span> به پیاده کنندگان اجازه می داد تا بتوانند هر بخشی از یک صفحه مستقر  شده در حافظه سرویس گیرنده را با استفاده از جاوا اسکریپت تغییر دهند . <span lang="en-us">DHTML</span> به همراه عرضه غیره منتظره <span lang="en-us">CSS</span> ( برگرفته شده از  cascading style sheets ) به وب و نحوه پیاده سازی صفحات وب  یک نیروی تازه داد. پیاده کنندگان توانستند با ترکیب <span lang="en-us">DHTML</span> و روش فریم های مخفی هر بخشی از یک صفحه را با استفاده از اطلاعات دریافت شده از  سرویس دهنده <span lang="en-us">refresh</span> نمایند . ویژگی فوق در زمان خود توانست یک تحول بزرگ در عرصه وب را ایجاد نماید .<br />
در ادامه ،  <span lang="en-us">DOM</span> ( برگرفته شده از  Document Object  Model  ) ارائه گردید . برخلاف <span lang="en-us">DHTML</span> که صرفا&#8221;  امکان تغییر بخش هائی خاص از یک صفحه وب را فراهم می کرد ، <span lang="en-us">DOM </span> دارای یک هدف بلندپروازانه دیگر بود . هدف <span lang="en-us">DOM</span> ارائه یک ساختار برای تمامی صفحه بود . انجام عملیات و یا پردازش بر اساس ساختار  فوق ، امکان تغییر یک صفحه را فراهم می آورد . این مرحله بعدی به سمت <span lang="en-us">Ajax </span>بود . </span></li>
<li dir="rtl">
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"> <span style="color: #008000;"><strong><span lang="en-us"> Iframes</span> : </strong></span>با این که روش فریم مخفی بطور غیرقابل پیش بینی متداول گردید ،  ولی دارای چالش های مختص به خود بود . افرادی می بایست زمان زیادی را صرف نوشتن یک <span lang="en-us">frameset</span> می کردند  تا شرایط استفاده از فریم های مخفی  فراهم گردد .  زمانی که عنصر <span lang="en-us">&lt;/ iframe </span> <span lang="en-us">&gt; </span> در سال ۱۹۹۷ و به عنوان بخشی از نسخه رسمی <span lang="en-us">HTML  4.0</span> ارائه گردید ، یک قدم اساسی دیگر به سمت انقلاب بر روی وب حرکت شد .<br />
در مقابل تعریف <span lang="en-us">frameset</span> ، پیاده کنندگان قادر به  استفاده از فریم ها در هر مکانی از صفحه شدند . بدین ترتیب پیاده کنندگان توانستند  از  <span lang="en-us">iframe</span> نامرئی ( با بکارگیری قابلیت های <span lang="en-us">CSS</span> ) در یک صفحه استفاده نمایند  و شرایط عملیاتی لازم جهت مبادله داده بین  سرویس گیرنده و سرویس دهنده را  فراهم نمایند . زمانی که<span lang="en-us"> </span> نسخه نهائی <span lang="en-us">DOM</span> در <span lang="en-us">IE 5.0</span> و <span lang="en-us">Netscape 6.0</span> پیاده سازی گردید ، قابلیت ایجاد فریم ها  به صورت پویا نیز فراهم گردید . در چنین حالتی از یک تابع جاوا اسکریپت به منظور  ایجاد یک <span lang="en-us">iframe</span> ، ایجاد یک درخواست و دریافت پاسخ (  جملگی بدون نیاز به اضافه کردن تگ های <span lang="en-us">HTML</span> اضافه در یک  صفحه ) استفاده می گردید . این روش معروف به روش <span lang="en-us">iframe</span> مخفی گردید . </span></li>
<li>
<p dir="rtl" align="justify"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #008000;"><span lang="en-us"> XMLHttp</span> : </span></strong>پیاده کنندگان مرورگر شرکت مایکروسافت  پس از مشاهده عمومیت استفاده از روش هائی‌ نظیر فریم مخفی و <span lang="en-us"> iframe</span> مخفی ، تصمیم گرفتند یک ابزار بهتر جهت تعامل بین سرویس دهنده و  سرویس گیرنده را ارائه نمایند . این ابزار به شکل یک اکتیوایکس و با نام  <span lang="en-us">XMLHttp</span> در سال ۲۰۰۱ ارائه گردید .<br />
زمانی که مایکروسافت حمایت خود از <span lang="en-us">XML</span> را از طریق یک  کتابخانه با  نام <span lang="en-us">MSXML</span> آغاز کرد ، شی <span lang="en-us">XMLHttp</span> نیز به همراه آن ارائه گردید .<br />
با این که شی‌ فوق به همراه خود نام <span lang="en-us">XML </span> را  یدک می کشید ولی  چیزی بمراتب بیشتر از روشی برای انجام عملیات بر روی داده <span lang="en-us">XML </span> بود . شی فوق همانند یک درخواست <span lang="en-us">HTTP</span> بود که می توانست توسط جاوا اسکریپت کنترل گردد .  پیاده کنندگان دارای قدرت دستیابی به کدهای وضعیت <span lang="en-us">HTTP</span> و  هدر همانند داده برگردانده شده از طریق سرویس دهنده بودند . داده می توانست به صورت <span lang="en-us">XML</span> ساختیافته ، اشیاء سریال شده جاوا اسکریپت و یا سایر  فرمت های مورد نظر پیاده کننده باشد . در مقابل استفاده از فریم های مخفی و یا <span lang="en-us">iframe</span> ، این امر میسر  گردید که به سرویس دهنده از طریق کد  و توسط جاوا اسکریپت دستیابی داشت ( مستقل از چرخه <span lang="en-us">load</span> و  <span lang="en-us">reload</span> صفحه ) . شی <span lang="en-us">XMLHttp</span> پس از مدتی به عنوان یک موفقیت بزرگ برای پیاده  کنندگان مرورگر <span lang="en-us">IE </span> عرض اندام کرد .<br />
به موازات متداول شدن شی فوق ، پیاده کنندگان در <span lang="en-us">Mozilla</span> نسخه اختصاصی از  <span lang="en-us">XMLHttp</span> را پیاده سازی کردند . در مقابل  اجازه دستیابی  از طریق اکتیو ایکس ، پیاده کنندگان موزیلا متدها و خصلت ها را در یک  شی ذاتی مرورگر و با نام objectXMLHttpRequest ارائه کردند . پس از این که دو  مرورگر اصلی در بازار هر یک توانستند به نوعی از <span lang="en-us">XMLHttp</span> حمایت نمایند ، مرورگرهائی  دیگر نظیر <span lang="en-us">Opera</span> و <span lang="en-us">Safari</span> نیز هر یک به نوعی حمایت خود از شی فوق را اعلام  کردند . </span></li>
<p></span></ul>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;">بدین ترتیب پیاده کنندگان صفحات وب توانستند ، صفحاتی را خلق نمایند که با  تعبیه کدهای مورد نیاز در آنها ، امکان پردازش در سمت سرویس گیرنده را فراهم نمایند  . انجام پردازش های اولیه  نظیر تغییر رنگ و شکل ظاهری صفحات ،  مدیریت عناصر موجود بر روی  یک صفحه و تغییر آنها در زمان اجراء  متناسب با عملیات کاربر  ، بررسی صحت داده ورودی توسط کاربر در یک فرم ساده اطلاعاتی  ، دریافت داده در پس زمینه و عدم نیاز به ارسال تمامی صفحه و بهنگام سازی بخش هائی  خاص از آن ( با بکارگیری فریم ها ) ، نمونه هائی از تاثیر فناوری هائی بود که توان  پردازش در سمت سرویس گیرنده را در اختیار پیاده کنندگان قرار می داد . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #800000;">وب پویا با تمرکز بر روی پردازش های سمت سرویس </span></strong> </span> <strong><span style="font-size: x-small; font-family: Tahoma; color: #800000;">دهنده </span></strong><span style="font-size: x-small; font-family: Tahoma;"><br />
همزمان با گسترش  اینترنت و  وب ، ایجاد صفحات وب  با محتویات پویا با اتکاء به منابع  داده موجود در سمت سرویس دهنده و سایر شرایط تاثیر گذار در  فرآیند پاسخ به درخواست  کاربران مطرح گردید . همین موضوع باعث شد که توجه به سرویس دهنده برای انجام برخی  پردازش ها  نیز در دستور کار قرار بگیرد . ظهور فناورهائی نظیر  <span lang="en-us">ASP</span> ( برگرفته شده از <span lang="en-us">Active Server  Page</span> ) و <span lang="en-us">PHP</span> ( برگرفته شده از  Hypertext  Preprocessor  ) از اوایل سال  ۱۹۹۶ پاسخی به این نیاز بود . از آن زمان به بعد بود که کم کم واژه برنامه های وب  قدم در عرصه نرم افزار گذاشت . اگر به تعاریف آن زمان برگردیم مشاهده می کنیم که در  ابتدا از این اصطلاح در خصوص صفحات وب پویا استفاده می گردید .<br />
نگرش جزیره ای به  فناورهای مرتبط با برنامه های وب تا اوایل سال ۱۹۹۹ ادامه یافت . تا این که شرکت  های متعددی به فکر ارائه یک پلت فرم با در نظر گرفتن واقعیتی به نام اینترنت  افتادند .  دات نت ، پلت فرم ارائه شده توسط شرکت مایکروسافت یک نمونه در این زمینه است  که از صدر  تا ذیل آن با در نظر گرفتن واقعیتی با نام اینترنت طراحی و پیاده سازی شده است .<br />
در  این دوران بود که به برنامه های وب با یک نگاه جامع تر و سیستماتیک تر نگاه می شد  .  در طی پنج سال گذشته ، این نوع برنامه ها  توانستند با بکارگیری مجموعه ای از  فناوری ها  منشاء تحولات عمده ای در خصوص بردن اینترنت در  متن  زندگی (و نه حاشیه ! )  مردم جهان باشند . ایده &#8221; نرم افزار به عنوان سرویس &#8221; و یا برنامه  نویسی سرویس گراء از نگرش های جدید به مقوله نرم افزار و دنیای برنامه نویس‍ی در  عرصه وب است .<br />
موج استفاده از اینترنت  برای ارائه خدمات <span lang="en-us">online </span>( ارائه شده به کاربران از طریق  برنامه های وب )  باعث گردید تا معماری و رفتار اینگونه برنامه ها با تامل  بیشتر مطالعه و بررسی گردد . هدف ، ایجاد برنامه های وب با کارآئی مطلوب است تا ضمن  ارائه خدمات خود دارای ویژگی هائی نظیر : افزایش تعامل کاربر با برنامه ( همانند  برنامه های <span lang="en-us">desktop</span> ) ، استفاده بهینه از محیط انتقال و  به حداقل رساندن ترافیک آن ، مدیریت بهینه منابع سمت سرویس گیرنده در پاسخ به  رویدادهای محقق شده سمت سرویس گیرنده ، عدم ارسال اطلاعات غیره ضروری توسط سرویس  گیرنده و &#8230; باشند .  ماحصل این تفکرات ظهور فناوری جدیدی با نام <span lang="en-us">Ajax</span> است که شرکت هائی نظیر گوگل و  مایکروسافت توانستند از سال ۲۰۰۵ با بکارگیری این فناوری تحول بزرگی را در عرصه  برخی از سرویس ها و خدمات خود ایجاد نمایند . </span></span></p>
<p dir="rtl" align="justify"><span style="font-size: small; font-family: Times New Roman;"><span style="font-size: x-small; font-family: Tahoma;"><strong> <span style="color: #336699;">حمع بندی</span></strong> !<br />
همزمان با بحث معماری سرویس گیرنده و سرویس دهنده   دو واژه   <span lang="en-us">fat-client</span> و <span lang="en-us">thin-client</span> قدم در ادبیات نرم افزار گذاشتند . در معماری  فوق ، هدف استفاده از توان پردازشی سرویس  گیرنده و سرویس دهنده برای اجرای یک برنامه است .  استفاده از توان پردازشی هر یک از عناصر اصلی درگیر در معماری فوق و تعریف سهمی خاص  برای هر یک  ( سرویس گیرنده و سرویس دهنده ) ، از اهداف اولیه و در عین حال  بسیار مهم معماری فوق است .<br />
پیاده کنندگان برنامه های کامپیوتری خصوصا&#8221; برنامه های وب ، همواره با این سوال  مواجه بوده و هستند که در تقسیم سهم پردازش ، چه میزان سهم را می بایست به سرویس  گیرنده داد ؟ چه پردازش هائی را می توان در سمت سرویس گیرنده انجام داد ؟ در پاسخ  به این سوال رویکردهای مختلفی مطرح شده است . <span lang="en-us">fat client</span> و <span lang="en-us">thin client</span> دو نمونه متداول در این زمینه می باشند .<br />
در   <span lang="en-us">fat client</span> ، هدف بکارگیری پتانسیل های   مرورگر برای انجام اکثر پردازش ها در یک برنامه وب است . رویکرد فوق در اواسط دهه  ۹۰ میلادی در کانون توجه طراحان و پیاده کنندگان وب قرار گرفت . علت این امر به  تلاش شرکت های بزرگ نرم افزاری در جهت تولید و ارائه فناورهائی بود که توانمندی  مرورگر  در انجام پردازش  را افزایش می داد . ظهور فناورهائی نظیر جاوا  اسکریپت ، ایجاد یک اینترفیس برنامه نویسی در مرورگر ،‌ایجاد یک مدل شی گراء ( ولو  ناقص ) برای یک سند <span lang="en-us">HTML</span> با هدف امکان دستیابی به هر یک  از عناصر موجود در آن ، عرضه <span lang="en-us">DHTML </span>و <span lang="en-us"> CSS</span> جملگی نشاندهنده تلاش هائی است که در آن زمان با هدف افزایش توان پردازش  در سمت سرویس گیرنده مطرح شد .<br />
پس از گذشت مدت زمان کوتاهی ( از ابتدای سال ۱۹۹۶ ) ، تمایل به سمت برنامه های وب  با ویژگی <span lang="en-us">thin client</span> مطرح گردید . در مدل فوق ، هدف  کاهش سهم پردازش در سمت سرویس گیرنده و افزایش پردازش های سمت سرویس دهنده بود .  ظهور فناورهای متعددی نظیر <span lang="en-us">ASP</span> و <span lang="en-us">PHP</span> تنها نمونه ای اندک از تلاش های انجام  یافته در آن دوران برای افزایش توان پردازش در سمت سرویس دهنده است .<br />
با این که در سالیان گذشته همچنان از پتانسیل های سمت سرویس گیرنده برای انجام  پردازش در برنامه های وب استفاده می گردید ، ولی رفتار اکثر برنامه های وب     مبتنی بر این واقعیت بود که : &#8221; داده را وارد نمائید ، صفحه را برای سرویس دهنده  ارسال نمائید و منتظر دریافت پاسخ باشید &#8221; .<br />
هم اینک ما شاهد یک  تحول بزرگ دیگر در عرصه برنامه نویسی هستیم . تحولی که مهمترین دستاورد آن ، تولد  نسل جدیدی از برنامه های وب است که در آنها کاربر با برنامه دارای تعامل بمراتب  بیشتری نسبت به نسل گذشته برنامه های وب است . این تحول عظیم نرم افزاری به کمک  مجموعه ای از فن آوری ها که در مجموع به آنها <span lang="en-us">Ajax</span> گفته  می شود ، محقق می گردد .<br />
آیا <span lang="en-us">Ajax</span> قصد دارد با تغییر در الگوی رفتاری برنامه های  وب فاصله آنها را با برنامه های <span lang="en-us">desktop</span> کاهش دهد ؟   آیا زمان آن رسیده است که برای پردازش های سمت سرویس گیرنده از یک پلت فرم جامع ،  همانند پلت فرم های ارائه شده سمت سرویس دهنده ، استفاده گردد ؟ آیا تاکنون از این  فناوری به منظور ایجاد برنامه های وب  استفاده شده است ؟  با استفاده از  چه مکانیزم هائی می توان مبادله اطلاعات بین سرویس گیرنده و سرویس دهنده را کاهش و  از پهنای باند موجود استفاده بهینه کرد ؟<br />
اجازه دهید به این سوال و سوالات بسیار دیگر در رابطه با <span lang="en-us">Ajax</span> ، فناورهای مرتبط با آن و از همه مهمتر کاربرد آن در بخش های بعدی پاسخ دهیم .</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/ajax-part1-870829-27/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

