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

В предыдущей статье

Загрузчик"> «Создание первого приложения на NancyFX»



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

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

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

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



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

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

Загрузчик">

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

В прошлой статье мы создали тестовый проект. Давайте воспользуемся им и добавим к нему интерфейс 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. Часть Вторая. Загрузчик

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

Загрузчик">

Как мы видим, 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. Часть Вторая. Загрузчик

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

Загрузчик">

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

Более подробную информацию и более расширенные примеры можно найти по адресу

Загрузчик"> TinyIoC вики



, а также на

Загрузчик"> Нэнси Bootstrapper вики



.

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

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

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

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

Теги: #nancyfx #.

NET #mvc 4 #.

NET

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

Автор Статьи


Зарегистрирован: 2024-10-25 10:34:02
Баллов опыта: 568
Всего постов на сайте: 2
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

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