Alvaro Dax hace 6 años
Puedo implementar Observables en mi BackEnd (WebApi) de C#
Estimado Alex,
En mi trabajo tengo un BackEnd en .net(C#) que recibe solicitudes las guarda en una tabla y posteriormente invoca otro servicio que yo tambien programe en WCF de manera asincrona para continuar con el flujo de trabajo.
Todo funcionaba bien cuando la invocacion al segundo webservice era sincrono pero cuando lo cambie a asincrono, empece a esperimientar el problema que no todas las solicitudes pasan al segundo servicio, perdiendose el 5% de las solicitudes
Ahora que estoy estudiando Javascript quisiera usar Node js y tambien usar ReactiveX y observables para solucionar este problema.
Me podes recomendar cuales son los cursos dentro de webtraning que me podrian ayudar con este problema.
Saludos desde Managua,Nicaragua.
Saludos
Responder 1 respuesta
Que tal muy buenos días Alvaro,
### Sobre el uso de Node.js
En este caso por lo que veo quisieras empezar a **migrar de .NET hacia Node.js **para tal cuestión te comento que Node.js tiene una "lógica y modo de ejecución" muy diferente a la que estás acostumbrado en .NET.
Por ejemplo, en .NET pues regularmente implementamos nuestros sistemas en C#, el cual es pasado a código intermedio (**MSIL**) y luego es ejecutado por el Common Language Runtime (**CLR**); que prácticamente es la misma forma como funciona Java, su *bytecode* y su Java Virtual Machine (**JVM**).
Lo anterior es **MUY importante **de comprender ya que en Node.js algo así no existe. Ya que al utilizar JavaScript este lenguaje realmente se compila e interpreta en tiempo de ejecución y tiene un ciclo de eventos muy diferente.
Dicho lo anterior, mi recomendación es que **elijas un framework que te parezca apropiado**.
Puedes empezar con **Express.js **que tiene mucha documentación y es muy estable; Express.js es un framework no opinionado lo que significa que NO te obliga a seguir ninguna convención, ni sugiere estructuras de proyectos; lo que te dará libertad de elegir lo que mejor se adapte a tu proyecto.
En este sentido aquí en Webtraining tenemos el [Curso Profesional de Angular para Tiempo Real con Express.js](https://webtraining.zone/cursos/curso-profesional-de-angular-para-tiempo-real-con-nodejs) en el cual revisamos las dos partes de la app: el front-end (con Angular) y el back-end (con Express.js).
Un curso especializado en construcción de APIs sería este [Curso de REST APIs con LoopBack](https://webtraining.zone/cursos/rest-apis-con-nodejs-loopback), LoopBack es una excelente opción para cuando quieres tener sólo servicios y administrar por tu cuenta de manera separada el front-end.
Asimismo, tenemos este taller gratuito [Creando REST APIs con Node.js](https://webtraining.zone/eventos/creando-un-rest-api-con-nodejs) donde usamos Express.js desde cero.
### Sobre el uso de Observables
1) Si quisieras usar Observables en .NET, este sería el proyecto que debes revisar: [The Reactive Extensions for .NET](https://github.com/dotnet/reactive) el cual es un *port* de ReactiveX para .NET.
2) Para usar Observables del lado del servidor con Node.js (y posiblemente con Express.js o LoopBack) se usaría el mismo **RxJS** que vimos en este taller de [Observables con JavaScript](https://webtraining.zone/eventos/observables-con-javascript) sin embargo usaríamos la convención **CommonJS** para hacer los "require" de los módulos de **RxJS**.
2.1) Instalarías RxJS con:
```
npm install rxjs
```
2.2) Podrías usar destructuring (Node.js 8+) para hacer algo como:
```
const { Observable, Subject, ReplaySubject, from, of, range } = require('rxjs');
const { map, filter, switchMap } = require('rxjs/operators');
range(1, 200)
.pipe(filter(x => x % 2 === 1), map(x => x + x))
.subscribe(x => console.log(x));
```
Saludos y cuéntame qué decides.
Por favor inicia sesión para participar en esta pregunta