powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / выбор IoC
25 сообщений из 286, страница 9 из 12
выбор IoC
    #38475935
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПонесло обезьянку

не думал, что ты до такого опустишься. в игнор товарищ. иди к своим обезяснкам.
...
Рейтинг: 0 / 0
выбор IoC
    #38475936
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttбудут какие-то опровергающие аргументы с твоей стороны?

МСУ, можешь даже стараться.
я не собираюсь больше продолжать тему, если тебя уже на обезянки понесло.
...
Рейтинг: 0 / 0
выбор IoC
    #38475943
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУМожно много чего, нужно просто иметь прямые руки.
мы не о прямых руках. мы обсуждаем исключительно паттерн DI. я понимаю, что это не панацея, и что прямые руки нужны и голова и всё такое. что не всегда уместно пихать DI, и не надо пытаться сделать +100500 слоёв обстракции... и т.д. и т.п.
Ну вот ты иногда говоришь правильные вещи, а иногда тебя заносит куда-то анус. Хрен поймешь тебя.

hVosttя тебе говорю только что касается в контексте обсуждаемой темы. мы говорим о DI, я говорю как его правильно использовать исходя из большого количества чужого исходного кода, что я прочитал, исходя из прочитанного в книгах уважаемых людей, исходя из банальной логики. я ничего сам не придумал. у тебя привычка перекладывать с больной головы на здоровую.
Не выеживайся. Ты говоришь о некой серебряной пуле. А я тебе объясняю, что жизнь гибче и не нужно мерять всё единым шаблоном. Есть масса решений.

hVosttда в контексте DI диспозить должен контейнер и я уже объяснил почему.
Ты много чего "объяснил", но до сих пор не решил задачу с уничтожением после использования. Классический вариант - открываем окно, идет обращение к WCF сервису, после получения данных инстанс сервиса диспоузится. Где решение?

hVosttбудут какие-то опровергающие аргументы с твоей стороны?
Да. Ты пишешь глупости и про какой-то сферичский хаос. Хаос может быть только в больной голове. Но задача с веб сервисом так и не решена.
...
Рейтинг: 0 / 0
выбор IoC
    #38475945
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУПонесло обезьянку

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

Ну так-то ты быстро сливаешь.

hVostthVosttбудут какие-то опровергающие аргументы с твоей стороны?

МСУ, можешь даже стараться.
я не собираюсь больше продолжать тему, если тебя уже на обезянки понесло.

Только не говори, что обиделся. Принцип обезьянки - упорото делать что-то одно, не замечая альтернатив и иных решений. Я искренне желаю, чтобы ты не превращался в неё. И ни дай тебе быть таким, как упоротый на всю голову Сева. Это еще та невменяемая макака, городит такую жуть, что хоть стой, хоть падай.
...
Рейтинг: 0 / 0
выбор IoC
    #38475952
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКлассический вариант - открываем окно, идет обращение к WCF сервису, после получения данных инстанс сервиса диспоузится. Где решение?

а в чем проблема? определяется именованная область жизни, если при регистрации компонента (не имеет значения, что там WCF или что-то ещё, совершенно не важно), указано, что жить он должен в пределах определённой области, значит он и умрёт тогда, когда эта область умрёт. об этом позаботиться контейнер.

вообще, если мы работаем с DI, то должна быть обеспечена некая инфраструктура. в ASP.NET MVC она есть из коробки. в WinForms её нет, надо позаботиться об этом самому. все окна должны создаваться через фабрику. я даже не вижу причин обсуждать это.

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

всё что я говорил, относится к паттерну DI. к чистому паттерну DI. это когда никакие DependencyResolver или App.Container не используются. никто не резолвит ничего самостоятельно. если тебе кажется, что такие подходы не практикуются, уверяю тебя — это не так. ещё как практикуются.
...
Рейтинг: 0 / 0
выбор IoC
    #38475953
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нифига не знаю що такив ИоК, ДИ, СЛ- но, мусю опустили кажись по делу
мусь, либо учись, лио пиши кк можешь - иногда как можешь круче чем учиться у козлов каких то
...
Рейтинг: 0 / 0
выбор IoC
    #38475954
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы говоришь о некой серебряной пуле.

