Pregunta

Estoy tratando de construir una solución de streaming para una aplicación interna, pero estoy dibujando espacios en blanco de una solución para conseguir más allá de un control de carretera. Actualmente, en mi ejemplo de trabajo, estoy usando APE , pero debido a las restricciones que no puedo tener ningún procesos en ejecución extranjeras en el ordenador central, así que no puedo ejecutar el servidor APE.

Estoy buscando alternativas, pero todo lo que he encontrado hasta ahora ha requerido de los procesos que se ejecutan en el servidor.

Algunos detalles sobre el proyecto.

  • Habrá aproximadamente 25 personas conectadas al mismo tiempo
  • Lo ideal sería que todo el mundo debería ver las actualizaciones al mismo tiempo, tan pronto como estén disponibles.
  • Se ejecuta en un entorno de Windows, por lo que C # /. NET soluciones sería preferible sobre cosas como PHP.

Alguien tiene alguna idea, si Node.js es capaz de manejar esto, o de cualquier otra solución?

¿Fue útil?

Solución

El problema es que los servidores web tradicionales utilizan un hilo por aproximación de tubo para el manejo de usuarios concurrentes que no siempre es óptima para las técnicas de votación cometa / largas. (Las nuevas versiones de IIS tienen una forma de enchufar sus propios manejadores de conexión sin embargo, que voy a llegar muy por debajo.)

Para los servidores web tradicionales, más a menudo el objetivo es conseguir una conexión, servir al usuario a algo tan rápido como sea posible, y pasar a la siguiente conexión. Si la conexión es persistente durante mucho tiempo, es porque su probablemente haciendo algo intensiva, como una gran descarga o consulta enorme, pero en general su forma activa mediante la CPU por lo que el modelo de rosca funciona bastante bien.

En el cometa (sondeo largo), que normalmente se conecta a un servidor web en el que sólo tiene que esperar para que se produzca un evento, y más a menudo que no. Esto promueve más conexiones concurrentes. También son chacnes que muchos de estos usuarios están esperando en los mismos eventos que ocurran en todos los ámbitos.

La asignación de un hilo después de que un usuario principalmente solo giro y espera no es un modelo muy óptimo para este tipo de cosas. Un mejor modelo es un servidor web basado bucle de eventos que hace todo en un tipo asíncrono de la moda, y donde el envío de un evento para varios usuarios no implica un cambio de contexto costoso para cada cliente. Esto lo Node.js está construido en (usando libevent como su núcleo), así como rubíes EventMachine, Twisted Python, Tornado de Friendfeed, Espolón, y el C # basado servidor de Manos .

Es por eso que a menudo es más ventajoso disponer de un cometa hace en su propio proceso de encargo de un servidor personalizado ya que los servidores web Apache y tradicionales como las versiones anteriores de IIS no funcionan en un asunto que es eficaz para las necesidades del cometa.

aplicaciones estándar ASP.NET se poco atornillan porque grupo de subprocesos en .NET está limitada a 25 hilos generales y 25 hilos de IO (y http conexiones llevan una rosca IO). Se le puede efectivamente limitado a ser ligeramente menor que en la realidad debido a que el grupo de subprocesos se comparte con todas las otras cosas en .NET. Puede volcar el grupo de subprocesos para arriba sin embargo con una configuración estableciendo sin embargo, pero el rendimiento tiene una tendencia a decaer exponencialmente, más subprocesos tiro en. Se podría, en teoría, este número hasta topar si se puede garantizar que no crezca demasiado, y luego, posiblemente, sólo tiene que utilizar monitores de rosca estándar de .NET para construir su propia cosa despacho de eventos cometa.

Sin embargo .NET aplicaciones en ejecución las nuevas versiones de IIS no tiene un rayo de esperanza sin embargo. Se puede crear una costumbre IAsyncHttpHandler . Hay algunos grandes guías en línea para leer sobre cómo funciona este. Con que usted puede construir su propia agrupación de conexiones y servir a sus clientes de manera más eficiente. No es una solución perfecta y hay que construir gran cantidad de tuberías por su cuenta. WebSync es un producto comercial que envuelve esta interfaz para usted y le da algunas piezas marco de alto nivel que puede trabajar con sin embargo.

Otros consejos

WebSync sería una buena solución para usted; que se ejecuta en IIS, por lo que no se necesitan procesos externos. Comprobar que funciona aquí .

Se puede aplicar por su cuenta, mediante la puesta en común de largo. 25 solicitudes simultanious debe ser ningún problema para IIS. Basta con echar un vistazo a lo APE transmite a los clientes. - Es bastante limpio cómo volver a implementar que en 100 líneas de código (I serialización media en el formato compatible)

¿Has mirado en PubNub ? Puede ser que sea capaz de manejar lo que está haciendo. Cuesta dinero, pero te dan un montón de transacciones libres también. No está seguro de qué tipo de carga que espera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top