Nancy – self-hosted

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Em nosso último post, vimos um pouco sobre o Nancy e fizemos nossa primeira aplicação. Nós utilizamos como host o ASP.NET, e hoje vamos ver como fazemos uma aplicação self-hosted no Nancy. Para começar, vamos criar uma nova aplicação console no Visual Studio. Instale o pacote do nancy:

Install-Package Nancy

E instale o pacote abaixo:

Install-Package Nancy.Hosting.Self

Agora adicione o seguinte código dentro do método Main da classe Program:

using (var host = new NancyHost(new Uri("http://localhost:1234")))
{
   host.Start();
   Console.ReadLine();
}

O que fizemos aqui, foi criar uma instância de NancyHost, que é a classe que irá permitir que nossa aplicação responda às requisições feitas contra o endereço definido. Além disso, chamaos o método Start para subir nossa aplicação web.

A classe NancyHost implementa a interface IDisposable, e chamará automaticamente o método Stop quando a aplicação terminar.

Agora vamos criar uma classe chamada HelloNancy com o seguinte código:

using Nancy;

namespace NancySelfHosted
{
    public class HelloNancy : NancyModule
    {
        public HelloNancy()
        {
            Get["/"] = _ => "Hello Nancy self-hosted";
            Get["/Self"] = _ => "Esta é uma aplicação Nancy self-hosted";
        }
    }
}

E pronto, nossa aplicação está pronta. Fácil não? Dessa forma você consegue fazer uma aplicação web, sem depender do IIS. Além de criar como aplicação console, você também pode hospedar uma aplicação Nancy em um Windows Service, e até mesmo em uma aplicação Desktop. A distribuição de uma aplicação self-hosted é muito simples, não havendo necessidade de se preocupar com qual servidor web a aplicação vai rodar, ela é completamente independente, basta rodar a aplicação, e pronto, ela já está respondendo à requisições web.

Pode ser que ao rodar a aplicação no Windows você receba uma exceção com essa mensagem:

Namespace reservation assigns the rights for a portion of the HTTP URL namespace to a particular group of users. A reservation gives those users the right to create services that listen on that portion of the namespace. Reservations are URL prefixes, meaning that the reservation covers all sub-paths of the reservation path.

Se isso ocorrer, basta você rodar o comando abaixo no prompt de comando:

netsh http add urlacl url=http://+:1234/ user=Everyone

Se seu windows for em português, utilize o comando abaixo:

netsh http add urlacl url=http://+:1234/ user=Todos
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *