Я использовал SignalR
для достижения функциональности обмена сообщениями в реальном времени в нескольких из моих проектов. Кажется, он работает надежно и очень прост в освоении.
Искушение, по крайней мере для меня, состоит в том, чтобы отказаться от разработки сервиса Web API и использовать его SignalR
для всего.
Я чувствую, что это может быть достигнуто продуманным дизайном, и если бы это было так, это означало бы, что гораздо меньше клиентского кода было бы необходимо. Что еще более важно, это будет означать, что будет один интерфейс для служб, а не разделенный интерфейс, и в худшем случае это можно будет подключить, не думая о том, когда что-то будет отображаться и т. Д.
Итак, я хотел бы знать:
- Есть ли какая-либо другая причина не использовать SignalR вместо всех веб-сервисов, кроме производительности?
- Достаточно ли производительности SignalR, что в этом нет смысла?
Я давно мечтал о том, чтобы иметь возможность переводить определения объектов и сервисов на стороне сервера в код доступа на стороне клиента без каких-либо глупостей node.js
. Например, если я определяю интересный объект InterestingObject
и службу для CRUD
объекта InterestingObjectService
, я могу определить стандартный URL-маршрут к службе - скажем, "/ {serviceName} / {methodName}" - но мне все еще нужно написать клиентский код для доступа сервис. Поскольку объект будет передаваться от клиента к серверу и обратно, нет практической причины иметьчтобы явно определять объект в коде на стороне клиента, также не должно быть необходимости явно определять маршруты для выполнения операций CRUD. Я чувствую, что должен быть способ стандартизировать все это так, чтобы можно было написать клиента при условии, что доступ к сервису работает от клиента к серверу и обратно так же прозрачно, как если бы я писал WinForms или Java Апплет или родное приложение или что у тебя.
Если SignalR достаточно хорош для использования вместо традиционного веб-сервиса, это может быть жизнеспособным способом для достижения этой цели. SignalR уже включает в себя функциональность, чтобы заставить хаб работать как сервис, который я описываю, поэтому я мог бы определить сервис с общей базой (CRUD), который предлагал бы всю эту функциональность "из коробки" с некоторым отражением. Тогда я мог почти принять как должный доступ к сервису, избавив меня от раздражения переписывания кода, чтобы получить доступ к чему-то, к чему можно получить доступ по соглашению - и что более важно, к тому времени, которое мне пришлось бы потратить на написание кода, чтобы определить, как это обновляется ДОМ.
После прочтения моего редактирования я чувствую, что это может быть немного бессмысленным, поэтому, пожалуйста, не стесняйтесь спрашивать меня, если у вас есть вопросы о том, что я получаю. По сути, я хочу, чтобы доступ к сервису был максимально прозрачным.