«Hello, NancyFX!» или как я альтернативный веб-фреймворк под .NET нашёл

На днях (на самом деле даже не на днях, а на неделях) решил изучить вопрос об альтернативных фреймворках для разработки веб-приложений
на платформе .NET. Как ни удивительно, таковые нашлись. И, что еще более удивительно, их оказалось больше одного:

Сегодня (а скорее всего и в ближайшее время) я хотел бы внимаетельнее посмотреть на первый из перечисленных инструментов — NancyFX. Фреймворк привлекает своей простотой и, по словам создателя, это не единственное его преимущество. Среди прочих:

  • Простое тестирование приложений созданных на основе NancyFX
  • Встроенный IoC-контейнер TinyIoC
  • NancyFX — расширяемый, кастомизируемый на каждом уровне
  • Немногословный синтаксис
  • Приложения на основе этого фреймворка можно запускать на Mono
  • Нет необходимости возиться с конфигурационными файлами
  • Работает везде (IIS, WCF, self-hosted, служба Windows…)
  • Хуки в пайплане: можно подключиться в несколько мест до или после выполнения запроса или отдачей ответа
  • Нет завязки на System.Web (а, следовательно, и нет завязки на IIS — можно хоститься хоть на Raspberri PI (может даже будет статья об этом в будущем))
  • Поддержка сообществом

И что дальше?

А дальше — создадим простейшее (каноническое) приложение — Hello, NancyFX!

Во-первых. Для работы (ну как работы? так, работки) использовать буду бесплатную Visual Studio 2015 Community Edition. Далее, скачаем и установим шаблоны проектов NancyFX (входят в состав SideWaffle Template Pack ). Естественно, последнее делать не обязательно — можно и ручками все необходимые пакеты через NuGet установить, но мне кажется, что раз уж есть шаблон — почему бы им не воспользоваться?

Теперь можно запускать IDE! Запустили и создаём новый проект Nancy (File -> New Project -> Web -> SideWaffel -> Nancy Empty Project with ASP.NET Host). Проект девственно чист. Ну а вы чего ожидали? Написано же — Empty.

Оукай. Осталось совсем немного для завершения первого Nancy-приложения. В Solution Explorer (в русской версии «Обозревателе решений» (почему вообще существует русская локализация для VS?!)) жмём на проекте правой кнопкой мыши и создаём новый класс (Add -> New Class (или комбинация Alt+Shiht+C)) прямо в корне проекта. Назовём его HelloNancyFx.cs. Изменим его код на следующий:

public class HelloNancyFx: NancyModule
{
  public HelloNancyFx()
  {
    Get["/"] = _ => "Hello, NancyFX!";
  }
}

И нажмём на F5 (ну у меня именно так запускается активный (Set As Startup Project) проект в Solution Explorer. Да и у всех, наверно?). Должен открыться браузер на странице с адресом примерно такого вида: http://localhst:<случайное-пятизначное-число >. А на странице будет приветственное сообщение от NancyFX: «Hello, NancyFX!».

Как несложно догадаться — вся магия в классе NancyModule, от которого наследуется наш класс HelloNancyFx. Если не вдаваться в подробности — это примерно как ApiController или Controller в ASP.NET Web API или ASP.NET MVC соответственно.

В конструкторе нашего класса есть магическая строка Get["/"] = _ => "Hello, NancyFX!"; которая как бы намекает, что при GET-запросе на корень нашего сайта он плюнет в клиента строкой «Hello, NancyFX!».

Дальше можете сами немного поковырять этот довольно интересный и, что не менее важно, простой фрейморк. И под Mono, да. Ну вы поняли, что он мне понравился? Если будут вопросы — задавайте прямо здесь — чем смогу — помогу. До новых встреч!

Реклама

«Hello, NancyFX!» или как я альтернативный веб-фреймворк под .NET нашёл: Один комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.