Луковая архитектура в Xamarin.Forms с Autofac

Я хочу использовать луковую архитектуру в Xamarin.Forms.

Я уже использую Autofac для Ioc. Я видел этот проект xDriven, но он не очень помог.

Это мое текущее решение:

введите здесь описание изображения

Поправьте меня, если я должен изменить что-то из следующего:

Из Публикация правил SSW здесь, я думаю

  • Мои модели должны войти в домен
  • IWebService должен идти в интерфейсы репозитория
  • Другие услуги, связанные с обработкой, должны находиться в интерфейсах бизнес-логики.
  • Портативный проект TestIoc будет клиентом (или самым внешним уровнем)
  • Реализация сервисов должна быть вне Onion

Сейчас,

  1. Куда должны идти мои помощники?
  2. Куда должны идти мои настраиваемые элементы управления?
  3. А как насчет всех вещей от ViewFactory?
  4. Как насчет модуля Ioc и загрузчика? Должны ли они быть в другом проекте? Прямо сейчас загрузчик создает контейнер Ioc, регистрирует модуль и т. д.

person Dushyant Bangal    schedule 02.11.2015    source источник


Ответы (1)


Идея архитектуры Onion состоит в том, чтобы иметь центральное ядро ​​приложения, а каждый слой за его пределами представляет собой интерфейс, на который можно ссылаться только в направлении, ведущем к ядру. Итак, как вы разместите это в своем проекте, зависит от вас, идея заключается в том, что вы ссылаетесь только в одном направлении, а модель предметной области ссылается только на себя, репозитории — это внешняя инфраструктура.

  1. Со своими помощниками. Для чего они помощники? Поместите их в слой, который они помогают.

  2. Пользовательские элементы управления — это слой пользовательского интерфейса, который является внешним слоем.

  3. ViewFactory выглядит нормально. IViewFactory — это то, на что ссылаются все внутренние ссылки, когда он использует его для создания представления.

  4. Они не должны быть в другом проекте. Дело не в структуре проекта, а в том, как код сочетается друг с другом. Их можно поместить в другой проект, если у вас есть другие проекты, содержащие реализацию сервисов, которые необходимо внедрить.

person Adam    schedule 02.11.2015