Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 87

Суть Ninject

08.06.2016, 10:38. Показов 1886. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Можно ли рассказать мне про внутренности Ninject, так сказать behind the scenes. Как все под капотом работает, а то примеры кода понимаю легко, вроде все ясно, НО не чую никакого сакрального смысла зачем же его используют на проектах? И почему обязанность по созданию объектов мы возлагаем именно на него? Такое чувство, что все выражаются абстракциями а по толку сказать ничего не могут.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2016, 10:38
Ответы с готовыми решениями:

Ninject и UnitOfWork
Кто может простыми словами объяснить в чем их коренное отличие? Поскольку и то и другое для управления зависимостями, ну короче для...

NInject, паттерны репозиторий и UoW
Привет всем! Не могу нигде найти вразумительную инфу. Ребят, у меня такой вопрос: Я хочу реализовать многослойную слабосвязную...

Ninject не сопоставляет второй интерфейс в конструкторе
Использую внедрение зависимостей,в контроллере когда в конструктор передавал один интрефейс,bind'ы срабытывали,когда добавил второй...

4
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
08.06.2016, 16:53
Цитата Сообщение от kingass Посмотреть сообщение
И почему обязанность по созданию объектов мы возлагаем именно на него?
Тебе походу нужно про это https://ru.wikipedia.org/wiki/... ависимости читать.

Если очень просто:
Всё это нужно для модульных приложений.
Когда изначально неизвестно какие будут возможности у приложения.
Когда возможности можно расширять просто подкладывая модули(dll) в папку с программой.

Мы не можем из таких dll взять и создать экземпляр класса типо:
C#
1
var myService = new MyService();
Мы просто не знаем в приложении, что он есть.

Задача контейнера зависимостей(Ninject) загрузить все зависимости из такой сборки в наше приложение.

Приложение будет знать только интерфейсы сервисов, а ninject будет создавать сами сервисы для этих интерфейсов.
Соответственно мы сможем менять dll в папке, меняя поведение всего приложения.
1
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
08.06.2016, 19:11
Сервис Локатор + Фабрика на стероидах = Ninject


и причем тут ASP.NET MVC?

Cуть в том что бы построить граф зависимости, решить проблемы с циклическими зависимости (Lazy<>), управлять временем жизни(Object Lifecycles), использовать Convention для авто регистрации.
0
Эксперт .NET
 Аватар для Wolfdp
3781 / 1755 / 371
Регистрация: 15.06.2012
Сообщений: 6,516
Записей в блоге: 3
09.06.2016, 06:36
Цитата Сообщение от kingass Посмотреть сообщение
И почему обязанность по созданию объектов мы возлагаем именно на него?
Так проще. В противном случае нам бьі пришлось все пробрасовать в параметрах конструктора, а метод Main (точка старта приложения) примимал 100500 параметров.

Цитата Сообщение от kingass Посмотреть сообщение
зачем же его используют на проектах?
Пример один: переежаем с MySQL на MSSQL. Если бьі мьі юзали не интерфейс IRepository, а сам класс Repository, нам придется править также во всех используемьіх частях. С иньекциями мьі просто меняем dll реализации.

Пример два: перестройка проекций на CQRS путем повторной прогонки Event. Язьіком смертньіх: у нас есть лог команд записей в БД, мьі полностью очищаем репозиторий и заново все туда записьіваем с нужньіми нам правками. При єтом, если у нас по каким-то действиям также шло уведомление на почту, то по идеи на момент перестройки можно задать в параметрах фабрики подключать другую реализацию интерфейса отправки уведомления, которая ничего не вьіполняет (как вариант еще создавать обработчики ивентов, которьіе связаньіе только с базой).

p.s. когда работаешь только с интерфейсами, отбивает желание лезть в закрьітьіе части или же вообще завязьіватся на внутреней реализации.
0
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 87
09.06.2016, 09:56  [ТС]
Спасибо, стало понятнее но есть вопросы для прояснения (для лучшего понимания):
1.
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Тебе походу нужно про это https://ru.wikipedia.org/wiki/... ависимости читать.
Как раз мне был именно не до конца понятен Ninject, а DI мне понятен.
2. Для ясности,
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Задача контейнера зависимостей(Ninject) загрузить все зависимости из такой сборки в наше приложение.
Как именно происходит загрузка данных зависимостей?
3.
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Приложение будет знать только интерфейсы сервисов,
Т.е. те интерфейсы, тот, можно сказать, протокол общения который определен заранее на основе тех же самых интерфейсов в проекте до добавления какой либо другой dll.
4.
Цитата Сообщение от LeniumSoft Посмотреть сообщение
а ninject будет создавать сами сервисы для этих интерфейсов.
т.е. нам будет достаточно знать dll и интерфейс а обязанность ninject предоставить экземпляр класса который реализует интерфейс.
И еще слышал фразу, что "при необходимости что-либо изменить, нам придется изменить это в одном месте" я вроде понимаю что без ninject мы бы создавали по всему проекту экземпляры классов вручную и пришлось бы менять их везде там, где мы их и создаем. Но с ninject это говорится про то место где фигурируют методы расширения Bind() и To() ?
когда ninject понимает что надо создать и предоставить объект пользователю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2016, 09:56
Помогаю со студенческими работами здесь

Работа Ninject и UnitOfWork в разные проектах
Добрый вечер! Такая ситуация, есть солюшен, большой, состоит из самого сайма на mvc, dal уровня (библиотека) и сервиса, который работает с...

Простейший пример MVC3/4+EntityFramework+Ninject+postgre
Сабж. Могу заставить работать все по отдельности, но не вместе. Можно прикрепить проект или файлы: Модель (например...

Как правильно организовать зависимость через Ninject?
Всем привет. Подскажите пожалуйста. какой день уже бьюсь над проблемой. попытаюсь словами вкратце описать, потому что кода не мало там...

Как внедрить зависимость в RoleProvider через ninject
У меня есть UserService через который я проверяю роль заданного пользователя. Мой провайдер ролей выглядит примерно так. public class...

Ошибка 'MvcApplication" does not implement inherited abstract member 'Ninject'
Всем привет, нужна хелпа знающих людей Я пытаюсь освоить ASP.NET по урокам хабра, встал на первом же уроке) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru