Signal R چیست و چه کاربردی دارد؟
Signal R یک کتابخانه منبع باز تحت داتنت برای توسعه راحتتر وبسایت و ارتباطات بلادرنگ است و به توسعهدهندگان برنامههای و در ASP.Net کمک میکند. منظور از عملکرد بلادرنگ به این معناست که هنگامی که کاربری در حال ایجاد تغییرات است، همزمان کاربر دیگری میتواند تغییرات را بدون بارگیری مجدد صفحه مشاهده کند.
بنابراین عملکرد بلادرنگ وبسایت به معنای این است که بتوان کد سرور را به محتوایی که کاربر به آن دسترسی دارد، بفرستیم و همزمان کاربر تغییرات را بدون نیاز به رفرش کردن صفحه همزمان ببیند. در مدل واکنشی HTTP باید هر بار برای اتصال به سرور یک درخواست ارسال کنیم، اما با کمک Signal R میتوان ارتباطی مستمر بین سرویس گیرنده و سرور را فراهم کرد.
سیگنالآر داده ها را در متن غیرمتراکم JSON یا متن ساده انتقال میدهد بنابراین اگر میخواهید داده ها را با JSON فشرده ارسال کنید، باید منطق خود را در سمت سرور و همچنین در سمت کاربر بنویسید. سیگنالآر برای دستیابی به عملکرد فوری و حداکثری از تکنیکهای ناهمزمان استفاده میکند.
روشهای ارتباطی سیگنالآر
Signal R دو مدل برای برقراری ارتباط بین کاربر و سرور فراهم میکند:
-
اتصالات مداوم
اتصالات مداوم دسترسی مستقیم به یک پروتکل ارتباطی سطح پایین را که سیگنالآر فراهم کرده، ایجاد میکند. هر اتصال کاربر به یک سرور توسط یک ID اتصال شناسایی میشود. بنابراین اگر در برنامه خود به کنترل بیشتری بر روی اتصال نیاز دارید، در سیگنالآر میتوانید از این مدل استفاده کنید.
این مدل در جایی که میخواهید از مدل پیامرسانی و دیسپچینگ به جای فراخوانی از راه دور استفاده کنید و یا هر برنامهای که از مدل پیامرسان استفاده میکند و همچنین زمانی که میخواهید به سیگنالآر گزارش دهید، قابل استفاده است.
-
هابها
هابها یک API سطح بالا برای کاربر و سرور بهمنظور فراخوانی روشهای یکدیگر فراهم میکنند. این موضوع برای توسعه دهندگانی که روی API فراخوانی از راه دور کار کردهاند، بسیار آشنا خواهد بود. اگر چندین نوع پیام دارید که میخواهید بین یک سرور و کاربر ارسال کنید، توصیه میشود از هابها استفاده کنید تا نیازی به انجام دیسپچینگ خود نداشته باشید.
میتوانید هم با استفاده از هابها و هم اتصال مداوم یک برنامه توسعه دهید، تنها تفاوت در این است که اجرای آن با هاب آسانتر خواهد بود. اکنون ما ایدهای از اینکه Signal R چیست داریم؛ بنابراین نیاز است تا در مورد چرایی استفاده از آن صحبت کنیم.
چرا باید از سیگنالآر استفاده کرد؟
با استفاده از سیگنالآر میتوانیم برنامههای وبی ایجاد کنیم که نیاز به بروزرسانی با فرکانس بالا از سرور دارند، مثل اکسل، داشبوردها، بازیها و برنامههای چت. سیگنالآر از Web Sockets و HTML 5 API استفاده میکند که به ارتباطات دو طرفه کمک میکنند. این برنامه همچنین یک API برای تماس از راه دور (RPC) سرور به کاربر فراهم میکند، این امر ممکن است برای شما چیز جدیدی باشد؛ زیرا بیشتر اوقات ما از یک مدل درخواست و پاسخ استفاده میکنیم.
Signal R شامل مدیریت اتصال خودکار است و این امکان را برای پخش پیام به همه کاربران متصل یا به یک کاربر خاص فراهم میکند. در سیگنالآر ارتباط بین سرور و کاربر پایدار است؛ در حالی که در HTTP پایدار نیست. بنابراین اکنون میدانیم کجا باید از سیگنالآر استفاده کرد:
اعلان (Notification)
اگر میخواهید به یک کاربر یا همه کاربران اطلاعرسانی کنید، میتوانید از سیگنالآر استفاده کنید. اعلان میتواند شامل برخی از هشدارها، یادآوریها، بازخورد یا نظرات و غیره باشد.
چت
اجرای یک برنامه چت با استفاده از سیگنالآر بسیار آسان است که میتواند یا چت یک به یک باشد یا چت گروهی.
بازیها
سیگنالآر به طراحی و توسعه یک برنامه بازی که نیاز به فشار مکرر از سرور و غیره دارد، کمک میکند.
چگونه باید از Signal R استفاده کرد؟
در اینجا قصد نداریم مستقیماً وارد کدنویسی شویم. ابتدا توضیح میدهیم که چگونه یک تماس از راه دور (RPC) رخ میدهد.
بیایید فرض کنیم که در سمت سرور ما متدی به نام MyServerFunction () داریم. بنابراین اگر میخواهیم آن روش را از کاربر فراخوانی کنیم میتوان با استفاده از "$ .connection.myHub.server.MyServerFunction ()" آن را فراخوانی کرد و فرض میکنیم که یک تابعJavaScript به نام "myClientFunction ()" داریم و ما میخواهیم آن را از سرور با استفاده از متد "Client.Client (id). myClientFunction ()" فراخوانی کنیم.
شاید بسیاری از شما فکر کنید این کلمات کلیدی اتصال، هاب و سرور برای چیست. لطفاً صبور باشید، تمامی اینها توضیح داده خواهند شد. برای درک بهتر نمودار زیر را ببینید.
همانطور که مشاهده میکنید، در طول RPC با استفاده از سیگنالآر، یک هاب در سمت سرور قرار میگیرد و کاربر هم دارای پروکسی هاب خواهد بود. وقتی پروکسی میخواهد یک متد واقعی از سرور را فراخوانی کند، شی فراخوانیهای سبک Ajax را به متد واقعی پیادهسازی میکند. درحالیکه وقتی سرور میخواهد متد کاربر را فراخوانی کند، این موضوع با استفاده از انواع پویا و یک پروتکل ویژه که تماسها را به سمت سرور بستهبندی میکند، حل میشود.
زمانی که یک برنامه اتصال سیگنالآر دارد و میخواهد برخی از دادهها را به سرور ارسال کند، دادهها بهصورت خام ارسال نمیشوند، بلکه سیگنالآر دادهها را در JSON با سایر اطلاعات بستهبندی کرده و همه آنها را قبل از ارسال به سرور در JOSON بارگذاری میکند.
شروع به کار با Signal R
برای شروع، ابتدا باید یک وبسایت خالی ASP.Net ایجاد کنیم. پس از ایجاد وبسایت، به قسمت explorer بروید -> روی پروژه کلیک راست کرده و "Manage Nuget Package" را انتخاب کنید. وقتی پنجرهPacket Manager باز شد، بسته سیگنالآر را جستجو کنید. بسته سیگنالآر Microsoft ASP.NET را نصب کنید. هنگامی که ویژوال استودیو نصب بسته را به پایان رساند، شما میتوانید شروع به کار کنید. بعد از آن دو کلاس و یک صفحه HTML اضافه کنید.
- ChatHub.cs
- Startup.cs
- index.html
کلاس ChatHub
این چیزی است که در این کلاس میتوانید ببینید:
ما در کلاس خود متدی به نام "send" داریم که میتوانید در این کلاس هر متدی به هر نامی داشته باشید. اما باید نام این متد را بخاطر بسپارید، زیرا باید این متد را از JavaScript در سمت کاربر فراخوانی کنید. همچنین توجه داشته باشید که این کلاس در حال ارثبری از یک کلاس دیگر است.
آنچه این متد انجام خواهد داد این است که یک فایل JavaScript ایجاد میکند که دارای هر متدی است که کلاس وارث دارد. بهعنوان مثال، در این حالت، پرونده جاوا اسکریپت تولید شده دارای متدی به نام Send () است. در حال حاضر کاری که این کلاس انجام میدهد این است که در هر 2 ثانیه پیام را بین همه کاربران خود توزیع میکند.
کلاس Startup.cs
این چیزی است که در کلاس Startup.cs داریم:
این کلاس نوعی پیکربندی است که میتواند در مسیریابی ارتباط از سرور به کاربر کمک کند.
فایل Index.html
این همان چیزی است که رابط کاربری ما دارد
در خط شماره 23 ما یک کابر برای کلاس ChatHub در JavaScript ایجاد کردهایم. همچنین در خط شماره 26، یک متد به نام BroadMessage ایجاد کردهایم، همان متدی که در خط 22 کلاس ChatHub داریم. در کلاسInchathub ، مقادیر را در متد BroadcastMessage منتقل میکنیم که آن را در UI نمایش میدهیم.
وقتی ارتباط با سرور با موفقیت برقرار شد، ارتباط را با فراخوانی متد "send" سرور در خط شماره 32 آغاز میکنیم. اگر برنامه را اکنون اجرا کنید، تعداد اعداد روی صفحه را به شما نشان میدهد که هر 2 ثانیه بهروز میشود.
پلتفرمهای پشتیبانی Signal R
در اینجا بررسی میکنیم چه کاربران و سرورهایی توسط سیگنالآر پشتیبانی میشوند.
نیازمندیها و الزامات سیستم سرور
اجزای سرور سیگنالآر میتوانند روی پیکرهبندیهای مختلف سرور سوار شوند. در ادامه نسخههای پشتیبان سیستم عاملها، چارچوب دات نت، سرور اطلاعات اینترنتی و سایر اجزا توصیف میشوند:
سیستم عاملهای پشتیبان سرور
اجزای سرور Signal R می توانند در سیستم عاملهای سرور یا کاربر زیر میزبانی شوند. توجه داشته باشید که برای اینکه سیگنالآر از WebSockets استفاده کند، به ویندوز سرور 2012، ویندوز سرور 2016 یا ویندوز 8 نیاز است.
- ویندوز سرور 2016
- ویندوز سرور 2012
- ویندوز سرور 2008
- ویندوز 10
- ویندوز 8
- ویندوز 7
- Windows Azure
نسخه NET Framework سرور پشتیبان
نسخه دوم سیگنالآر تنها فقط در NET Framework 4.5 پشتیبانی میشود.
نسخههای IIS سرور پشتیبان
هنگامی که Signal R در IIS میزبانی میشود، نسخههای زیر پشتیبانی میشوند. توجه داشته باشید که اگر از سیستم عامل کاربر مانند (ویندوز 8 یا ویندوز 7) استفاده شود، نیاز نیست از نسخههای کامل IIS یا کاسینی استفاده شود، زیرا تعداد اتصال همزمان محدود و 10 عدد است و از آنجا که سرعت اتصالات بالاست، ارتباط سریعا برقرار شده و بلافاصله پس از استفاده دیگر دفع نمیشوند. IIS Express باید در سیستم عاملهای کاربران استفاده شود.
همچنین توجه داشته باشید که Signal R برای استفاده از WebSocket، باید از IIS 8 یا IIS 8 Express استفاده شود. سرور باید از ویندوز 8، ویندوز سرور 2012 یا بالاتر استفاده کند و همچنین WebSocket باید در IIS فعال باشد.
- IIS 8 یا IIS 8 Express
- IIS 7
- IIS 7.5
IIS همچنین باید در مود یکپارچه در حال اجرا باشد. توجه داشته باشید که مود کلاسیک پشتیبانی نمیشود. در صورت اجرای IIS در مود کلاسیک ممکن است تاخیر پیامها تا 30 ثانیه نیز برسد.
الزامات و نیازمندیهای سیستم کاربر
از Signal R می توان در انواع سیستم عاملهای کاربر استفاده کرد. این بخش نیازهای سیستم برای استفاده از سیگنالآر در مرورگرهای وب، برنامههای دسکتاپ ویندوز، برنامههای Silverlight و دستگاههای تلفن همراه را توصیف میکند.
مرورگرهای وب
مرورگرهای وب سیگنالآر میتوانند در انواع مرورگرهای وب استفاده شوند، اما معمولاً فقط از دو نسخه اخیر پشتیبانی میشود. برنامههایی که از سیگنالآر در مرورگرها استفاده میکنند باید از jQuery نسخه 1.6.4 یا نسخههای بعدی (مانند 1.7.2 ، 1.8.2 یا 1.9.1) استفاده کنند. از Signal R میتوان در مرورگرهای زیر استفاده کرد:
- Microsoft Internet Explorer نسخههای 11. فقط ویندوز.
- Microsoft Edge. نسخههای دسکتاپ و موبایل
- Mozilla Firefox . نسخه فعلی که هر دو نسخه Windows و Mac. را پشتیبانی میکند.
- Google Chrome نسخه فعلی که هر دو نسخه Windows و Mac. را پشتیبانی میکند.
- سافاری: نسخه فعلی که هم نسخه Mac و هم iOS.را پشتیبانی میکند.
- اپرا: نسخه فعلی که فقط ویندوز را پشتیبانی میکند.
- مرورگر اندروید
برنامههای Windows Desktop و Silverlight
علاوه بر اجرا در یک مرورگر وب، سیگنالآر میتواند در برنامههای مستقل Windows یا Silverlight کاربر نیز میزبانی شود. در ادامه به آنها اشاره میشود:
- برنامههای کاربردی که از .NET 4 استفاده میکنند در Windows XP SP3 یا بالاتر پشتیبانی میشوند.
- برنامههایی که از 4.5.NET Framework استفاده میکنند، در ویندوز ویستا یا بالاتر پشتیبانی میشوند.
نتیجهگیری
Signal R کتابخانهای برای توسعه برنامههای تحت وب و به صورت بلادرنگ است و در ساختارهایی که لحظهای بهروزرسانی میشوند، مانند چت، بازیها و... کاربرد دارد. برای کار با آن ابتدا باید سیستمها و ابزارهای مورد نیاز را فراهم کرد.