ورود

View Full Version : یه سوال کلی و مبتدی !



Marjan_pr
پنج شنبه 16 آبان 1392, 14:58 عصر
میخوام php یا asp mvc رو برای نوشتن یه نرم افزار تحت وب که قبلا تحت دسکتاپ بوده شروع کنم .
توی فیس بوک (که میگن با یه نسخه خاص از php نوشته شده) وقتی یه عکس رو باز میکنیم و بعد کامنتی واسه اون عکس گذاشته میشه بدون اینکه ما صفحه رو Regfresh کنیم اون کامنت اضافه میشه . این چه تکنولوژیه ؟ ( مطمئنا Ajax تنها که نیست ) آیا در ASP MVC هم این تکنولوژی هست ؟! میشه یه منبع برای یادگیریش معرفی کنید . ممنون

http://intext.nav-links.com/images/spinner-ani48.gif

Amir Oveisi
پنج شنبه 16 آبان 1392, 15:10 عصر
Ajax هست. تنها و غیر تنها نداره، Ajax هست که باعث میشه اون اتفاق به اون شکل بیفته. حالا شما میتونید با ابزارهای مختلفی از Ajax استفاده کنید که معمول ترینش تو MVC، با استفاده از JQuery هست.

hakim22
پنج شنبه 16 آبان 1392, 15:32 عصر
به این پست مراجعه کنید :

http://barnamenevis.org/showthread.php?416558-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-Ajax-%D8%AF%D8%B1-ASP.MVC-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%AB%D8%A8%D8%AA-%D9%86%D8%B8%D8%B1%D8%AF%D9%87%DB%8C

ajax یک قابلیت در جاوااسکریپت هست و هر فریم ورک دیگری مانند جیکوئری کدهای جاوااسکریپت رو ساده تر کرده وگرنه هرجا موازی اطلاعات رفت و برگشت میکنه بدون بازخوانی UI از طریق ajax انجام میشه.

Marjan_pr
پنج شنبه 16 آبان 1392, 15:41 عصر
این تصور من درسته ؟ : بصورت کلی وقتی یکسری کنترلر رو توی update panel قرار میدیم فقط زمانی که تغییری از طرف این کلاینت اعمال بشه اون قسمت آپدیت خواهد شد و نه تغییری که در داده های اون قسمت از سمت سرور رخ داده ؟

در مثال فیسبوک که گفتم ، منظورم کامنتی بود که کاربر دیگه ای ( از مکان دیگه) برای اون عکس میزاره و به صفحه ای که ما از قبل باز کردیم اضافه میشه (بدون اینکه رفرشی انجام بدیم ).

http://intext.nav-links.com/images/spinner-ani48.gif

Marjan_pr
پنج شنبه 16 آبان 1392, 16:18 عصر
hakim22 شما در آموزشی که گذاشتین گفتین :

اطلاعات کلی
اول باید بدانید که AJAX برنامه نویسی در سمت Client است و یک قابلیت در جاوا اسکریپت شمرده میشود.

تغییری که من ازش صحبت میکنم باید از سمت سرور تشخیص داده شود و به کاربران مربوط ارسال شود . باز هم فیس بوک بهترین مثال برای این سواله .
امیدوارم سوالم رو درست پرسیده باشم .

http://intext.nav-links.com/images/spinner-ani48.gif

par4parvaz
پنج شنبه 16 آبان 1392, 18:28 عصر
شما می تونی از jquery استفاده کنی :
window.setInterval(function() {
$.post('@Url.Action("someaction", "somecontroller")', function(result) {
$('#results').html(result);
});
}, 10 * 1000);

دستور window.setInterval برنامه بالا هر 10 ثانیه تگ با id = result رو رفرش میکنه و اطلاعات رو از action مورد نظر می خونه.

برای action هم یه همچین چیزی می نویسی:

pubilc ActionResult SomeAction()
{
SomeViewModel model = ...
return PartialView(model);
}

البته باید یه Partialview هم براش ایجاد کنی که دیگه بقیش مشخصه.

hakim22
جمعه 17 آبان 1392, 09:35 صبح
شما درباره ی برقرار بودن همیشگی ارتباط بین کاربر و سرور و بین کاربران و کاربران دیگر صحبت می کنید. مانند سیستم چت یا سیستم Notifications در فیسبوک.
برای پیاده سازی چنین سیستم هایی از روشهایی مانند Long pulling ، Server sent event ، Forever frameو جدیدا هم از Web Socket در HTML5 استفاده می شود. برای پیاده سازی این تکنیک ها باید با جاوااسکریپت کد نویسی کنید.

بهترین ابزار برای پیاده سازی چنین سیستم هایی استفاده از فریم ورک SignalR است که حجم کد نویسی را به کمترین حالت رسانده و همچنین هر چهار روشی را که در بالا گفته شد پشتیبانی میکند. و خودش بهترین حالت را با توجه به شرایط سرور و کاربر انتخاب میکند برای آشنایی با آن به سایت www.asp.net سر بزنید.

برای بروز شدن بخشهایی از صفحه بدون رفرش کامل آن باید از Ajax استفاده کنید.

بعد از پیاده سازی signalR میبینید که دستوراتی در اختیار خواهید داشت که از درون کد سمت سرور مستقیما پیام یا داده ای را به یکی یا همه ی کاربران آنلاین ارسال می کنید. و این پیام از طریق رویداد با جاوااسکریپت درون یک ویو قابل مدیریت است. جالب ترین قسمتش همین است که ارتباط مستقیمی بین کدهای CS و JS برقرار میشود.