Saltar al contenido

Usando una DLL .NET en Node.js / serverside javascript

Solución:

Echa un vistazo al proyecto edge.js que comencé (http://tjanczuk.github.com/edge). Proporciona un mecanismo para ejecutar código .NET y node.js en proceso. Edge.js le permite llamar código .NET desde node.js y código node.js desde .NET. Calcula datos entre .NET y node.js, así como reconcilia los modelos de subprocesos entre CLR multiproceso y V8 de subproceso único.

Con edge.js puede acceder a islas de código .NET preexistente desde node.js, que parece coincidir con su escenario.

Recientemente, me enfrenté al mismo desafío (requisito para llamar al código C # desde node.js javascript). Tenía miles de líneas de código C # complejo que realmente no me gustaba portar a javascript.

Resolví si de la siguiente manera.

  • El código C # relevante es básicamente 1-2 clases en un ensamblado DLL
  • Definió una interfaz COM que es un subconjunto de la interfaz de la clase C # e implementó esa interfaz en la clase C #. Por lo tanto, la DLL se convirtió en un servidor COM en proceso.
  • Implementé una extensión DLL de node.js que crea una instancia de mi clase COM de C # usando la API COM estándar de Win32 y enruta las llamadas al método desde el javascript de node.js al código C # usando la interfaz COM.

Esto resuelve el problema si uno solo quiere hacer llamadas en una dirección. También tenía el requisito de realizar llamadas desde C # a javascript. Esto es mucho más difícil. Uno tiene que:

  • Implementar un objeto COM en la extensión DLL de node.js (ATL ayuda aquí)
  • Pase una referencia de interfaz de este objeto COM al código C # (interoperabilidad COM)
  • Enrutar las llamadas a través del objeto COM a los objetos V8 en node.js

Tal vez si tengo algo de tiempo extra, podría hacer un proyecto de ejemplo a partir de esto.

Si todo lo que quieres hacer es poner en marcha un servidor HTTP ligero mientras sigues programando con C # y .Net, deberías darle una oportunidad a Kayak. Es un servidor HTTP ligero para C # y se comporta como node.js en ese sentido.

kayakhttp

Actualizar:

Si está buscando un servidor HTTP liviano para manejar solicitudes web, tiene un par de alternativas hoy:

  • ServiceStack (recomendado)
  • Microsoft WebAPI
  • NancyFx

Que yo sepa, todo lo anterior funciona en alguna versión de Mono, por lo que aún puede alojarlos en sistemas basados ​​en Windows y Unix.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *