Solía SignalR
lograr la funcionalidad de mensajería en tiempo real en varios de mis proyectos. Parece funcionar de manera confiable y es muy fácil de aprender a usar.
La tentación, al menos para mí, es abandonar el desarrollo de un servicio de API web y usarlo SignalR
para todo.
Siento que esto podría lograrse mediante un diseño atento, y si lo fuera, significaría que sería necesario mucho menos código de cliente. Más importante aún, significaría que habría una única interfaz para los servicios en lugar de una interfaz dividida, y en el peor de los casos, que uno podría conectar esto sin pensar en cuándo se renderizarán las cosas, etc.
Entonces, me gustaría saber:
- ¿Hay alguna otra razón para no usar SignalR en lugar de todos los servicios web además del rendimiento?
- ¿El rendimiento de SignalR es lo suficientemente preocupante como para que no tenga sentido hacerlo?
Siempre ha sido un sueño para mí poder traducir las definiciones de objetos y servicios del lado del servidor al código de acceso al servicio del lado del cliente sin algo tonto node.js
. Por ejemplo, si defino un objeto interesante InterestingObject
y un servicio para CRUD
el objeto InterestingObjectService
, puedo definir una ruta URL estándar al servicio, por ejemplo, "/ {serviceName} / {methodName}", pero aún necesito escribir el código del cliente para acceder el servicio. Dado que el objeto se va a pasar de cliente a servidor y viceversa, no hay ninguna razón práctica para tenerdefinir el objeto explícitamente en el código del lado del cliente, ni debería existir la necesidad de definir explícitamente las rutas para realizar operaciones CRUD. Siento que debería haber una manera de estandarizar todo esto para que sea posible escribir un cliente bajo el supuesto de que el acceso al servicio funciona desde el cliente al servidor y viceversa tan transparente como lo haría si estuviera escribiendo un WinForms o Java Aplicación Applet o Native o lo que tengas.
Si SignalR es lo suficientemente bueno como para usarlo en lugar de un servicio web tradicional, puede ser una forma viable de lograrlo. SignalR ya incluye la funcionalidad para hacer que el centro funcione como el servicio que describo, por lo que podría definir un servicio de base común (CRUD) que ofrezca toda esta funcionalidad de forma inmediata con cierta reflexión. Entonces casi podría dar por sentado el acceso al servicio, ahorrándome la molestia de volver a escribir código para acceder a algo a lo que se podía acceder por convención, y lo que es más importante, el tiempo que tendría que pasar escribiendo código para definir cómo se actualiza esto en el DOM
Después de leer mi edición, siento que puede ser un poco absurdo, así que no dudes en preguntarme si tienes preguntas sobre a qué me refiero. Básicamente, quiero que el acceso al servicio sea lo más transparente posible.