تحلیل داده
صفحه اصلی / آموزش طراحی وب / آموزش ASP.NET / مفاهیم پایه ASP.NET SignalR (بخش اول)

مفاهیم پایه ASP.NET SignalR (بخش اول)

ASP.NET SignalR

در این مقاله، ما مفاهیم بسیار مقدماتی ASP.NET SignalR را که اخیرا یاد گرفته ایم معرفی کرده و یک دموی بسیار ساده با استفاده از PersistentConnection به صورت گام به گام نشان می دهیم. توجه داشته باشید که فولدر packages را از دموی پیوست شده به مقاله حذف کردیم، چرا که حجم آن برای آپلود بسیار بالاست. شما می توانید Microsoft.AspNet.SignalR را به صورت محلی از طریق NuGet واکشی نمایید. حالا از یک سری سوالات ابتدایی شروع می کنیم.

ASP.NET SignalR چه کارهایی می تواند انجام دهد؟

  • سرور داده ها را در اتصال HTTP به کلاینت push می کند.
  • RPC سرور به کلاینت در اتصال HTTP
  • از طریق SQL Server، Redis یا Service Bus مقیاس بندی می شود.

SignalR از چه تکنولوژی هایی برای انتقال داده استفاده می کند؟

  • استفاده از WebSocket اگر در دسترس باشد.
  • در غیر این صورت، استفاده از تکنولوژی های دیگر مانند long polling

چه نوع داده هایی را SignslR برای انتقال پشتیبانی می کند؟

  • متن JSON غیر فشرده یا plain text
  • اگر بخواهیم JSON فشرده یا BSON یا داده های باینری خود را انتقال دهیم، باید داده ها را رمزنگاری و سپس رمزگشایی نماییم (به عنوان مثال با استفاده از Base64) یا IJsonSerializer را به وسیله منطق خود در سمت سرور پیاده سازی نماییم و همان منطق را سمت کلاینت هم پیاده کنیم. توجه داشته باشید که TextReader و TextWriter درون SignalR استفاده می شوند. به این معنی است که ما به هرحال باید داده ها را قبل از انتقال به متن تبدیل کنیم.

نسخه پایدار فعلی ۱.۱.۳ ورژن ۲.۰ بتا است. تحت لیسانس Apache 2.0 است. وب سایت رسمی آن http://signalr.net می باشد. مستندات آن را می توانید در اینجا بیابید.

پکیج ها

همه پکیج های توسعه SignalR از طریق NuGet قابل واکشی هستند. به طور معمول، لازم است ما Microsoft.AspNet.SignalR (package ID) که شامل اغلب کامپوننت های موردنیاز ماست را واکشی نماییم. این کامپوننت ها عبارتند از:

  • Microsoft.AspNet.SignalR.Core: کامپوننت های سمت سروری که برای ساخت نقاط نهایی SignalR استفاده می شود.
  • Microsoft.AspNet.SignalR.Owin: هاست OWIN برای SignalR
  • Microsoft.AspNet.SignalR.SystemWeb: برای میزبانی SignalR در ASP.NET (از طریق هاست OWIN ASP.NET) استفاده می شود.
  • Microsoft.AspNet.SignalR.Js: کلاینت جاوا اسکریپت برای SignalR
  • وابستگی ها نیز شامل: jQuery، Newtonsoft، Json، Microsoft.Owin.Host.SystemWeb، Microsoft.Web.Infrastructure و OWIN.

پکیج های دیگر SignalR را نیز در موارد لازم می توان واکشی کرد:

  • Microsoft.AspNet.SignalR.Client: کلاینت .NET برای SignalR (شامل WinRT، WP8 و Silverlight5).
  • Microsoft.AspNet.SignalR.Redis: روتر پیام رسانی Redis برای مقیاس بندی SignalR در وب فرم.
  • Microsoft.AspNet.SignalR.ServiceBus: روتر پیام رسانی Windows Azure Service Bus برای مقیاس بندی SignalR در وب فرم.
  • Microsoft.AspNet.SignalR.SqlServer: روتر پیام رسانی SQL Server برای پیام رسانی SignalR در وب فرم.
  • Microsoft.AspNet.SignalR.Sample: برای تنظیمات سریع یک سمپل در حال انجام در اپلیکیشن استفاده می شود.

