آموزش SignalR
بسم الله الرحمن الرحیم
دوره آموزشی SignalR به زبان فارسی
آموزش SignalR بخش اول
بخش پنجم- شروع ایجاد پروژه SignalR
بخش ششم - مروری بر مفاهیم SignalR
بخش هفتم- ایجاد پروژه Chat با SignalR
بخش هشتم - ایجاد پروژه Chat با SignalR در ASP.NET MVC
بخش نهم- ساخت یک Timer سمت سرور با SignalR
بخش دهم - آموزش ساخت یک پروژه SignalR با SQLDepedency در ASP.NET MVC
دوره آموزشی SignalR
SignalR چیست
ASP.NET SignalR یک کتابخانه برای توسعه دهندگان ASP.NET است تا بتوانند به سادگی یک وب سایت Real Time ایجاد کنند.
قابلیت Real Time ویژگی است که باعث می شود سرور پس از دریافت داده ها آن ها را به کلاینت هایی که در حال حاضر به او متصل هستند ارسال کند، به جای روش های گذشته که سرور پس از ارسال یک درخواست اطلاعات را برای کلاینت می فرستاد در اینجا سرور اطلاعات را به محض دریافت به تمامی کلاینت های قابل دسترس ارسال می کند.
SignalR می تواند در انواع Application های Real Time مورد استفاده قرار گیرد. هنگامی که یک برنامه چت را می خواهید ایجاد کنید می توانید از قابلیت SignalR استفاده کنید.
هر وقت که باید کاربر صفحه را Refresh کند تا اطلاعات جدید را ببیند، یا اطلاعات یک داشبورد را می خواهید لحظه ای نشان دهید، یا صفحاتی مثل داکیومنت ها که می خواهید لحظه به لحظه نمایش داده شود و همچنین ذخیره شود و مانیتوریگ اطلاعات سایت و... همه ی این مسائل را می توانید با استفاده از SignalR انجام دهید.
SignalR همچنین نوع جدیدی از Application هایی که نیازمند بروز رسانی متوالی و دریافت اطلاعات از سمت سرور هستند را می تواند پشتیبانی کند، مثل بازی های آنلاین.
نوشتن بازی با SignalR
یک مثال خوب برای آموزش و دیدن خروجی SignalR دیدن این بازی است که می توانید سورس بازی را نیز دریافت کنید:
SignalR، API های ساده ای برای دسترسی سرور به کلاینت فراهم می کند (server-to-client remote procedure calls) به این ویژگی (RPC) می گویند که در کلاینت به وسیله جاوا و.NET در سمت سرور فراخوانی می شود.
SignalR همچنین API هایی برای مدیریت Connection در اختیار شما قرار می دهد به عنوان مثال: connect، disconnect و grouping connections و... را می توانید مدیریت کنید.
SignalR مدیریت Connection
SignalR مدیریت Connection را به صورت اتوماتیک انجام می دهد و به شما اجازه می دهد تا مانند یک Chat Room پیامک ها را به صورت Broadcast به تمامی کلاینت هایی که متصل هستند به صورت همزمان ارسال کنید اما این توان را در اختیار شما قرار می دهد که در صورت تمایل یک پیام را فقط به یک کلاینت ارسال کنید.
Connection بین کلاینت و سرور به صورت persistent (مداوم) است، و این کار متضاد با HTTP است که مدام بین کلاینت و سرور قطع خواهد شد.
در مورد نحوه ایجاد Connection بین دیتابیس ها و برنامه شما مقاله ای خواهم نوشت، زیرا متاسفانه به دلیل اینکه بسیاری از دوستان از SQL Server فقط شبیه یک منبع نگهداری اطلاعات استفاده می کنند و هیچگاه به تفاوت نحوه ی برقراری ارتباط با SQL Server و روش های آن پرداخته نشده است و بعضا اطلاعی نیز در مورد آن نداریم!.
در HTTP ارتباط بین سرور و کلاینت مداوم قطع و وصل می شود، به روش re-established گفته می شود.
SignalR قابلیت server push
SignalR از قابلیت server push پشتیبانی می کنید، در این قابلیت کد درون سرور می تواند کد درون کلاینت که طبیعتا درون Browser قرار دارد را به وسیله Remote Procedure Calls (RPC) فراخوانی کند این طبیعتا برعکس روش وب امروزی است که کلاینت سرور را صدا می زند (request-response).
SignalR بسیار قدرمتند است زیرا می تواند به وسیله Service,SQL Server,Redis هزاران کلاینت را سرویس دهی کنید.
Redis در این مقاله توضیح داده شده است.
SignalR خوشبختانه Open Source است.
نظرات (۳)
با عرض سلام خدمت شما
لطف دارید
باید خدمتتان عرض کنم که با مدیریت ارسال اطلاعات می توانید سرعت و Performance را کنترل نمایید، اما برای جلوگیری از پیچیدگی کار می توانید از hub مجزا نیز استفاده کنید.
برای کنترل و تست اطلاعاتی که در حال ارسال هستند از قسمت NET مرورگر خود می توانید استفاده کنید در آموزشها در خصوص این موارد توضیحات لازم ارائه شده است.
موفق باشید
من با استفاده از مطالب شما برنامه چت نوشتم ولی همه می توانند متن چت را ببینند چطوری یک نفر در واقع یک نفر را مشخص کند و فقط با اون چت کند ؟
با تشکر...
با عرض سلام
باید در بخش Hub خود اطلاعات را دسته بندی کنید و Id ایی برای هر کاربر در نظر بگیرید و بر اساس آن این اطلاعات تنها به کاربر مورد نظر ارسال کنید.
باتشکر
من در سایتم (MVC) از singler برای ایجاد پست و کامنت های مربوط به هر پست استفاده کرده ام .
در _layout یک قسمت اضافه کردم برای اینکه اگر متن جدید اضافه شد، تعداد آن را نمایش بده برای این قسمت باید یک hub جدید و فایل اسکریپ جدید اضافه کنم ؟
اگر همون فایل های مربوط به پست را به layout انتقال بدهم در هر بار فراخوانی اون کل اسکریپ اجرا می شه که باعث پاییت آمدن سرعت اجرا می شه !!
ممنون می شم اگگه راهنماییم کنید.