|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Такой вот вопрос. Допустим, я для своих целей использую Ninject, конструкторы/свойства/методы максимально отвязаны от конкретных реализаций, и оперируют интерфейсами. Соответственно, для обращения к ним нужно отрезолвить нужные зависимости, и передать нужным образом. Для резолвинга нужен экземпляр IoC-контейнера. Лучшие собаководы вроде как рекомендуют инжектить зависимости в нужном наборе фабрик в нужных местах (а не в точке входа в приложение всем скопом), далее использовать фабрики. Тут начинаются вопросы: 1) мы начнем обращаться к конкретным реализациям фабрик? Но получается же, что DI, таким образом, нарушается - в точке вызова мы оперируем с конкретной реализацией? 2) допустим, мы заинжектили и фабрики. Но тогда в точках обращения к фабрикам нам опять нужна ссылка на контейнер. И где этот контейнер хранить? Сделать его синглтоном и чем-то типа ServiceLocator? Опять получаем зависимость от конкретной реализации, причем сквозную по всему проекту. Наконец, причем здесь MVVM. Если речь идет о невизуальных классах с узкой спецификой, то мы можем их инжектить максимально близко к точке использования. А вот если, например, нам надо заинжектить что-то типа IMessageBoxService, используемый во всех моделях приложения? Инжектить его в конструкторе каждой модели - не видно особого смысла, т.к. у сервиса нет состояния, и он один абсолютно одинаковый для всех. А если не инжектить в каждой модели - то надо инжектить один раз на всё приложение. Опять упираемся во что-то типа сервис-локатора-синглтона. И что тут делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 08:19 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksА вот если, например, нам надо заинжектить что-то типа IMessageBoxService, используемый во всех моделях приложения? Инжектить его в конструкторе каждой модели - не видно особого смысла, т.к. у сервиса нет состояния, и он один абсолютно одинаковый для всех.Сегодня нет состояния, завтра может появиться. Сегодня он синглетон, завтра он ThreadStatic-синглетон, послезавтра ещё что... Но это маразм конечно, основанный на неуверенности в завтрашнем дне. зы: У нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 08:57 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksИнжектить его в конструкторе каждой модели - не видно особого смысла, т.к. у сервиса нет состояния, и он один абсолютно одинаковый для всех. А если не инжектить в каждой модели - то надо инжектить один раз на всё приложение.Инжектить можно через публичные свойства, вынесенные в базовый для всех вьюмоделей класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 08:59 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей Кзы: У нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... +100 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 09:41 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КУ нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... У вас никогда не было автоматизированного тестирования. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 10:34 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorАлексей КУ нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... У вас никогда не было автоматизированного тестирования. :) Тестировать мессадж бокс? Не смеши :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 10:37 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC Lacks, Вы не понимаете принцип Dependency Inversion, и соответсвенно технику применения Dependecy Injection контейнеров. Всё о чём вы пишите - сплошной анти-паттерн ServiceLocator . Какую зависимость какой компонент получит - надо решать на уровне конфигурации контейнера, а не в классах приложения. Абстрактные фабрики при наличии контейнера - ненужная вещь. Контейнер и так классная фабрика, сделает что надо, сколько надо, и когда надо. Для вашего IMessageBoxService можно использовать то, что Seamann назыает Ambient Contex (хотя я бы всё равно инжектил). Только не забудьте его инициализировать его при старте приложения, и предусмотреть возможность замены. Чтобы привести мысли в правильное русло раздобудьте себе Dependency Injection in .NET . Там кратко и по делу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 10:44 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorМСУЧего вы там во вьюмоделе/контроллере/презентере тестировать собрались? Тестировать модель надо, а она далека от MessageBoxService. Не надо мешать логику с UI, тогда костыли не понадобятся. Тестировщики-любители блин... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:12 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Так я же и пишу, что стараюсь уйти от вариантов с ServiceLocator'ом. Основной вопрос сводился к следующему: допустим, мы определили зависимости для компонентов в конфигурации контейнера. Теперь в нужном месте нам по зависимости нужен экземпляр компонента. У кого его получить? у контейнера? А откуда получить контейнер? Каждый раз его инстанциировать заново? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:31 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksТак я же и пишу, что стараюсь уйти от вариантов с ServiceLocator'ом. Основной вопрос сводился к следующему: допустим, мы определили зависимости для компонентов в конфигурации контейнера. Теперь в нужном месте нам по зависимости нужен экземпляр компонента. У кого его получить? у контейнера? А откуда получить контейнер? Каждый раз его инстанциировать заново? Ну, видимо, контейнер создаётся при старте приложения. "Корневой" сервис создаётся через явное обращение к этому контейнеру. А дальше всё через иньекции. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:36 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksА откуда получить контейнер? Каждый раз его инстанциировать заново? Это же статика, экземпляр контейнера один. Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 11:44 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей Ке надо мешать логику с UI, тогда костыли не понадобятся. Тестировщики-любители блин... А логику представления тестировать не надо например? Скажем есть у нас кнопка "DeleteFoo" у которой свойство Enabled прибиндено к свойству модели MVVM DeleteEnabled. Свойство должно быть true, только если юзер выбрал объект, и этот объект не удалён. При вызове delete спросить уверен ли юзер в своём желании удалять. Если не уверен - не удалять. Это всё логика, которой не место в бизнес слое. Ее можно и полезно тестировать. Тестировщик-профессионал, блин. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:06 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorА логику представления тестировать не надо например? Скажем есть у нас кнопка "DeleteFoo" у которой свойство Enabled прибиндено к свойству модели MVVM DeleteEnabled. Свойство должно быть true, только если юзер выбрал объект, и этот объект не удалён. При вызове delete спросить уверен ли юзер в своём желании удалять. Если не уверен - не удалять. Это всё логика, которой не место в бизнес слое. Ее можно и полезно тестировать.Тестировать "это" - маразм. SolYUtorТестировщик-профессионал, блин. :)Да. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:16 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУЭто же статика, экземпляр контейнера один. Код: c# 1.
В случае с упомянутым Ninject пример использования выглядит примерно как Код: c# 1. 2. 3. 4.
В случае, например, с Castle Windsor, код немногим отличается: Код: c# 1. 2. 3. 4.
- контейнер инстанциируется явным образом. Т.е. для того, чтобы им воспользоваться, мы должны либо поместить его внутрь синглтона/статического класса - получаем ServiceLocator, либо хранить где-то в корне приложения ссылку, и постоянно передавать её по цепочке в конструкторы. Ни то, ни другое у меня как-то не вызывают оптимизма. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:18 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksТ.е. для того, чтобы им воспользоваться, мы должны либо поместить его внутрь синглтона/статического класса - получаем ServiceLocator, либо хранить где-то в корне приложения ссылку, и постоянно передавать её по цепочке в конструкторы. Ни то, ни другое у меня как-то не вызывают оптимизма.Есть смысл ещё раз прочитать мои ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:21 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КНу, видимо, контейнер создаётся при старте приложения. "Корневой" сервис создаётся через явное обращение к этому контейнеру. А дальше всё через иньекции. Алексей КЕсть смысл ещё раз прочитать мои ответы. Редкий случай, когда я согласен с Алексеем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:42 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC Lacksконтейнер инстанциируется явным образом И в чем проблема? IoC LacksТ.е. для того, чтобы им воспользоваться, мы должны либо поместить его внутрь синглтона/статического класса - получаем ServiceLocator Глупости. 1. Синглтон не обязан быть сервис локатором. 2. Причем тут синглтон? Он не панацея. 3. Причем тут статический класс? Класс не обязан быть статическим, речь о статическом методе и только. 4. Достаточно иметь статический метод, который будет отдавать отрезолвленный интерфейс. IoC LacksНи то, ни другое у меня как-то не вызывают оптимизма. У тебя каша в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 12:45 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУУ тебя каша в голове. Касательно обсуждаемой темы - не спорю. Иначе зачем мне было бы эту тему заводить? Я и рассчитываю с помощью этой темы несколько разобраться в обсуждаемом. Итак, насколько я понял, мне намекают на что-то типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
и далее в коде Код: c# 1.
так? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:03 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC Lacksи далее в коде при старте приложения Код: c# 1.
Добавил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:20 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC Lacksтак? Типа того. Вот код штатного DI для ASP.NET MVC Код: c# 1. 2. 3. 4. 5. 6.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
DependencyResolver Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:33 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
IoC LacksМСУУ тебя каша в голове. Касательно обсуждаемой темы - не спорю. Иначе зачем мне было бы эту тему заводить? Я и рассчитываю с помощью этой темы несколько разобраться в обсуждаемом. Итак, насколько я понял, мне намекают на что-то типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
и далее в коде Код: c# 1.
так? Эта унылая шняго из ASP.net mvc создана только для таких как MCУ, который в глаза не видел нормальные контейнеры. Их применение должно быть изначально заложено в архитектуру, почитай доки по prism. В них достаточно внятно объяснено для чего они нужны и что для этого должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 13:44 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaЭта унылая шняго из ASP.net mvc создана только для таких как MCУ, который в глаза не видел нормальные контейнеры. Это замечательный возможность использовать штатный mvc-шный резолвер. А те, вроде тебя, у кого не хватает мозгов это понять, могут вещать дальше о правильный контейнерах и убитой кастрированной поделке prism. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:04 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУ, IDependencyResolver в MVC - это ошибка. Правильный путь - реализовывать IControllerFactory. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:49 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorМСУ, IDependencyResolver в MVC - это ошибка. С чего это? SolYUtorПравильный путь - реализовывать IControllerFactory. Путь тоже хороший, не спорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:55 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУ, контейнеры склонны контролировать жизненный цикл созданных ими объектов. Во многих случаях требуется явно указать контейнеру, когда объект можно уничтожать. Register-Resolve-Release цикл. Так вот, DependencyResolver не предоставляет способа "отпускать" объекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:07 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorМСУ, контейнеры склонны контролировать жизненный цикл созданных ими объектов. Во многих случаях требуется явно указать контейнеру, когда объект можно уничтожать. Register-Resolve-Release цикл. Так вот, DependencyResolver не предоставляет способа "отпускать" объекты.Всегда стараюсь управлять временем жизни через using. Пока получается. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:10 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КВсегда стараюсь управлять временем жизни через using. Пока получается. :-) Без контейнера получается. С контейнером будет утечка памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:35 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorконтейнеры склонны контролировать жизненный цикл созданных ими объектов. Я в курсе, но мне это не нужно. Я плохой? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:37 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУSolYUtorконтейнеры склонны контролировать жизненный цикл созданных ими объектов. Я в курсе, но мне это не нужно. Я плохой? В терминологии MVC мне достаточно такого варианта: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
SolYUtor, объясни, зачем мне тут полновесный DI? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:42 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУSeVaЭта унылая шняго из ASP.net mvc создана только для таких как MCУ, который в глаза не видел нормальные контейнеры. Это замечательный возможность использовать штатный mvc-шный резолвер. А те, вроде тебя, у кого не хватает мозгов это понять, могут вещать дальше о правильный контейнерах и убитой кастрированной поделке prism. Штатный резолвер для убогих, натуральный анти-паттерн, который нужно за собой везде таскать или создавать еще один маразм - глобальную ссылку(в mvc - это конфиг, которым ты везде тычешь). Нужен только по одной причине - есть ряд сущностей, которые нужны не всегда(например, упомянутый IMessageBoxService, который необходимо получить только при возникновении ошибки, которая в свою очередь может быть раз в сто лет), чтобы этого не происходило нормальные контейнеры реализуют возможность отложенной инжекции(Lazy в MEF&Unity3.0). Если это есть, то твой резолвер и даром не нать, советы опытных собаководов с фабриками тоже идут лесом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 15:52 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaШтатный резолвер для убогих Штатный резолвер для тех, кому не нужно большее. Этим убогим не понять, всё сложно. Для более уточненных задач есть штатный IControllerFactory. SeVaнатуральный анти-паттерн, который нужно за собой везде таскать Что, куда и зачем нужно таскать? Внятно сформулируй мысль. SeVaглобальную ссылку(в mvc - это конфиг, которым ты везде тычешь). Ты чего там у себя куришь? Какая глобальная ссылка? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:00 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУМСУпропущено... Я в курсе, но мне это не нужно. Я плохой? В терминологии MVC мне достаточно такого варианта: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
SolYUtor, объясни, зачем мне тут полновесный DI? 1. Этот говнокод непереносим из-за жесткой ссылки на статик 2. Ты тут недавно поднимал визг, когда Нахлобуч явно диспозил объекты(жалко я был забанен в это время, ReadAllBytes меня тоже очень порадовал). Твой очередной говносовет не прокатит в весьма простых и часто используемых случаях, когда нужно одно соединение с БД, транзакция, etc per Request(таких вариантов вагон и маленькая тележка, но ты об этом не знаешь со своими говнообработчиками в ASP.net). В нормальных контейнерах можно задать зависимости для per Request, объекты будут создаваться и удалятся на автомате. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:01 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУSeVaШтатный резолвер для убогих Штатный резолвер для тех, кому не нужно большее. Этим убогим не понять, всё сложно. Для более уточненных задач есть штатный IControllerFactory. SeVaнатуральный анти-паттерн, который нужно за собой везде таскать Что, куда и зачем нужно таскать? Внятно сформулируй мысль. SeVaглобальную ссылку(в mvc - это конфиг, которым ты везде тычешь). Ты чего там у себя куришь? Какая глобальная ссылка? Обычная история с твоей тупостью и не пониманием простых вещей. Попробуй в своем говнокоде обойтись без статиков на твой ресолвер, а потом нам расскажи как ты будешь это делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:04 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
А что там диспозить? Собрался DbConnection или FileStream делать членом класса сервиса? Да и вообще, layer superclass для слоя прикладных сервисов - тупиковый путь развития. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:06 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SolYUtorАлексей КВсегда стараюсь управлять временем жизни через using. Пока получается. :-) Без контейнера получается. С контейнером будет утечка памяти.Смотря какой LifetimeManager. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:07 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVa1. Этот говнокод непереносим из-за жесткой ссылки на статик 2. Ты тут недавно поднимал визг, когда Нахлобуч явно диспозил объекты(жалко я был забанен в это время, ReadAllBytes меня тоже очень порадовал). Твой очередной говносовет не прокатит в весьма простых и часто используемых случаях, когда нужно одно соединение с БД, транзакция, etc per Request(таких вариантов вагон и маленькая тележка, но ты об этом не знаешь со своими говнообработчиками в ASP.net). В нормальных контейнерах можно задать зависимости для per Request, объекты будут создаваться и удалятся на автомате. 1. Тут нет никаких жестких ссылок на статик. Через штатный DependencyResolver по ленивому свойству я получаю экземпляр, который сидит себе в атрибутах контроллера. 2. Твои говномысли опять размазались по планете и здравой логике не поддаются. Соберись. SeVaОбычная история с твоей тупостью и не пониманием простых вещей. Попробуй в своем говнокоде обойтись без статиков на твой ресолвер, а потом нам расскажи как ты будешь это делать. Стандартная ситуация, когда ты захлебываешься в своем же поносе. Чем тебя так испугал статический резолв? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:13 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КА что там диспозить? Собрался DbConnection или FileStream делать членом класса сервиса? Да и вообще, layer superclass для слоя прикладных сервисов - тупиковый путь развития. Например, DbConnection. Во-вторых, если страшен layer superclass, никто не запрещает тоже самое писать в наследниках. В-третьих, чем layer superclass опасен? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:14 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей КА что там диспозить? Собрался DbConnection или FileStream делать членом класса сервиса? Да и вообще, layer superclass для слоя прикладных сервисов - тупиковый путь развития. Например, DbConnection. Во-вторых, если страшен layer superclass, никто не запрещает тоже самое писать в наследниках. В-третьих, чем layer superclass опасен?Я как-то упёрся в прикладных сервисах в необходимость наследования от нескольких layer superclass. Понадобились одновременно DbContext, описанный примерно как в твоём примере, и ещё одна канитель, описанная в другом суперклассе. Вроде как получилось нарушение SRP со всеми вытекающими. После этого решил больше так не делать. Далее, если я привяжу управление временем жизни контейнера (и созданных ими сервисов) к WCF (ASP.Net) сессии через IInstanceProvider (или аналогичное), возможна ситуация когда это не устроит. Не, явное управление временем жизни через using - самое гибкое решение. Всё остальное от лукавого... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
MyConnectionFactory неуправляемых ресурсов не содержит. Его можно инжектировать, можно использовать статический. Зависит от уровня маразма и потребностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:44 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КЯ как-то упёрся в прикладных сервисах в необходимость наследования от нескольких layer superclass. Понадобились одновременно DbContext, описанный примерно как в твоём примере, и ещё одна канитель, описанная в другом суперклассе. Вроде как получилось нарушение SRP со всеми вытекающими. После этого решил больше так не делать. А расшириться через конструктор почему не захотел? :) А в регистрации подпихиваешь готовую ссылку в конструктор. Алексей КДалее, если я привяжу управление временем жизни контейнера (и созданных ими сервисов) к WCF (ASP.Net) сессии через IInstanceProvider (или аналогичное), возможна ситуация когда это не устроит. Не, явное управление временем жизни через using - самое гибкое решение. Всё остальное от лукавого... Ну не скажи. Яркий пример фабрики контроллеров, о которой писал SolYUtor: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
И никаких юзингов. Честное управление жизнью моих зависимостей. P.S. Примерно тоже самое и я предлагаю, только без фабрики. Вариант с фабрикой более утонченный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:57 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУА расшириться через конструктор почему не захотел? :) А в регистрации подпихиваешь готовую ссылку в конструктор.Побоялся плодить бесконечное количество конструкторов. :-) МСУАлексей КДалее, если я привяжу управление временем жизни контейнера (и созданных ими сервисов) к WCF (ASP.Net) сессии через IInstanceProvider (или аналогичное), возможна ситуация когда это не устроит. Не, явное управление временем жизни через using - самое гибкое решение. Всё остальное от лукавого... Ну не скажи. Яркий пример фабрики контроллеров, о которой писал SolYUtor:SolYUtorIDependencyResolver в MVC - это ошибка. Правильный путь - реализовывать IControllerFactory.Редкий случай, когда я согласен с SolYUtor. SolYUtor Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Это гораздо лучше, нет базового класса, отвечающего за доступ к инфраструктуре. Осталось заменить IDataService на IDataServiceFactory и честно использовать using. :-) МСУИ никаких юзингов. Честное управление жизнью моих зависимостей.А потом захочется иметь два одновременных коннекта к одной базе и начнутся поиски "кто виноват и что делать". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 17:17 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Например, DbConnection. Во-вторых, если страшен layer superclass, никто не запрещает тоже самое писать в наследниках. В-третьих, чем layer superclass опасен?Я как-то упёрся в прикладных сервисах в необходимость наследования от нескольких layer superclass. Понадобились одновременно DbContext, описанный примерно как в твоём примере, и ещё одна канитель, описанная в другом суперклассе. Вроде как получилось нарушение SRP со всеми вытекающими. После этого решил больше так не делать. Далее, если я привяжу управление временем жизни контейнера (и созданных ими сервисов) к WCF (ASP.Net) сессии через IInstanceProvider (или аналогичное), возможна ситуация когда это не устроит. Не, явное управление временем жизни через using - самое гибкое решение. Всё остальное от лукавого... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
MyConnectionFactory неуправляемых ресурсов не содержит. Его можно инжектировать, можно использовать статический. Зависит от уровня маразма и потребностей. На утрированном примере попробую объяснить почему это лажа. 1. MyConnectionFactory - это только лишний класс и усложнение кода на ровном месте, которые никому не нужны. 2. Предположим, что connection нужен для двух repositories и в один прекрасный момент мы решаем заменить их реализацию с ADO на EF, что подребует DBContext вместо Connection и нужно будет лопатить код, а с di этого ненужно будет делать. ЗЫ 2Муслима, твои очередные брызги даже читать не буду, ничего там кроме говна не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 17:17 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaНа утрированном примере попробую объяснить почему это лажа. 1. MyConnectionFactory - это только лишний класс и усложнение кода на ровном месте, которые никому не нужны.Предположим. SeVa2. Предположим, что connection нужен для двух repositoriesВнутри фабрики будет применён ThreadStatic. SeVaи в один прекрасный момент мы решаем заменить их реализацию с ADO на EF, что подребует DBContext вместо Connection и нужно будет лопатить кодКакая-то дикая ситуация, но не придётся, потому что "это" между методами/классами таскаться не будет. См выше про ThreadStatic. SeVaа с di этого ненужно будет делать.Верю. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 17:27 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaНа утрированном примере попробую объяснить почему это лажа. 1. MyConnectionFactory - это только лишний класс и усложнение кода на ровном месте, которые никому не нужны.Предположим. SeVa2. Предположим, что connection нужен для двух repositoriesВнутри фабрики будет применён ThreadStatic. SeVaи в один прекрасный момент мы решаем заменить их реализацию с ADO на EF, что подребует DBContext вместо Connection и нужно будет лопатить кодКакая-то дикая ситуация, но не придётся, потому что "это" между методами/классами таскаться не будет. См выше про ThreadStatic. SeVaа с di этого ненужно будет делать.Верю. :-) С await твои ThreadStatic из пещер идут лесом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 18:02 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaС await твои ThreadStatic из пещер идут лесом.Это да. Но нужен ли он на сервере? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 18:04 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaС await твои ThreadStatic из пещер идут лесом.Это да. Но нужен ли он на сервере? Прежде всего он нужен именно там, пока идут запросы в БД, внешние сервисы и тд, треды не расходуются, получается совсем другая нагрузочная способность. Проверено ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 19:09 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaпока идут запросы в БД, внешние сервисы и тд, треды не расходуются,Я в курсе. SeVaполучается совсем другая нагрузочная способность.А оно того стоит? Может проще (дешевле? надёжнее?) горизонтально масштабировать сервера приложений? На клиенте заморочек с асинхронностями хватает. А на сервере часто непростая логика. Если к ней добавить ещё асинхронностей - вообще жесть получится... Попутно вопрос. Как при всех этих асинхронностях работает OperationContext в WCF? Он вроде как тоже на ThreadStatic построен? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 19:30 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КПопутно вопрос. Как при всех этих асинхронностях работает OperationContext в WCF? Он вроде как тоже на ThreadStatic построен?Как и предполагалось, для OperationContext + await таки нужен костыль . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 19:53 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaпока идут запросы в БД, внешние сервисы и тд, треды не расходуются,Я в курсе. SeVaполучается совсем другая нагрузочная способность.А оно того стоит? Может проще (дешевле? надёжнее?) горизонтально масштабировать сервера приложений? На клиенте заморочек с асинхронностями хватает. А на сервере часто непростая логика. Если к ней добавить ещё асинхронностей - вообще жесть получится... Попутно вопрос. Как при всех этих асинхронностях работает OperationContext в WCF? Он вроде как тоже на ThreadStatic построен? Полная жесть - мультики с OperationContext. Для чего тебе это было нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 20:12 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
[quot SeVa]Алексей КПолная жесть - мультики с OperationContext.Да. SeVaДля чего тебе это было нужно?Читай внимательнее. Мне это не было нужно. И, надеюсь, не будет. Любопытство, не более... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 05:54 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КПобоялся плодить бесконечное количество конструкторов. :-) Два конструктора это бесконечность? :) Вообще да, береги конструкторы с молоду (с) Алексей КА потом захочется иметь два одновременных коннекта к одной базе и начнутся поиски "кто виноват и что делать". :-) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Зло? ) P.S. Долбосева, даже не хочу что-то тебе доказывать. Кроме очередного слюновыделения и какого-то бреда про статику от тебя нечего ожидать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 09:48 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУДва конструктора это бесконечность? :)Ещё не бесконечность, но тренд настораживает. :-) МСУАлексей КА потом захочется иметь два одновременных коннекта к одной базе и начнутся поиски "кто виноват и что делать". :-) Зло? )Ладно, можно. Но всё равно не нравится. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 10:23 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КЕщё не бесконечность, но тренд настораживает. :-) Согласен, очень опасно Алексей КЛадно, можно. Но всё равно не нравится. :-) Да что ж такое... :) IDependencyResolver не нравится, IControllerFactory не нравится... Может, дельфи? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 10:26 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КАлексей КПопутно вопрос. Как при всех этих асинхронностях работает OperationContext в WCF? Он вроде как тоже на ThreadStatic построен?Как и предполагалось, для OperationContext + await таки нужен костыль .TransactionScope с await тоже поди не работает? Так что, SeVa , от твоих асинхронностей на сервере больше вреда чем пользы! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:14 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУДа что ж такое... :)Доверие надо заслужить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:15 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУЛучше скажи, как тебе такой костыль? Будем DependentTransaction инжектировать? Или не поможет? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:22 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КМСУЛучше скажи, как тебе такой костыль? Будем DependentTransaction инжектировать? Или не поможет? :-) Как на счет в рамках общего TransactionScope покрутиться через PLINQ (AsParallel.ForAll) и через клонирование транзакции получить честный DependentTransaction? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:32 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КАлексей Кпропущено... Как и предполагалось, для OperationContext + await таки нужен костыль .TransactionScope с await тоже поди не работает? Так что, SeVa , от твоих асинхронностей на сервере больше вреда чем пользы! Какой ужас!!! С await даже простой lock не работает, но только это не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:34 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaКакой ужас!!! С await даже простой lock не работает, но только это не проблема. Приехали... А не ты ли совсем недавно верещал во всё горло, что "lock - это зло"? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:36 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но в идеале за такой код, конечно, нужно расстреливать без суда и следствия... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:38 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но в идеале за такой код, конечно, нужно расстреливать без суда и следствия... :)Да. В идеале оно выглядит примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:44 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaКакой ужас!!! С await даже простой lock не работает, но только это не проблема.Я тебе про ThreadStatic, ты мне про lock. Где логика? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:46 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Лучше скажи, как тебе такой костыль? Будем DependentTransaction инжектировать? Или не поможет? :-) Как на счет в рамках общего TransactionScope покрутиться через PLINQ (AsParallel.ForAll) и через клонирование транзакции получить честный DependentTransaction? Код: c# 1.
Ну тут-то понятно ради чего эти пляски. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:49 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КМСУДа. В идеале оно выглядит примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А почему бы не инжектировать в MyService через конструктор заранее созданный и настроенный коннект со скоупом? :) Ааа, я ж забыл... Тренд из миллиона конструкторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:03 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaКакой ужас!!! С await даже простой lock не работает, но только это не проблема.Я тебе про ThreadStatic, ты мне про lock. Где логика? ЛОгика простая - другая модель требует других подходов, в которых эту банку червями(ThreadStatic) нужно выбросить на свалку. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:19 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУА почему бы не инжектировать в MyService через конструктор заранее созданный и настроенный коннект со скоупом? :)Время жизни соединения с БД и время жизни сессии могут отличаться. Говорил вроде... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:32 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaЛогика простая - другая модель требует других подходов.А они есть, эти костыли новые подходы под новую модель, чтобы внедрять её повсеместно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:35 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КМСУА почему бы не инжектировать в MyService через конструктор заранее созданный и настроенный коннект со скоупом? :)Время жизни соединения с БД и время жизни сессии могут отличаться. Говорил вроде... "Сессии" чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:47 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Время жизни соединения с БД и время жизни сессии могут отличаться. Говорил вроде... "Сессии" чего?AspNet, WCF и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 13:51 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КМСУ"Сессии" чего?AspNet, WCF и т. п. 1. Уважаемый, а чего это ты начал так печься об асп.нет? :) Напоминаю, что в вебе реквесты с респонзами должны быть максимально короткие и все длительные операции нужно выносить в отдельную песочницу (отложенное выполнение). 2. WCF. Тоже самое и тут. Когда продолжительность сессии превышает продолжительность соединения с БД, это уже не в какие ворота не лезет :) Напомню, что по умолчанию время ASP.NET сессии (её тоже можно активировать в WCF при HTTP транспорте) пол-часа. Не убедил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:20 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaЛогика простая - другая модель требует других подходов.А они есть, эти костыли новые подходы под новую модель, чтобы внедрять её повсеместно? Костыли, если есть, то только в мозгах и у вас в РЖД. Монополисту не нужно напрягаться и так можно лудить тарифы, а потом тупо накупать серверы, чтобы не мудрствуя лукаво горизонтально масштабироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:29 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... AspNet, WCF и т. п. 1. Уважаемый, а чего это ты начал так печься об асп.нет? :) Напоминаю, что в вебе реквесты с респонзами должны быть максимально короткие и все длительные операции нужно выносить в отдельную песочницу (отложенное выполнение). 2. WCF. Тоже самое и тут. Когда продолжительность сессии превышает продолжительность соединения с БД, это уже не в какие ворота не лезет :) Напомню, что по умолчанию время ASP.NET сессии (её тоже можно активировать в WCF при HTTP транспорте) пол-часа. Не убедил :)Да я и сам это знаю, но всё равно что-то мешает. Я этим диконтейнерам как-то не доверяю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:33 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КДа я и сам это знаю, но всё равно что-то мешает. Я этим диконтейнерам как-то не доверяю. Чекам ты можешь не доверять, но доверять DI обязан P.S. Я против тяжеловесных сторонних DI, которые нахрен не вперлись. Их приплетают лишь бы они были и всё. Маразм. Есть штатные резолверы, фабрики контроллеров, MEF, наконец. А все эти сторонние нинжектограбли с юнитями в топку. Ну только если .NET 2.0 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:41 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... А они есть, эти костыли новые подходы под новую модель, чтобы внедрять её повсеместно? Костыли, если есть, то только в мозгах и у вас в РЖД. Монополисту не нужно напрягаться и так можно лудить тарифы, а потом тупо накупать серверы, чтобы не мудрствуя лукаво горизонтально масштабироваться.С нищими заказчиками не работаем. Почём нынче мегабайт оперативы? Вроде как столько по дефолту расходуется под стек потока? Самый доходной сервер нынче имеет на борту 12ГБ ОЗУ и два 6-и ядерных проца, не меньше. Экономия на спичках, не? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:42 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
off: программисты ржд разбушеви решили завоевать мир :) 14492123 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:52 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 14:56 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaпропущено... Костыли, если есть, то только в мозгах и у вас в РЖД. Монополисту не нужно напрягаться и так можно лудить тарифы, а потом тупо накупать серверы, чтобы не мудрствуя лукаво горизонтально масштабироваться.С нищими заказчиками не работаем. Почём нынче мегабайт оперативы? Вроде как столько по дефолту расходуется под стек потока? Самый доходной сервер нынче имеет на борту 12ГБ ОЗУ и два 6-и ядерных проца, не меньше. Экономия на спичках, не? Ценник у этих спичек будет от 400К рублей в самой простой конфигурации, средненький - 600К. И это без учета стоимости операционки и прочего ПО. А вам их нужно вагонами закупать(что из себя представляют ваши сервисы я знаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 15:57 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... С нищими заказчиками не работаем. Почём нынче мегабайт оперативы? Вроде как столько по дефолту расходуется под стек потока? Самый доходной сервер нынче имеет на борту 12ГБ ОЗУ и два 6-и ядерных проца, не меньше. Экономия на спичках, не? Ценник у этих спичек будет от 400К рублей в самой простой конфигурации, средненький - 600К.Ты с какой планеты? Или в цену откат уже заложен? За 200К можно собрать нормальный сервер, обслуживающий тучу задач, в том числе и этот несчастный сервис. Мы же не Facebook-2 пишем. Вот лучше скажи, какая экономия от перехода на async в относительных показателях? Сколько было и во сколько раз упало потребление ОЗУ и ЦПУ? Давай уже нормальные цифры. SeVaчто из себя представляют ваши сервисы я знаюПоверь, там и без тебя все всё знают, а что толку? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 06:25 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Давайте лучше обсудим и поймем причины, почему WPF быстрыми шагами идет в то место, где сейчас находится SL. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 10:25 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУДавайте лучше обсудим и поймем причины, почему WPF быстрыми шагами идет в то место, где сейчас находится SL.Никуда он не идёт. Там стагнация. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 11:24 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КНикуда он не идёт. Балмер же всё сказал про HTML5. Кому нужен убогий XAML? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 11:31 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей КНикуда он не идёт. Балмер же всё сказал про HTML5. Кому нужен убогий XAML? :)Балмер - лох. Кто его слушает? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 11:34 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 11:41 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Ладно, Лёня, не сцать... http://www.zdnet.com/microsoft-delivers-new-visual-studio-2013-and-net-4-5-1-previews-7000017336/ The new previews also add support for asynchronous debugging (when using VS 2013 on Windows 8.1, not older Windows releases) for C#, VB, JavaScript and C++ developers. .Net 4.5.1 also adds performance improvements for apps running on multicore machines. And more C++11 standards support, including featues like delegating constructors, raw string literals, explicit conversion operators and variadic templates. Microsoft also has made improvements to the development experience for those using XAML to build Windows Store apps, according to officials. There are "significant" performance improvements for the XAML designers in Visual Studio and Blend, as well as general XAML editing in Visual Studio, with the inclusion of IntelliSense for data binding and resources. Microsoft also is continuing to add features meant to entice more JavaScript and HTML development for those using Visual Studio to build Windows Store. At Build this week, Microsoft has slated eight sessions focused on XAML and eight on JavaScript. Microsoft officials have said they plan to try to convey to .Net developers at the show that they still value them and are not trying to favor those building new Metro-Style/Windows Store apps in JavaScript and HTML -- which is the message that many programmers felt Microsoft sent during its last two Build conferences. Развивается и XAML и JavaScript + HTML. Всё нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 11:43 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУThe new previews also add support for asynchronous debugging ( when using VS 2013 on Windows 8.1, not older Windows releases )Теперь будем каждый год новый Виндоус ставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 12:07 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КТеперь будем каждый год новый Виндоус ставить? Без asynchronous debugging совсем жизни нету? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 12:19 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей КТеперь будем каждый год новый Виндоус ставить? Без asynchronous debugging совсем жизни нету?Ну всё равно неприятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 12:24 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
хотел посмотреть исходник асп нет треуется студия 12, а она под вистой моей что то не запустилась на ноуте замахали своими "технологиями" каждые полгода тварюги ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 12:27 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КНу всё равно неприятно. Согласен. Хочу купить автомобиль, есть возможность выбора две комплектации. У более дорогой всего лишь одна фишка, которой нет у первой. Это датчик фиксации времени года - если лето, то один раз пикает, если зима, то два раза, осень - три, весна - четыре. Нахер оно нужно - второй вопрос, но с датчиком как-то приятней. Купил более дорогую комплектацию ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 12:37 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
МСУАлексей КНу всё равно неприятно. Согласен. Хочу купить автомобиль, есть возможность выбора две комплектации. У более дорогой всего лишь одна фишка, которой нет у первой. Это датчик фиксации времени года - если лето, то один раз пикает, если зима, то два раза, осень - три, весна - четыре. Нахер оно нужно - второй вопрос, но с датчиком как-то приятней. Купил более дорогую комплектацию Не надо их оправдывать! Чё за моду взяли, выпустить тормозящую глючную муйню. А её оптимизацию и исправление ошибок считать фишкой следующей версии, требования к окружению которой более жёсткие чем у предыдущей? Уроды... Балмер доиграется сцука... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 13:08 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КБалмер доиграется сцука... Вообще, согласен. Ипут моск с технологиями, трендами, осями, кнопками пуск, то риббоны, то метро, то ржд. Сколько можно! Вон жаба столько лет тухнет в своем болоте, зато стабильность и прямолинейность. Ежегодный выпуск новых студий, фреймворков, осей не слабо таки напрягает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 13:16 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaпропущено... Ценник у этих спичек будет от 400К рублей в самой простой конфигурации, средненький - 600К.Ты с какой планеты? Или в цену откат уже заложен? За 200К можно собрать нормальный сервер, обслуживающий тучу задач, в том числе и этот несчастный сервис. Мы же не Facebook-2 пишем. Вот лучше скажи, какая экономия от перехода на async в относительных показателях? Сколько было и во сколько раз упало потребление ОЗУ и ЦПУ? Давай уже нормальные цифры. SeVaчто из себя представляют ваши сервисы я знаюПоверь, там и без тебя все всё знают, а что толку? :-) У нас меньше, чем за 400К в production нет серверов и 2по 6 ядер начинаются с этой цифры. async дает минимум на порядок лучшую мастабируемость, те вместо 20-30сервисов и 2-3х серверов достаточно одного. Если делать все правильно, то сервисы на async весьма неплохо держат нагрузку без существенной потери времени ответа. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 23:17 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaasync дает минимум на порядок лучшую мастабируемость, те вместо 20-30сервисов и 2-3х серверов достаточно одного. Если делать все правильно, то сервисы на async весьма неплохо держат нагрузку без существенной потери времени ответа.Нужны конкретные цифры - сколько было, сколько стало. Неужели не проводили исследование перед тем как перейти на async? Ну, на нет и суда нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2013, 05:53 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КSeVaasync дает минимум на порядок лучшую мастабируемость, те вместо 20-30сервисов и 2-3х серверов достаточно одного. Если делать все правильно, то сервисы на async весьма неплохо держат нагрузку без существенной потери времени ответа.Нужны конкретные цифры - сколько было, сколько стало. Неужели не проводили исследование перед тем как перейти на async? Ну, на нет и суда нет... Наверное, я совсем разучился писать по-русски. Попробую еще раз. На порядок - это в десять раз меньше копий сервисов, чем в синхронном варианте. "Без существенной потери времени" означает то, что с ростом нагрузки время ответа не будет увеличиться по экспоненте как у синхронных, а будет расти весьма незначительно. Тесты, безусловно, предварительно делались(они буквально в несколько строк) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 00:18 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Те вам вместо состава нужен будет только один вагон. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 00:20 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... Нужны конкретные цифры - сколько было, сколько стало. Неужели не проводили исследование перед тем как перейти на async? Ну, на нет и суда нет... Наверное, я совсем разучился писать по-русски. Попробую еще раз. На порядок - это в десять раз меньше копий сервисов, чем в синхронном варианте. "Без существенной потери времени" означает то, что с ростом нагрузки время ответа не будет увеличиться по экспоненте как у синхронных, а будет расти весьма незначительно. Тесты, безусловно, предварительно делались(они буквально в несколько строк)Ок ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 06:10 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
Алексей КIoC LacksА вот если, например, нам надо заинжектить что-то типа IMessageBoxService, используемый во всех моделях приложения? Инжектить его в конструкторе каждой модели - не видно особого смысла, т.к. у сервиса нет состояния, и он один абсолютно одинаковый для всех.Сегодня нет состояния, завтра может появиться. Сегодня он синглетон, завтра он ThreadStatic-синглетон, послезавтра ещё что... Но это маразм конечно, основанный на неуверенности в завтрашнем дне. зы: У нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... так нужно ли все MessagexBox-ы в сервисы засовать или достаточно статики? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 17:13 |
|
IoC-контейнер для использования с MVVM: где хранить?
|
|||
---|---|---|---|
#18+
jbond81Алексей Кпропущено... Сегодня нет состояния, завтра может появиться. Сегодня он синглетон, завтра он ThreadStatic-синглетон, послезавтра ещё что... Но это маразм конечно, основанный на неуверенности в завтрашнем дне. зы: У нас MessageBoxService всегда был обычным статическим классом, дискомфорта никакого... так нужно ли все MessagexBox-ы в сервисы засовать или достаточно статики? 1) Будете тестировать те места (unittests), где идет вызов MessageBox-ов - засовывайте, не будете - пофиг. 2) Есть в планах реализовать переключатель между стандартными контролами и супер-пупер красивыми сторонними - засовывайте, не будете - пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2013, 17:26 |
|
|
start [/forum/topic.php?all=1&fid=21&tid=1441308]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
101ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 486ms |
0 / 0 |