PersistentConnection

PersistentConnection کلاس هسته ای است که برای میزبانی سرویس SignalR در سمت سرور استفاده می شود. اجازه دهید که نحوه استفاده آن را نشان دهیم.

ابتدا، یک ASP.NET web application ایجاد می کنیم و از NuGet برای واکشی پکیج Microsoft.AspNet.SignalR استفاده می نماییم. سپس، کلاس دیگری تعریف می کنیم که از PersistentConnection ارث بری می نماید:

 

onConnected زمانی فراخوانی می شود که یک کلاینت به سرویس ما متصل شده باشد. اتصالات با IDهای (GUID) اتصال متمایز می شوند. زمانی که ارتباط برقرار شد کلاینت می تواند برخی اطلاعات را از طریق IRequest.QueryString ارسال نماید. همچنین می توانیم موارد دیگر HTTP مانند coockie، header، اینکه از کجا پست شده و موارد اصلی کاربر را از IRequest به دست آوریم. توجه داشته باشید همه این موارد متعلق به درخواست اول است که درخواست ها برای برقراری ارتباط است.

onRecieved زمانی فراخوانی می شود که داده های کلاینت می رسد. connectionId نشان می دهد که داده ها از کدام اتصال می آید. داده ها در قالب متن هستند. اگر به صورت plain text نمایش داده نمی شود باید خودمان آن را تجزیه (pars) کنیم.

PersistenetConnection.Connection متد Broadcast را برای ارسال یک پیام به همه کلاینت های متصل فراهم می کند؛ همچنین متد Send را برای ارسال یک پیام به یک اتصال خاص یا گروهی از آن ها (با استفاده از نام گروه به عنوان connectionId) فراهم می نماید. هر دو متد لیستی از استثنائات برای اتصالاتی که نمی خواهیم پیامی به آن ها ارسال شود را پشتیبانی می کنند.

می توانیم با استفاده از MyConnection سرویس خود را در جدول route در Global.asax ثبت کنیم:

حالا می توانیم جاوا اسکریپت را برای اتصال به سرویس خود در صفحه وب بنویسیم:

 

حالا اجازه دهید که یک کلاینت .NET ایجاد کنیم. فقط کافی است که یک console application جدید ایجاد کرده و با استفاده از NuGet پکیج Microsoft.AspNet.SignalR.Client را واکشی می نماییم. در Main، از کلاس Connection برای ارتباط با سرویسمان استفاده می کنیم:

برای اینکه ببینیم سرویس روی WebSockets اجرا می شود یا long polling، می توانیم آن را هم روی IIS 7.5 و هم IIS 8.0 روی Windows 8 یا Windows 2012 میزبانی کنیم. توجه داشته باشید که .NET WebSockets فقط روی Windows 8، Windows Server 2012 و بالاتر کار می کند. بنابراین، می توانیم برای بررسی درخواست های HTTP روی ماشین کلاینت از Fiddler استفاده کنیم.

اگر سرویس روی IIS 7.5 میزبانی می شود، درخواست اتصال برقرار نگه داشته می شود:

ASP.NET SignalR

اگر سرویس روی IIS 8 روی Windows 8 یا Windows Server 2012 میزبانی شود، درخواست اتصال تقاضای ارتقا به اتصال WebSocket را دارد:

ASP.NET SignalR

خلاصه

در بخش بعدی، SignalR Hubs، مقیاس بندی و توسعه پذیری را معرفی می کند.

جزئیات فایل

زبان پروژه : C#&ASP.NET&SignalR
حجم فایل پیوست : 500 KB

رمز فایل : www.mspsoft.ir , www.mspsoft.com
کانال ام اس پی سافت

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



دوره های آنلاین ام اس پی سافت

آموزش طراحی فروشگاه اینترنتی

آموزش طراحی فروشگاه اینترنتی

طراحی سیستم مدیریت مشتریان

طراحی سیستم مدیریت مشتریان

دوره طراحی وب سایت پورتال خبری

دوره طراحی وب سایت پورتال خبری

دوره طراحی حسابداری فروشگاه

دوره طراحی حسابداری فروشگاه