csharp-nancy

NancyFX, el framework web ligero para .NET

NancyFx/Nancy es un framework de código abierto de bajo perfil para construir servicios basados en HTTP en .NET y Mono.

Ofrece una alternativa liviana y fácil de usar a otros frameworks como ASP.NET MVC o Web API, más pesados y complejos.

Nancy se enfoca en la simplicidad y la flexibilidad, lo que permite a los desarrolladores crear aplicaciones rápidas y eficientes sin la necesidad de una gran cantidad de configuración y código.

Características de NancyFX,

  • Ligero y rápido: Diseñado para ser fácil de usar y configurar sin sacrificar el rendimiento.
  • Modular: Soporte para múltiples módulos, facilitando la organización del código.
  • Sin dependencias: Puede ejecutarse en cualquier host sin necesidad de dependencias externas.
  • Sintaxis clara y fluida: Enfocado en la simplicidad y legibilidad del código.
  • Multiplataforma: Compatible con Windows, macOS y Linux.
  • Soporte integrado para pruebas: Facilita la creación de tests unitarios y de integración.

NancyFX es Open Source y todo su código y documentación están disponibles en el repositorio del proyecto en GitHub - NancyFx/Nancy.

Actualización: Nancy está marcado como archivado desde Enero de 2021. Podéis seguir usándolo, o usar una alternativa como EmbedIO, librería en C# para crear un servidor HTTP en .NET

Instalación de NancyFX

Para comenzar a utilizar NancyFX en tu proyecto de .NET, primero debes instalar la biblioteca a través de NuGet. Puedes hacerlo mediante el Administrador de paquetes NuGet en Visual Studio o utilizando la consola de NuGet.

Install-Package Nancy

Además, deberemos instalar un servicio de hoster, por ejemplo OWIN (Open Web Interface for .NET).

Install-Package Nancy.Owin
Install-Package Microsoft.Owin.Selfhost
Install-Package Microsoft.Owin.Host.HttpListener

Cómo usar NancyFX

Nancy es un framework de servidor web que utiliza una estructura de enrutamiento basada en módulos. Los módulos son clases que manejan solicitudes HTTP específicas y devuelven respuestas.

Cada módulo se asigna a una ruta de URL específica, lo que permite al framework enrutar las solicitudes al módulo correspondiente.

using Nancy;

public class HelloModule : NancyModule
{
    public HelloModule()
    {
        Get("/", _ => "Hello, World!");
    }
}

Ejemplo básico: Hello World

Este ejemplo muestra cómo crear una aplicación web básica que responde con “Hello, World!” a cualquier solicitud GET.

using Microsoft.Owin.Hosting;
using Owin;
using Nancy.Owin;

internal class Program
{
	static void Main(string[] args)
	{
		var url = "http://localhost:8888/";

		// start OWIN host
		using (WebApp.Start<Startup>(url))
		{
			Console.WriteLine("NancyFX server running on http://localhost:8888");
			Console.ReadLine();
		}
	}
}

class Startup
{
	public void Configuration(IAppBuilder app)
	{
		app.UseNancy();
	}
}

public class HelloModule : NancyModule
{
	public HelloModule()
	{
		Get("/", _ => "Hello, World!");
	}
}