2010-11-24 19 views
18

En Java, he podido insertar * el servidor jetty en mis aplicaciones, pero ¿existe una tecnología de servidor embedded * equivalente para .Net?Servidor web incrustado de C#?

de código abierto (FLOSS) sería preferible si es posible.

* por embebido me refiero a una aplicación de servidor web ligero que pudiera ser empaquetado con mi aplicación y ejecutar en la máquina de escritorio local de un usuario para proporcionar un servicio web a nivel local.

+2

Cassini es pequeño, y lo suficientemente bueno para muchos propósitos. También hay muchos derivados de Cassini mejores que el original: http://www.codeplex.com/site/search?query=cassini&ac=8 – MatthewMartin

+0

¿Alguna preferencia entre CassiniDev, Cassini ++ o Cassini 3.5? –

Respuesta

19

El equivalente más cercano al embarcadero que he encontrado hasta ahora es Nancy, descrito como:

un peso ligero, bajo ceremonia, marco para la creación de servicios basados ​​en HTTP .Net y Mono.

Nancy está diseñado para manejar BORRAR, GET, HEAD, OPCIONES, POST, PUT y el parche solicitudes

Nancy fue diseñado para no tener ninguna dependencia sobre los marcos existentes. Construido con el perfil de cliente de .NET Framework, Nancy se puede usar prácticamente donde quiera, ya que es completamente autónomo con sus propios objetos de solicitud y respuesta.

Uno de los conceptos básicos en Nancy es el de los hosts. Un host actúa como un adaptador para un entorno de alojamiento y Nancy, lo que permite a Nancy ejecutar las tecnologías existentes, como ASP.NET, WCF y OWIN, o integrarse en cualquier aplicación determinada.

Una opción aún más ligero es Kayak (actualización: proyecto parece muerto a partir del 01.18.2014), que describe como su documentación:

un servidor web sencillo. Escucha las conexiones, crea una representación en memoria de las solicitudes y te permite generar respuestas fácilmente. Se puede usar en cualquier programa C#. Tu código carga Kayak en su espacio de proceso, ¡no al revés!

y Nancy y Kayak tienen licencia de MIT.

+0

¿Kayak solo sirve html estático o puede una aplicación ASP.Net hospedarse con él? – jlafay

+5

Nancy NO es un servidor web. Es middleware. Necesita ejecutar Nancy en un servidor web (y de hecho Nancy se ejecutará en Kayak AFAIK (cuando Kayak está configurado para OWin)). De hecho, sugeriría que la pila Nancy/Kayak es lo que estás buscando. – Aron

+2

Es cierto que la parte central de Nancy no es un servidor web en sí mismo. Sin embargo, creo que la biblioteca Nancy.SelfHosting sí lo es. –

3

El que se utiliza con Visual Studio se llama cassini. Hay una buena derivada llamada UltiCassini.

10

Aquí hay otra alternativa que escribí el año pasado y y me ha servido bien.

EmbedIO:https://github.com/unosquare/embedio

lo uso sobre todo para crear servicios REST en la Frambuesa Pi (soft-float).

Editar: código actualizado para Mono 3.10, soporte para WebSockets, y el manejo de solicitudes asíncronas.

+0

no es compatible con .net 4, :( – Benny

+0

Con menos de 10 líneas de código, tengo un servidor web que sirve archivos estáticos. Ojalá proporcione una forma de imprimir la URL después de que se sirve por completo. De lo contrario, es pequeño y confiable. – videoguy

+0

@videoguy Eso es algo muy simple de hacer. Simplemente puede crear un módulo que amplíe WwebModuleBase y haga que el manejador devuelva falso después de imprimir la URL. Vea un ejemplo aquí: https://github.com/unosquare/embedio/ blob/master/Unosquare.Labs.EmbedIO/Modules/StaticFilesModule.cs # L147 – Mario

2

La solución de Microsoft en sí se llama Katana,

https://katanaproject.codeplex.com/

en cuenta que es completamente de código abierto, bajo licencia Apache.

+0

Katana es el proyecto de Microsoft para la integración de OWIN con IIS. – Aron

+0

@Aron puede hospedarse de manera segura sin IIS. –

4

Actualización para 2016:

El nuevo chico en el bloque es Kestrel.

Kestrel es un servidor web de fuente abierta que es parte de la iniciativa ASP NET Core de Microsoft. Es un servidor web basado en eventos construido sobre libuv (básicamente, node.js - js + .net). Esto significa que debe ser fácilmente portátil entre diferentes sistemas operativos. Desafortunadamente, significa que requiere una dependencia nativa externa.

https://github.com/aspnet/KestrelHttpServer

Un proyecto mayor que hace esto es nowin

https://github.com/Bobris/Nowin/tree/master/Nowin

Esta es una implementación de Owin construido en su totalidad dentro de .NET. Desafortunadamente, ha quedado obsoleto a favor de Kestrel.

Cuestiones relacionadas