- PVSM.RU - https://www.pvsm.ru -

Создание простого веб-сервера при помощи Nancy

Недавно передо мной встала задача создания системы, работающей на основе JSON веб-сервиса.
На первый взгляд, задача тривиальна, но на решение налагалось ряд дополнительных требований:

  • сервер должен быть реализован на C#;
  • сервер должен уметь работать как с IIS, так и самостоятельно;
  • решение должно иметь максимально простой и понятный синтаксис.

По первому и третьему критерию проходят два кандидата — Kayak [1] и Nancy [2], однако второй критерий оставляет единственного кандидата — Nancy. Об этом фреймворке и пойдет речь.

Для комфортной работы я рекомендую установить NuGet [3].

Построение нашего сервера будет состоять из двух этапов — создания сервера, работающего через ASP и написания «запускатора» stand-alone сервера.

Хостинг через ASP.NET

Итак, начнем. Первым делом нужно создать чистый ASP.NET-проект и установить туда необходимые пакеты. Для этого откройте консоль NuGet (Tools > Library Package Manager) и введите туда следующую команду:

Install-Package Nancy.Hosting.Aspnet

Nuget самподтянет необходимые зависимости, а также модифицирует файл Web.config. Если сейчас вы запустите проект, то увидите содержимое директории, в которой сейчас работает сервер.

Теперь необходимое создать модули, описывающие пути сервера и действия, совершаемые при запросе на эти пути.
Воспользуемся слегка модифицированным при мером с официального сайта:

public class SampleModule : Nancy.NancyModule
{
    public SampleModule()
    {
        Get["/"] = _ => "Hello World!";
        Get["/{name}"] = parameters => { return "Hello, " + parameters.name; };
    }
}

Если сейчас вы запустите сервер, то увидите строку Hello World!, по пути же localhost [4]:port/myname вы увидите приветствие уже на указанное имя.

Вот, в сущности, и все — дело за логикой сервера, но это уже выходит за рамки этой статьи.

Stand-alone сервер

Соберите проект из предыдущей части, если вы этого еще не делали. После этого создайте новое консольное приложение. Установите в ваш проект пакет Nancy.Hosting.Self, подключите все DLL из директории bin/ предыдущего проекта, затем создайте класс NancyExample и метод Main, выглядящий так:

static void Main(string[] args)
{
    // initialize an instance of NancyHost (found in the Nancy.Hosting.Self package)
    var host = new NancyHost(new Uri("http://localhost:12345"));    
    host.Start(); // start hosting

    Console.ReadKey();    
    host.Stop();  // stop hosting
}

Вуаля — Nancy автоматически подхватит написанные вами ранее модули и успешно начнет их хостить.

Собственно, на этом можно закончить. Документацию по Nancy можно взять здесь [5].

Автор: skayred


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/net/17018

Ссылки в тексте:

[1] Kayak: http://kayakhttp.com/

[2] Nancy: http://nancyfx.org/

[3] NuGet: http://nuget.codeplex.com/

[4] localhost: http://localhost

[5] здесь: https://github.com/NancyFx/Nancy/wiki/Documentation