В предыдущей статье
Загрузчик"> «Создание первого приложения на NancyFX»
Мы сделали первые шаги в изучении фреймворка NancyFX. В этой статье мы познакомимся с TinyIoC и Nancy Bootstrapper, встроенным в Nancy по умолчанию.
Nancy поставляется со своим собственным DI прямо из коробки.
Как говорилось ранее, это TinyIoC. Если по каким-то причинам данный DI вас не устраивает, то вы можете установить один из следующих DI:
- Нинжект
- Автофак
- СтруктураКарта
- Виндзор
- Меф
- Нэнси-загрузчик для быстрой почтовой программы
- Загрузчик Nancy Mono для быстрой почтовой программы
Загрузчик" 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()));
}
}
}
После сборки запускаем наше приложение и получаем следующий результат:
Загрузчик" alt="Мы создаем наше первое приложение, используя NancyFX. Часть вторая.
Загрузчик">
Как мы видим, Nancy.Bootstrapper автоматически нашел и вставил в наш модуль первую найденную в приложении реализацию интерфейса IUserStorage без каких-либо усилий с нашей стороны.
Однако некоторые заметят, что если приложение имеет другую реализацию интерфейса IUserStorage, это поставит нас в неловкую ситуацию, в которой мы не будем знать, какую реализацию интерфейса вызовет Нэнси (фактически Нэнси вызовет первый класс в алфавите из приложения, реализующего запрошенный интерфейс, но нам от этого легче не становится).
Если у нас в приложении есть две или более реализации нашего интерфейса хранилища, то нам на помощь придет TinyIoC.
Давайте добавим следующий класс в наш проект. SouthParkUsers.cs using System.Collections.Generic;
Теперь давайте добавим класс MyBootstrapper.cs.
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}
};
}
}
}
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>();
}
}
}
Результат будет следующим:
Загрузчик" alt="Мы создаем наше первое приложение, используя NancyFX. Часть вторая.
Загрузчик">
Как видите, мы заменили класс, реализующий IUserStorage, не прибегая к загрузке сторонних пакетов, а работая в рамках NancyFX. Как видите, использовать NancyFX довольно просто, используя внедрение зависимостей.
Более подробную информацию и более расширенные примеры можно найти по адресу
, а также на
Загрузчик"> Нэнси Bootstrapper вики
.
В заключение хотелось бы анонсировать очередную статью о Нэнси.
В ней мы подробнее рассмотрим модули Нэнси.
Спасибо за внимание.
Буду рад получить отзывы о статье и комментарии.
Теги: #nancyfx #.
NET #mvc 4 #.
NET
-
Как Принимать Кредитные Карты Онлайн
19 Dec, 24 -
Мобильная Активность В Разное Время Суток
19 Dec, 24 -
Влияние Звука На Песок
19 Dec, 24 -
Обсуждаем Экстренную Социальную Помощь
19 Dec, 24