Мы Создаем Наше Первое Приложение, Используя Nancyfx. Часть Вторая. Загрузчик

В предыдущей статье «Создание первого приложения на NancyFX» Мы сделали первые шаги в изучении фреймворка NancyFX. В этой статье мы познакомимся с TinyIoC и Nancy Bootstrapper, встроенным в Nancy по умолчанию.

Nancy поставляется со своим собственным DI прямо из коробки.

Как говорилось ранее, это TinyIoC. Если по каким-то причинам данный DI вас не устраивает, то вы можете установить один из следующих DI:

  • Нинжект
  • Автофак
  • СтруктураКарта
  • Виндзор
  • Меф
  • Нэнси-загрузчик для быстрой почтовой программы
  • Загрузчик Nancy Mono для быстрой почтовой программы
Чтобы загрузить один из вышеперечисленных DI, все, что вам нужно сделать, это вызвать менеджер пакетов Nuget и ввести nancy.bootstrappers в строке поиска.



Мы создаем наше первое приложение, используя NancyFX. Часть вторая.
</p><p>
 Загрузчик

Однако вернемся к использованию пакета «из коробки».

В прошлой статье мы создали тестовый проект. Давайте воспользуемся им и добавим к нему интерфейс IUserStorage.cs, который будет реализован нашим фейковым хранилищем.

  
  
  
  
   

using System.Collections.Generic; namespace NancyFxApplication { public interface IUserStorage { IList<dynamic> GetAllUsers(); } }

Далее мы фактически создаем наше поддельное хранилище Storage.cs, которое будет реализовывать созданный нами интерфейс.



using System.Collections.Generic; namespace NancyFxApplication { public class Storage : IUserStorage { public IList<dynamic> GetAllUsers() { return new List<dynamic> { new {Name = "Homer", Age = 30}, new {Name = "Bart", Age = 12}, new {Name = "Marge", Age = 30}, new {Name = "Lisa", Age = 10} }; } } }

Давайте добавим модуль Нэнси с помощью следующего кода.



using Nancy; namespace NancyFxApplication { public class UsersModule : NancyModule { public UsersModule(IUserStorage storage) : base("/users") { Get["/GetAll"] = param => (Response.AsJson(storage.GetAllUsers())); } } }

После сборки запускаем наше приложение и получаем следующий результат:

Мы создаем наше первое приложение, используя NancyFX. Часть вторая.
</p><p>
 Загрузчик

Как мы видим, Nancy.Bootstrapper автоматически нашел и вставил в наш модуль первую найденную в приложении реализацию интерфейса IUserStorage без каких-либо усилий с нашей стороны.

Однако некоторые заметят, что если приложение имеет другую реализацию интерфейса IUserStorage, это поставит нас в неловкую ситуацию, в которой мы не будем знать, какую реализацию интерфейса вызовет Нэнси (фактически Нэнси вызовет первый класс в алфавите из приложения, реализующего запрошенный интерфейс, но нам от этого легче не становится).

Если у нас в приложении есть две или более реализации нашего интерфейса хранилища, то нам на помощь придет TinyIoC. Давайте добавим следующий класс в наш проект. SouthParkUsers.cs

using System.Collections.Generic; namespace NancyFxApplication { public class SouthParkUsers : IUserStorage { public IList<dynamic> GetAllUsers() { return new List<dynamic> { new {Name = "Eric", SecondName = "Cartman", Age = 9}, new {Name = "Kenny", SecondName = "McCormick", Age = 9}, new {Name = "Kyle", SecondName = "Broflovski", Age = 9}, new {Name = "Stan", SecondName = "Marsh", Age = 9}, new {Name = "Butters", SecondName = "Stotch", Age = 9} }; } } }

Теперь давайте добавим класс MyBootstrapper.cs.

using Nancy; namespace NancyFxApplication { public class MyBootstrapper : DefaultNancyBootstrapper { protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); container.Register<IUserStorage, SouthParkUsers>(); } } }

А теперь давайте запустим приложение.

Результат будет следующим:

Мы создаем наше первое приложение, используя NancyFX. Часть вторая.
</p><p>
 Загрузчик

Как видите, мы заменили класс, реализующий IUserStorage, не прибегая к загрузке сторонних пакетов, а работая в рамках NancyFX. Как видите, использовать NancyFX довольно просто, используя внедрение зависимостей.

Более подробную информацию и более расширенные примеры можно найти по адресу TinyIoC вики , а также на Нэнси Bootstrapper вики .

В заключение хотелось бы анонсировать очередную статью о Нэнси.

В ней мы подробнее рассмотрим модули Нэнси.

Спасибо за внимание.

Буду рад получить отзывы о статье и комментарии.

Теги: #nancyfx #.

NET #mvc 4 #.

NET

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.