"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](https://www.visualstudio.com/post-
download-vs?sku=community&clcid=0x419). Далее, скачаем и установим шаблоны
проектов 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, да. Ну вы поняли, что он мне понравился? Если
будут вопросы - задавайте прямо здесь - чем смогу - помогу. До новых встреч!