Лук Architeture - Потребность ASP.NET MVC сослаться на Infrstructure?

Я не уверен, сделал ли я хорошую работу по поиску тем, но я, может казаться, не нахожу ответы на свои вопросы. Базирующийся от моего понимания, у Луковой Архитектуры есть UI и Инфраструктура на том же самом слое. Позвольте говорят, что у меня есть свой UI в проекте ASP.NET MVC, и у меня есть проект DAL, который является моей Инфраструктурой. Позволяет предполагают, что мой код похож на тот ниже:

Ядро:

//интерфейс IOrderSaver был также определен на ядре

public class OrderService
{
    private IOrderSaver orderSaver;

    public OrderService(IOrderSaver orderSaver)
    {
        this.orderSaver = orderSaver;
    }

    public void AcceptOrder(Order order)
    {
        orderSaver.SaveOrder(order);
    }
}

Инфраструктура (DAL):

public class OrderSaverDAL : IOrderSaver
{
    //implementation goes here
}

Теперь, в моем UI (ASP.NET MVC) я хотел бы иллюстрировать примерами класс OrderService так, чтобы это могло принять заказы. Для UI, чтобы сделать это, это должно передать IOrderSaver конструктору. Это должно передать OrderSaverDAL.

Questions:

  1. Делает UI (ASP.NET MVC), должен сослаться на OrderSaverDAL? От моего понимания Луковой Архитектуры (если я понимаю его правильно), у UI не должно быть ссылки на DAL. Кто-то может, пожалуйста, объяснить?

  2. , Если я не должен ссылаться на OrderSaverDAL из своего проекта ASP.NET MVC, как я построю OrderService в ASP.NET MVC? Можно ли, пожалуйста, вести меня, давая пример кода о том, как достигнуть этого?

Большое спасибо заранее за помощь!

0
nl ja de

2 ответы

Вам нужен дополнительный модуль/слой конфигурации , который обеспечит электричеством ui и dal. Если вы осуществляете это сами без отражения тогда, этой конфигурации moudul нужна вся ссылка.

Обычно луковая архитектура сотрудничает с контейнер внедрения зависимости это может решить ссылки во времени выполнения через конфигурационные файлы или контроль местных собраний.

2
добавлено
Насколько я Знаю, что есть, не строят во все же. Microsoft использует Единство. Посмотрите как делают главные c острые di структуры МОК выдерживают сравнение для списка кандидатов
добавлено автор k3b, источник
В.NET есть ли встроенный API/класс контейнера внедрения зависимости? Я задавался вопросом, каков "DependencyManager" в связи, которую вы обеспечили.
добавлено автор apisip, источник
  1. Делает UI (ASP.NET MVC), должен сослаться на OrderSaverDAL? От моего понимания Луковой Архитектуры (если я понимаю его правильно), у UI не должно быть ссылки на DAL. Может кто-то, пожалуйста, объяснить?

Вы правы сказать, что у UI не должно логически быть зависимости к DAL.

Однако как k3b указывает, распространенный способ сделать инверсию зависимости (на который Луковая Архитектура полагается в большой степени), через контейнер DI. Вам тогда нужен некоторый Корень состава, место, где графы объектов вашего заявления составлены, используя контейнер. Корень Состава должен быть "всезнающим" и нуждается в ссылке на каждый проект, чтобы обеспечить электричеством вещи.

Оказывается, что UI часто, где Корень Состава принят, поскольку UI - естественная отправная точка в вашем заявлении и прекрасной подгонке, чтобы сделать состав в нужное время. У вас мог быть отдельный проект для вашего Корня Состава, но это будет менее удобно.

0
добавлено
Спасибо за объяснение!
добавлено автор apisip, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Software Design and OOP
Software Design and OOP
1 481 участник(ов)

OOP, software design, architecture, GRASP, GoF, SOLID, separation of concerns, безысходность. Пожалуйста, придерживайтесь указанных тем. https://oopru.github.io More cool stuff: @fp_ru @tdd_ru @coding_interview_ru @coding_ru

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)