Создание asp.net mvc проекта с onion архитектурой

150
12 июля 2019, 16:20

Изучаю mvc 5 на metanit. Добрался до пункта архитектура приложений. И тут возникло много вопросов. Изучаю конкретно onion архитектуру и принцип UnitOfWork. И в связи с этими пунктами у меня появилось несколько вопросов.

Во первых: В примере на metanit есть вот такой вот конструктор контроллера

IBookRepository repo;
IOrder order;
public HomeController(IBookRepository r, IOrder o)
{
    repo = r;
    order = o;
}

И если запустить этот код без ninject, тогда вылетит ошибка, что для контроллера отсутствует базовый конструктор без параметров. И первый вопрос получается в том, как ninject делает так что такой конструктор уже не требуется? Как работает контейнер зависимостей Ninject?

Во вторых: Если я буду использовать принцип UnitOfWork мне уже не придётся создавать конструктор с параметрами. И получается всё уже работает без Ninject и суть второго вопроса почти похожа на первый. Зачем тогда вообще нужно внедрение зависимостей с помощью Ninject.

В третьих: В выше приведённом мной коде с metanit Для того что бы создать репозиторий используется экземпляр интерфейса, но ведь можно вместо этого написать экземпляр самого репозитория а не его интерфейса. Как как раз и делается в примере со следующей главы UnitOfWork

private OrderContext db = new OrderContext();
private BookRepository bookRepository;
private OrderRepository orderRepository;
public BookRepository Books
{
    get
    {
        if (bookRepository == null)
            bookRepository = new BookRepository(db);
        return bookRepository;
    }
}

В чём разница между этими способами? Я так понимаю в обоих случаях что если мы сразу делаем экземпляр класса репозитория или если мы это делаем через интерфейс? Всё равно создаться экземпляр репозитория?

READ ALSO
C# WPF Передать View в ViewModel при ItemsSource

C# WPF Передать View в ViewModel при ItemsSource

Есть TabControl с ItemsSource и биндингом к TabItem с ViewModelКак мне передать в TabItem ViewModel TabItem View?

146
Как разделить товары по категориям?

Как разделить товары по категориям?

Требуется разделить товары на категории, на странице товаров - чтобы шёл заголовок категории, по центру, а дальше товары из неё, как на блок-схеме...

144
Php результат в js

Php результат в js

Есть php код который вернёт true или false можно ли через json encode получить это значение? Конвертировать для js

134
не работает защита от sql инъекций

не работает защита от sql инъекций

Столкнулся с проблемойБыл код , решил добавить защиту от инъекций , но добавление в базу перестало работать

182