توسعه Real Time با SignalR

شنبه 13 شهریور 1395

در این مقاله قصد داریم که شما را با کاربرد های SignalR همراه با یک مثال توضیح دهیم تا نحوه کار با آن در برنامه های چت ببینید.

توسعه Real Time با SignalR

عموما ، اگر شما یک برنامه را توسعه دهید که نیاز به اطللاعات real-time داشته باشید، اولین چیزی که به ذهنتون  میرسه ساختن یک تایمر که با یک تابع صدا زده میشود.

تابع رکورد را از پایگاه داده  استخراج کنیم , و بررسی میکند که اطلاعات جدید موجود است یا خیر.

این راه رسیدن به  realTime نیست. این روش منابع زیادی را هم در server و هم در client مصرف میکند و اگر دستگاه شما منابع کافی نداشته باشدبرنامه شما هنگ میکند یا جوابی به درخواست شما داده نمیشود.

راه حل چیست؟

راه حل استفاده از چیزهایی است که برای ارتبط با realTime  ساخته شده است و ما کتابخانه ایی از آن ها در Microsoft داریم.

Signalr یک کتابخانه ای است برای گسترش NET. برای اضافه کردن تابع های realTime به برنامه ساخته شده با استفاده از تکنولوژی NET.

با سیستم های بلادرنگ چه چیزهایی میتوان ساخت:

1-برنامه چت

2-برنامه هایی که نیازمند اعلان های بلادرنگ هستند.

3-یک بازی آنلاین با بروزرسانی های متعدد.

--چگونه کار میکند:

Signalr از مفهوم socket استفاده میکند.شاید این سوال پیش بیاید که socket چیست؟

بیایید این موضوع را با یک مثال توضیح دهیم

یک پریز الکتریکی که منتظر دوشاخه برای متصل شدن است استفاده میکنیم.و انتقال فعلی به عنوان یک اتصال مناسب، شروع به اتصال خواهد کرد.

 

 

حالا جای پریز الکتریکی را با "server"،جای دو شاخه با 'Client' و به جای وضعیت فعلی 'data' را جایگرین میکنیم.

server در حال انتظار برای client متصل میشود و  به زودی به عنوان  یک  client مناسب متصل خواهد شد و انتقال شروع خواهد شد.

بدین گونه  socket شامل دو چیز است:

1-Server

2-Client

در سناریو بالا ، یک حفره در پریز وجود دارد،اما ممکن چند حفره وجود داشته باشد،به صورت نامحدود،بنابراین چندین دو شاخه میتواند به این پریز متصل شود.

server میتواند چندین Client  داشته باشد و هر Client بر اساس برخی مکانیزم تعریف شده تحت server داده هارا دریافت میکنند.

حال میرویم سراغ  Signalr:

Signalr دو نوع از API  ها را که ما برای ارتباطات  socket نیاز داریم   تهیه میکند.

1-API برای ساختن سرور

2-API برای ساختن clients of the Signalr Server.

client API برای زبان  JavaScript, Java, Node.js .NET اما شما مجبور خواهید بود به ساختن سرور در محیط NET.

مثال Real time :

مثال معروف در این زمینه Whatsapp, Hike, Wechat و غیره هستند.

حال این سوال پیش می اید که ما چگونه با استفاده از signalR میتوانیم یک همچین Application هایی را بسازیم.

ما میتوانیم برنامه ای مانند Whatsapp بلکه بهتر با استفاده از زبان NET.  پیاده سازی کنیم که این به میزان توانایی در کد زدن شما بستگی دارد. 

  چگونگی ساختن برنامه   Real time:

بیایید شکل و کار Whatsapp را مورد بررسی قرار دهیم.

• وقتی شما  Whatsapp را نصب میکنید،شما با شماره موبایل خود sign میشوید،پس شماره موبایل  شما به عنوان ID ذخیره میشود. که یه صورت identity  ذخیره میشود.

• ما پیامی از طریق شماره موبایل برای فردی که  این برنامه را نصب کرده ارسال میکنیم.زیرا Whatsapp از شماره موبایل ها به عنوان شناسه استفاده میکند.

•وقتی پیامی به کسی ارسال میشود،پیام به سمت chat Server میرود.

•وقتی پیام با موفقیت ارسال شد به سرور، Whatsapp با یک تیک(علامت) نشانش میدهد.

• وقتی پیام به گیرنده ارسال شد،سرور به عنوان تصدیق در کنار پیام از دو تیک(علامت) استفاده میکند.

این طریقه ی کار Whatsapp بود.

Whatsapp یک client است که برای ارسال پیام به سرور نیاز دارد، بنابراین ما به یک chat Server نیاز داریم.

پس ما برای ساخت Server  از SignalR  استفاده میکنیم.

دیگر به چه چیز هایی نیازمندیم؟

ما به یک Client  برای ارتباط نیاز داریم.پس بیاییم یک برنامه  Windows phone app  به عنوان یک client با استفاده از  Signalr .NET API بسازیم.

 ما نیاز به یک برنامه چندین  platforms داریم؛ مثل  Android, Web و عیره.

همانطور که گفته شد SignalR  برای  Java, JS, Node.js و... API تهیه دیده است.پس شما میتوانید یک client  یسازید که برای platform های مختلف.

 

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید