Tôi đã sử dụng SignalR
để đạt được chức năng nhắn tin thời gian thực trong một số dự án của mình. Nó dường như hoạt động đáng tin cậy và rất dễ học để sử dụng.
Sự cám dỗ, ít nhất là đối với tôi, là từ bỏ việc phát triển dịch vụ API Web và sử dụng SignalR
cho mọi thứ.
Tôi cảm thấy như điều này có thể đạt được bằng thiết kế chu đáo, và nếu có, điều đó có nghĩa là cần ít mã khách hàng hơn. Quan trọng hơn, điều đó có nghĩa là sẽ có một giao diện duy nhất cho các dịch vụ thay vì giao diện phân tách, và trong trường hợp xấu nhất, người ta có thể kết nối điều này mà không cần suy nghĩ khi nào mọi thứ được kết xuất, v.v.
Vì vậy, tôi muốn biết:
- Có bất kỳ lý do nào khác để không sử dụng SignalR thay cho tất cả các dịch vụ web bên cạnh hiệu suất không?
- Hiệu suất của SignalR có đủ liên quan đến việc nó sẽ không có ý nghĩa để làm như vậy không?
Từ lâu tôi đã mơ ước có thể dịch các định nghĩa đối tượng và dịch vụ phía máy chủ sang mã truy cập dịch vụ phía máy khách mà không cần một cái gì đó ngớ ngẩn như thế node.js
. Chẳng hạn, nếu tôi xác định một đối tượng thú vị InterestingObject
và một dịch vụ cho CRUD
đối tượng đó InterestingObjectService
, tôi có thể xác định một tuyến URL tiêu chuẩn đến dịch vụ - giả sử, "/ {serviceName} / {methodName}" - nhưng tôi vẫn cần viết mã máy khách để truy cập dịch vụ. Vì đối tượng sẽ được truyền từ máy khách đến máy chủ và quay lại, không có lý do thực tế nào để cóđể xác định rõ ràng đối tượng trong mã phía máy khách, cũng không cần phải xác định rõ ràng các tuyến đường để thực hiện các hoạt động CRUD. Tôi cảm thấy nên có một cách để chuẩn hóa tất cả những điều này để có thể viết một ứng dụng khách theo giả định rằng truy cập dịch vụ hoạt động từ máy khách đến máy chủ và trở lại trong suốt như khi tôi viết WinForms hoặc Java Applet hoặc ứng dụng gốc hoặc những gì có bạn.
Nếu SignalR đủ tốt để sử dụng thay cho dịch vụ web truyền thống, thì đó có thể là một cách khả thi để đạt được điều này. SignalR đã bao gồm chức năng để làm cho trung tâm hoạt động giống như dịch vụ mà tôi mô tả, vì vậy tôi có thể xác định dịch vụ cơ sở chung (CRUD) sẽ cung cấp tất cả các chức năng này bên ngoài với một số phản ánh. Sau đó, tôi gần như có thể được cấp quyền truy cập dịch vụ, tiết kiệm cho tôi sự khó chịu khi viết lại mã để truy cập vào thứ gì đó có thể được truy cập theo quy ước - và quan trọng hơn, tôi sẽ phải dành thời gian viết mã để xác định cách cập nhật mã này DOM.
Sau khi đọc bản chỉnh sửa của tôi, tôi cảm thấy nó có thể hơi vô lý vì vậy xin vui lòng hỏi tôi nếu bạn có thắc mắc về những gì tôi đang nhận được. Về cơ bản, tôi muốn quyền truy cập dịch vụ càng minh bạch càng tốt.