بررسی SignalRدر اپلیکیشن های ASP.NET قبلی، کاربران برای مشاهده داده های جدید صفحه را refresh می کردند یا صفحات برای بازیابی داده های جدید از “long polling” استفاده می کردند، به عنوان مثال، زمانی که داده های جدید به سرور می رسند، به طور مستقیم به همه کلاینت ها یا کلاینت های خاصی منتقل نمی شوند، به همین دلیل کاربر باید صفحه را refresh کند و صفحه به روزرسانی شود.برای مثال، می توانید به cricinfo.com بروید، مشاهده می کنید که یک صفحه برای یک یا دو ثانیه و چندین بار refresh می شود و امتیاز به روزرسانی نمی شود. در چنین موقعیت هایی لازم است که از API جدید مایکروسافت به نام “SignalR” استفاده نماییم.SignalR چیست؟SignalR یک API برنامه نویسی جدید است که برای اپلیکیشن های ASP.NET فراهم شده است، برای اضافه کردن عملکرد بلادرنگ به اپلیکیشن های ASP.NET استفاده می شود. عملکرد بلادرنگ وب قابلیت داشتن کد سرور برای ارسال محتوا به کلاینت های متصل است.SignalR عملکرد “server push” و “broadcasting” را پشتیبانی می نماید. مدیریت اتصال را به طور اتوماتیک کنترل می کند. در اتصالات قدیمی HTTP برای ارتباط کلاینت-سرور برای هر درخواست دوباره برقرار می شود، اما SignalR یک ارتباط پایدار بین کلاینت و سرور برقرار می کند. در SignalR به جای مدل درخواست-پاسخ امروزی، کد سرور، کد کلاینت را با استفاده از Remote Procedure – RPC در مرورگر فراخوانی می کند. SignalR یک API اپن سورس است و از طریق GitHub قابل دسترسی است.موارد استفاده:
[COLOR=#FBFBFB !important]
اپلیکیشن های چت روم
اپلیکیشن های مانیتورینگ بلادرنگ
به روزرسانی های پیشرفت کار
فرم های بلادرنگ
[/COLOR]
مورد استفاده SignalR در اپلیکیشن چت روم را می توانید در تصویر زیر مشاهده نمایید:در مثال بالا، به محض اینکه user2 پیام هایی را ارسال می کند، توسط کاربران دیگر دریافت می شود.جزئیات APISignalR دو مدل برای ارتباط فراهم می نماید:API اتصال پایدار دسترسی مستقیمی به سطح پایین پروتکل اتصالی را که SignalR ارائه می دهد، به برنامه نویس می دهد. این API از فرمت واقعی پیام ارسال شده استفاده می کند که لازم است مشخص شود و اگر برنامه نویس ترجیح دهد که به جای فراخوانی از راه دور با پیام ها کار کند از آن استفاده می شود.
Hubs: سطح بالایی از API نوشته شده روی اتصال پایدار است. این API به کلاینت و سرور اجازه می دهد تا متدهای یکدیگر را به طور مستقیم فراخوانی نمایند. Hubs همچنین اجازه می دهد که پارامترهای strongly typed را به متدها ارسال کرد و اتصال مدل را فعال می سازد.