Signalr Là Gì

     

1. SignalR là gì ?

ASP.NET SignalR là 1 trong thư viện cho những lập trình viên Asp.Net đơn giản hóa quy trình thêm chức năng web real-time trong cải cách và phát triển ứng dụng. Real-time web functionality là gì ? Đó là kỹ năng server đẩy hồ hết nội dung cho tới client đã được liên kết một bí quyết tức thì. Nó khác với giao thức HTTP thông thường: server đợi phần đa yêu ước từ client với trả về câu chữ tương ứng.

Bạn đang xem: Signalr là gì

SignalR có thể sử dụng trong bất kì tính năng web real-time nào. Trong các số đó ứng dụng chat bên trên web là 1 ví dụ điển hình. Ngoại trừ ra, các ứng dụng mang lại dashboards, monitoring, collaborative là những nhắc nhở cho việc áp dụng SignalR.

SignalR hỗ trợ một API dễ dàng cho bài toán tạo server-to-client remote procedure hotline (RPC) nhằm gọi mọi hàm javascript trong trình chuẩn y (và những căn nguyên khác) tự code .Net của server-side. SignalR cũng bao hàm API đến việc quản lý kết nối (connect với disconnect events) cùng những kết nối nhóm.

*

SignalR xử lý làm chủ kết nối một cách tự động, và cho chính mình truyền đi thông điệp tới tất cả các client vẫn được kết nối một phương pháp đồng loạt, hệt như một chat room. Bạn có thể gửi hầu hết thông điệp tới mọi client được xác định. Kết nối giữa client với server là liên tục, không giống như kết nối HTTP cổ điển, loại mà sẽ thành lập lại kết nối cho từng lần giao tiếp.

SignalR hỗ trợ tác dụng "server push", trong vps code có thể gọi cho tới client code trong trình duyệt bởi vì "Remote Procedure Calls" (RPC), hơn là áp dụng Service Bus, SQL Server tốt Redis.

SignalR là mã mối cung cấp mở, có thể truy cập thông quaGitHub

2. SignalR và WebSocket

SignalR thực hiện phương thức truyền cài đặt WebSocket mới, và quay trở về với phương thức truyền sở hữu cũ hơn nơi yêu cầu thiết. Trong khi chúng ta có thể đảm bảo viết ứng dụng của người sử dụng sử dụng WebSocket một biện pháp trực tiếp, sử dụng SignalR nghĩa là khôn cùng nhiều công dụng mở rộng lớn mà các bạn sẽ cần nhằm triển khai, đã được thiết kế sẵn mang đến bạn. Phần đông các phần quan lại trọng, điều đó muốn nói rằng chúng ta có thể code ứng dụng của bạn với những ưu thế của WebSocket nhưng mà không phải lo ngại về việc phân chia code cho các client cũ hơn. SignalR cũng trở nên giúp các bạn về những update của WebSocket, từ kia SignalR sẽ liên tục được update để hỗ trợ những đổi khác trong truyền mua tầng bên dưới, cung ứng cho ứng dụng của bạn một giao diện thống nhất xuyên suốt các phiên bạn dạng của WebSocket.

Trong khi bạn đã sở hữu thể chắc chắn là tạo một chiến thuật sử dụng WebSocket, SignalR hỗ trợ tất cả chức năng các bạn sẽ cần để viết theo cách bạn muốn, y hệt như việc trở lại những phương thức truyền cài đặt khác và chăm chú lại ứng dụng của chúng ta cho những update tới WebSocket.

3. Transports và fallbacks

SignalR là một tầng trừa tượng trên một số trong những truyền sở hữu mà yêu mong để làm các bước thời gian thực giữa client và server. Một liên kết SignalR bắt đầu như một HTTP, và tiếp sau được đưa lên một kết nối WebSocket giả dụ nó là gồm sẵn. WebSocket là một trong những ý tưởng truyền tải cho SignalR, vị nó làm cho việc sử dụng bộ lưu trữ server công dụng nhất, có độ trễ thấp nhất, và tất cả những chức năng cơ phiên bản nhất (như tiếp xúc hai chiều không hề thiếu giữa client cùng server), nhưng nó cũng đều có những yêu mong nghiêm ngặt nhất: WebSocket yêu cầu server sử dụng Windows vps 2012 hoặc Windows 8, cùng .Net 4.5. Nếu số đông yêu cầu này không được đáp ứng, SignalR sẽ nỗ lực để áp dụng những truyền cài đặt khác để gia công những kết nối của nó.

4. HTML 5 transports

Những truyền tải này phụ thuộc vào trên việc cung cấp HTML 5. Giả dụ trình coi sóc client không hỗ trợ chuẩn chỉnh HTML 5, truyền cài đặt cũ sẽ được sử dụng.

WebSocket (nếu cả server và client cho thấy chúng rất có thể hỗ trợ WebSocket). WebSocket là truyền cài đặt duy độc nhất vô nhị để tạo thành sự tiếp tục thực sự, liên kết hai chiều thân client cùng server. Mặc dù nhiên, WebSocket cũng có thể có những yêu mong nghiêm ngặt nhất; nó cũng chỉ được cung ứng đầy đủ trong phiên bạn dạng mới tuyệt nhất của IE, Google Chrome, cùng Mozilla Firefox, và chỉ một phần của các trình duyệt khác như Opera với Safari.

Server Sent Event, cũng được biết như EventSource (nếu trình duyệt cung ứng Server Sent Events, nó là thành phần cơ bản của tất cả các trình duyệt ngoại trừ IE).

5. Comet transports

Những truyền cài đặt tầng dưới được dựa trên chế độ ứng dụng web Comet, trong những số đó một trình phê duyệt hoặc client khác duy trì long-held HTTP request, nhưng mà server hoàn toàn có thể sử dụng để đẩy dữ liệu tới client nhưng mà không phải client yêu thương cầu ví dụ nào.

Forever Frame (chỉ giành riêng cho IE). Forever frame sản xuất một IFrame ẩn mẫu mà chế tạo ra yêu mong tới một đầu cuối trên server cơ mà không hoàn chỉnh. Tiếp sau Server giữ hộ script một cách liên tục tới client để tiến hành trực tiếp, cung cấp một kết nối thời hạn thực một chiều từ vps tới client. Liên kết từ client tới server áp dụng phân chia liên kết từ hệ thống tới liên kết client, và y hệt như một HTML request chuẩn, một kết nối mới được sinh sản ra cho mỗi gói dữ liệu cái mà rất cần được gửi đi.

Xem thêm: Cách Khắc Phục Bình Ắc Quy Yếu, Phục Hồi Bình Ắc Quy Bị Yếu Điện Ngay Tức Khắc

Ajax long polling. Long polling không chế tác một kết nối liên tục, mà lại thay bởi thăm dò hệ thống với một request nhưng mà vẫn mở cho tới khi server trả lời, tại điểm liên kết đóng, và kết nối mới được yêu cầu một bí quyết trực tiếp. Điều này hoàn toàn có thể giới thiệu một số trong những độ trễ khi kết nối tùy chỉnh lại.

Để gồm thêm tin tức về hồ hết gì truyền cài được cung cấp theo những cấu hình đó, chúng ta vui lòng xem Supported Platforms

6. Transport selection process

Danh sách dưới chỉ ra những bước mà SignalR áp dụng để ra quyết định truyền cài nào được sử dụng.

Nếu trình chuẩn y là IE 8 hoặc cũ hơn, Long Polling được sử dụng.Nếu JSONP được thông số kỹ thuật (tham số jsonp được gán là true khi liên kết được bắt đầu), Long Polling được sử dụng.Nếu một kết nối cross-domain được thực hiện (nếu SignalR endpoint không giống domain của hosting page) thì WebSocket sẽ được sử dụng nếu các tiêu chí bên dưới được đáp ứng:Client hỗ trợ WebSocket.Server hỗ trọ WebSocket.

Nếu gồm bất kì tiêu chuẩn nào sinh hoạt trên ko được đáp ứng, Long Polling sẽ được sử dụng. Để thêm thông tin về.cross-domain connections, vui lòng xem How lớn establish a cross-domain connection4. Nếu như JSONP ko được thông số kỹ thuật và kết nối không cross-domain. WebSocket sẽ tiến hành sử dụng nếu cả client với server đều hỗ trợ nó.5. Nếu 1 trong những hai đối tượng người tiêu dùng server cùng client không cung ứng WebSocket, server Sent Events sẽ tiến hành sử dụng giả dụ nó có sẵn.6. Giả dụ Server Sent Events không tồn tại sẵn, Forever Frame được sử dụng.7. Nếu Forever Frame thất bại, Long Polling được sử dụng.

7. Monitoring transports

Bạn hoàn toàn có thể xác định vật gì truyền tải vận dụng là đang sử dụng bởi việc chất nhận được logging trên trung vai trung phong của bạn, và mở console window vào trình chú ý của bạn.

Để được cho phép ghi chép rất nhiều hub"s events của bạn, thêm các lệnh bên dưới trong vận dụng client của bạn:

$.connection.hub.logging = true;Trong IE, mở developer tool vày nhấn phím F12 và click console Tab

*

Trong Chrome, nhấn tổ hợp phím Ctr+Shift+J

*

Với console Window mở cùng việc được cho phép logging, các bạn sẽ có thể thấy truyền tải nào được thực hiện bởi SignalR

*