ещё раз нет. я пытаюсь донести все преимущества использования DI. и это не проброс контейнера в глубь класса типа резолвите там себе что хотите, и делайте с этим что хотите -- это не путь DI. вот что я пытаюсь донести.
...
Рейтинг: 0 / 0
выбор IoC
    #38475957
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosиногда как можешь круче чем учиться у козлов каких то



и такая точка зрения тоже имеет право на жисть. в сраку ваших Фаулеров, прямые руки и пошёл!...
...
Рейтинг: 0 / 0
выбор IoC
    #38475958
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТы говоришь о некой серебряной пуле.

ещё раз нет. я пытаюсь донести все преимущества использования DI. и это не проброс контейнера в глубь класса типа резолвите там себе что хотите, и делайте с этим что хотите -- это не путь DI. вот что я пытаюсь донести.
все эти высеры типа ДИ и т.д. латают дыры в ООП, но фигушки, эти дыры бездонны
...
Рейтинг: 0 / 0
выбор IoC
    #38475960
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosвсе эти высеры типа ДИ и т.д. латают дыры в ООП, но фигушки, эти дыры бездонны

абстракции текут
...
Рейтинг: 0 / 0
выбор IoC
    #38475966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа в чем проблема? определяется именованная область жизни, если при регистрации компонента (не имеет значения, что там WCF или что-то ещё, совершенно не важно), указано, что жить он должен в пределах определённой области, значит он и умрёт тогда, когда эта область умрёт. об этом позаботиться контейнер.
Проблема в том, что эту именованную абстракцию области жизни как-то должен протащить в класс. Опять нагружать конструктор. Далее. Класс должен будет в нужный момент сказать, когда выгрузить именованную область. Что по сути те же яйца, что и обычный диспоуз сервиса. Прицнип тот же самый.

hVosttвообще, если мы работаем с DI, то должна быть обеспечена некая инфраструктура. в ASP.NET MVC она есть из коробки. в WinForms её нет, надо позаботиться об этом самому. все окна должны создаваться через фабрику. я даже не вижу причин обсуждать это.
Я с этим не спорю.

hVosttесли же ты выбрал другой подход, использование SL, то совершенно другое дело. диспоузь там, где считаешь нужным. передавай контейнер в глубь классов. я бы так делать не стал, но возможно в этом тоже есть свой смысл. типо с прямыми руками можно и на этом построить хорошую архитектуру.
А какая принципиальная разница в данном контексте, SL или WPF?

hVosttвсё что я говорил, относится к паттерну DI. к чистому паттерну DI. это когда никакие DependencyResolver или App.Container не используются. никто не резолвит ничего самостоятельно. если тебе кажется, что такие подходы не практикуются, уверяю тебя — это не так. ещё как практикуются.
Я же тебе давал ссылки. Практикуются, ибо это удобно. Во-вторых, не все DI контейнеры имеют именованные области жизни. В-третьих, намного проще освободить, чем делегировать освобождение. И самое главное - нету серебряной пули. Вот что я хочу, чтобы ты понял.
...
Рейтинг: 0 / 0
выбор IoC
    #38475967
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТы говоришь о некой серебряной пуле.

ещё раз нет. я пытаюсь донести все преимущества использования DI. и это не проброс контейнера в глубь класса типа резолвите там себе что хотите, и делайте с этим что хотите -- это не путь DI. вот что я пытаюсь донести.

Так DI контейнеры разные бывают.
...
Рейтинг: 0 / 0
выбор IoC
    #38475969
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

sl = service locator
...
Рейтинг: 0 / 0
выбор IoC
    #38475970
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дави их догматиков
...
Рейтинг: 0 / 0
выбор IoC
    #38475974
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

как я понял из базара, ДИ - это типа ресурс менеджера
его просят, если есть такая та фигня, то пжальста запусти ее
а все фигни записывают в ДИ свои координаты
вот ДИ смотрит свой список и если есть такая фигня то запускает ее клон или просто счетчик там увеличивает, пофиг
ну и как то этот счетчик уменшется и тады ДИ выкидывает эту фигню из памяти, а может и не выкидывает фиг знает, кому че надоть
...
Рейтинг: 0 / 0
выбор IoC
    #38475975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ,

sl = service locator

Ок. А то он сначала про ASP.NET, потом про WinForms, потом SL. Сбило с толку :)
...
Рейтинг: 0 / 0
выбор IoC
    #38475976
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosкак я понял из базара, ДИ - это типа ресурс менеджера
не, это одна из функций, а основная - породить туеву хучу объектов, задать свойства, связи и так чтоб они не сами вытаскивали информацию о своей настройке, а снаружи некто(контейнер) их накормил
...
Рейтинг: 0 / 0
выбор IoC
    #38475979
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

ну я про это и грил, создать, запустить, вернуть,... кто во что горазд
в ВИПРОС это ОДИН метод
...
Рейтинг: 0 / 0
выбор IoC
    #38475980
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и 12 таблиц :)
...
Рейтинг: 0 / 0
выбор IoC
    #38475981
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosи 12 таблиц :)
в spring.net - один XML файл
...
Рейтинг: 0 / 0
выбор IoC
    #38475985
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

и так можно, но много таблиц лучше :)
...
Рейтинг: 0 / 0
выбор IoC
    #38475995
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПроблема в том, что эту именованную абстракцию области жизни как-то должен протащить в класс. Опять нагружать конструктор. Далее. Класс должен будет в нужный момент сказать, когда выгрузить именованную область. Что по сути те же яйца, что и обычный диспоуз сервиса. Прицнип тот же самый.

ничего не надо тащить в класс кроме самой зависимости. всё по-фенщую. класс объявляет через конструктор и/или через открытые свойства о своих зависимостях. DI-контейнер эти зависимости разрешает. класс ничего не знает о каких-то там областей жизни в этом и соль. это понятие DI-контейнера. при чем это может и называть-ся совершенно иначе, и реализовано может быть по-другому.

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

суть в том, чтобы определить не только сами по себе зависимости, но временные рамки существования зависимостей.

банальный пример ASP.NET MVC. стандартная жизненная область -- это время жизни HttpContext. мои сервисы совершенно без понятия, что они живут в этих временных рамках. однако отдельные сервисы зарегистрированы в контейнере таким образом, что они живут ровно столько, сколько живут их прямые потребители, т.ё. каждому классу выдаётся совершенно новый экземпляр. и ему не нужно заботиться об уничтожении. когда он умрёт, его зависимости умрут. с этим прекрасно српавляется контейнер.

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

разница величиной в пропасть, не смотря на кажущееся родство обоих паттернов.
...
Рейтинг: 0 / 0
выбор IoC
    #38475996
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosи так можно, но много таблиц лучше :)
есть разные способы конфигурирования контейнеров - xml файлы, интерфейсы у которых контейнер запрашивает конфигурацию(можно и из таблиц данные взять), говнокод в конце концов, где привязка прибита гвоздями.
...
Рейтинг: 0 / 0
выбор IoC
    #38475999
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttбанальный пример
лучше небанальный с иерархией контекстов
...
Рейтинг: 0 / 0
выбор IoC
    #38476001
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

кстати, Autofac, например, определяет свою фабрику зависимостей, которую можно прокидывать в класс, если он в момент создания ещё не уверен какая конкретно реализация зависимости ему понадобится:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class SomeClass
{
   private readonly IIndex<sting, ISomeService service> _si;

   public SomeClass(IIndex<sting, ISomeService service> serviceIndex)
   {
      _si = serviceIndex;
   }

   public void SomeWork(string someName)
   {
      var service = _si[someName];
      ...
   }
}



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

проблемный класс:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class SomeController
{
  private readonly IFirstService _firstService;
  private readonly ISecondService _secondService;
  private readonly IThirdService _thirdService;
  private readonly IFourthService _fourthService;

  public SomeController(
    IFirstService firstService,
    ISecondService secondService,
    IThirdService thirdService,
    IFourthService fourthService)
  {
    _firstService = firstService;
    _secondService = secondService;
    _thirdService = thirdService;
    _fourthService = fourthService;
  }
}



решение:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public interface IMyAggregateService
{
  IFirstService FirstService { get; }
  ISecondService SecondService { get; }
  IThirdService ThirdService { get; }
  IFourthService FourthService { get; }
}
public class SomeController
{
  private readonly IMyAggregateService _aggregateService;

  public SomeController(
    IMyAggregateService aggregateService)
  {
    _aggregateService = aggregateService;
  }
}



в общем, DI это достаточно гибкая хрень. я ещё сам до конца его не раскурил, но то что получается мне очень нравится. не серебряная пуля конечно, но очень удобно.
...
Рейтинг: 0 / 0
25 сообщений из 286, страница 9 из 12
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / выбор IoC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]