8. Specifying a transport

Thỏa thuận một phướng thức truyền mua sẽ mất một chi phí nhất định về thời hạn và khoáng sản client/server. Nếu tài năng của client đã theo luồng thông tin có sẵn thì một truyền tải rất có thể chỉ định khi kết nối client bắt đầu. Đoạn code tiếp sau đây trình bày việc ban đầu một liên kết sử dụng truyền sở hữu Ajax Long Polling, Nếu theo luồng thông tin có sẵn client không hỗ trợ bất kì giao thức như thế nào khác:

connection.start( transport: "longPolling" );Bạn hoàn toàn có thể chỉ định một thiết bị tự call nếu bạn có nhu cầu client nỗ lực chỉ định hầu như giao thức truyền tải. Code tiếp sau đây trình bày việc sử dụng WebSocket cùng nếu thua kém nó sẽ chuyển trực tiếp thanh lịch Long Polling.

connection.start( transport: <"webSockets","longPolling"> );Những hằng số chuỗi cho việc chỉ định giao thức truyền cài đặt được khái niệm như mặt dưới:

webSockets

foreverFrame

serverSentEvents

longPolling

9. Connections và Hubs

SignalR API đựng hai chính sách cho việc giao tiếp giữa client và server: Persistent Connection với Hubs.

Một kết nối thay mặt đại diện một endpoint dễ dàng cho câu hỏi gửi single-recipient, grouped, hoặc broadcast messages. Persistent Connection API (được trình diễn trong .Net code bởi PersistentConnection class) đưa lập trình viên truy vấn trực tiếp cho tới low-level của giao thức giao tiếp mà SignalR trình diễn ra. Câu hỏi sử dụng cơ chế giao tiếp kết nối sẽ là không còn xa lạ với phần đa lập trình viên cơ mà đã sử dụng connection-based APIs giống như WCF.

Một Hub là 1 trong high-level đã xây dựng dựa trên Connection API mà có thể chấp nhận được client và server gọi những methods của nhau một biện pháp trực tiếp. SignalR xử lý bài toán điều phối qua biên cương máy như ảo thuật, chất nhận được clients gọi các methods trên hệ thống một cách thuận tiện như các methods toàn thể và ngược lại. Việc sử dụng chế độ giao tiếp Hubs đang là thân thuộc với xây dựng viên nhưng mà đã áp dụng APIs triệu hotline từ xa giống như .Net Remoting. áp dụng Hub cũng có thể chấp nhận được bạn truyền "strongly typed parameters" tới methods, enabling mã sản phẩm binding.

10. Con kiến trúc

Biểu đồ dưới trình bày mối quan hệ giữa Hubs, Persistent Connections và các công nghệ bên dưới được áp dụng cho cơ mà giao thức truyền tải

*

11. Hubs làm việc như thế nào

Khi code mặt server điện thoại tư vấn một method trên client, một gói được gửi vào truyền tải dữ thế chủ động cái mà cất tên và mọi tham số của method được gọi (khi một đối tượng người dùng được gởi đi như một tham số của method, nó được serialized áp dụng JSON). Tiếp theo sau Client khớp thương hiệu method với phần đa medthods được định nghĩa mặt code client. Nếu tất cả một trùng khớp, client method sẽ triển khai việc thực hiện deserialized parameter data.

Việc hotline method có thể được đo lường và tính toán bởi sử dụng những công nắm như Fiddler. Hình ảnh dưới đây trình diễn một method gọi gửi xuất phát điểm từ 1 SignalR server tới một trình để ý client trong Logs pane của Fiddler. Method hotline đã được gửi từ Hub được hotline là MoveeShapeHib và method được hotline là updateShape.

*

12. Lựa chọn một cơ chế giao tiếp

Hầu hết những ứng dụng cần dùng Hubs API. Connection API hoàn toàn có thể được sử dụng trong các trường hòa hợp sau đây:

Định dạng của thông điệp đích thực gửi cần được chỉ địnhLập trình viên thích làm việc với mô hình messaging và dispatching hơn là quy mô truy cập từ bỏ xaỨng dụng hiện bao gồm mà sử dụng mô hình messaging vẫn được chuyển hẳn sang sử dụng SignalR.

Xem thêm: Cô Cô Hơn Dương Quá Bao Nhiêu Tuổi Nhỉ? Thần Điêu Hiệp Lữ Tiểu Long Nữ

Trên đấy là những khái niệm, giao thức, mô hình của SignalR. Hy vọng nội dung bài viết có thể giúp chúng ta có một chiếc nhìn tổng quan về technology thú vị này. Các chúng ta có thể tham khảo bài viết gốc bởi tiếng Anh theo link: http://www.asp.net/signalr/overview/getting-started/introduction-to-signalr.