Pull to refresh
7
0
Рожков Константин @tados

Тимлид

Send message
Спасибо за пример!

Но мне все же кажется, что это не самое уместное использование окружающего контекста. Все-таки он больше подходит для случаев, когда есть много потребителей, которым требуется получать какое-либо разделяемое состояние.
В случае же с конфигурированием модулей нам в общем случае требуется один раз при инициализации приложения получить данные из контекста. То есть потребители в данном случае только модули. И нужен им этот контекст только один раз. Да и данные в контексте уже определены.
При такой потребности выглядит проще передать (ну или заинъектить) конфигурацию один раз. Но тут на вкус и цвет. Ваш вариант не менее рабочий и не менее удобный!

P.S. Что-то вроде окружающего контекста мы используем допустим для разделения текущей транзакции между всеми командами и запросами, когда работаем с UnitOfWork. Только в данном случае этот контекст у нас ThreadStatic.
Спасибо за ссылку! Практикуем.
Есть ряд часто используемых extension-ов. Например для локализации дефолтных сообщений об ошибках при model binding-e (LocalizeModelBindingErrorMessages()) или для биндинга модели к конкретному классу-наследнику в зависимости от какого-либо переданного значения, когда в экшене указан класс-родитель (UserHierarchyTypeModelBinding()).

Правильнее было сказать, что проблема не в том, что ConfigureServices будет завален регистрациями IOptions-ов, а в том, что они в принципе будут — неважно где, в ConfigureServices или в каком-либо extension-е. И эти регистрации все равно придется добавлять по мере необходимости передавать параметры в новые сервисы.
Выпилилась часть кода:

services.Configure<SomeOptions1>(Configuration);
services.Configure<SomeOptions2>(Configuration);
services.Configure<SomeOptions3>(Configuration);

Это про ConfigureServices из предыдущего моего коммента.
Нет, к сожалению, не рассматривали. Навскидку не понятны плюсы от такого подхода.

Можете поделиться своим опытом? Было бы интересно.
Спасибо за комментарии.

Решение с использованием доп. контейнера тоже рассматривали. По какой причине отмели — теперь уже не понимаю, если честно.
Действительно проще и не менее удобно.
Безусловно, IOptions — это удобный способ передачи любых параметров внутри фреймворка. Например, если вы хотите передать какие-то параметры в контроллер.

Но если речь идет о других сервисах, то вам придется добавлять еще один конструктор, принимающий IOptions (ну или вообще сделать только один конструктор). Таким образом вы обяжете все ваши приложения (и это далеко не только ASP.NET Core) создавать сервисы, передавая в них IOptions. При этом в библиотеках с вашими сервисами еще и появится лишняя зависимость — Microsoft.Extensions.Options. В итоге, при работе с такими сервисами вы будете навязывать использование IOptions даже там, где это не нужно.

Ну и напоследок — для каждого сервиса, требующего параметров, вам придется регистрировать соответствующие TOptions в ConfigureServices, то есть опять-таки изменять этот метод и загромождать его регистрациями теперь уже не самих сервисов, а параметров для этих сервисов. В итоге бОльшую часть вашего ConfigureServices займет код:

services.Configure(Configuration);
services.Configure(Configuration);
services.Configure(Configuration);

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

А вот на http://www.bennadel.com/blog/tags/6-javascript-dhtml-blog-entries.htm — есть очень хорошие статьи, но надо смотреть на версию ангуляра — есть устаревшие. Хотя есть и по старому ангуляру, но все еще актуальные. Так что да, благодарю за дополнение!
А зачем собирать на стороне сервера — скрипты итак подгружаются синхронно? Или вы про production?
Со сборкой да, есть проблемы. Мы выработали один механизм и он пока вроде как устраивает (ts => common js => browserify => gzip-стрим).
Вероятно, стоит все-таки посмотреть webpack, раз сообщество его так активно использует, но все руки не доходят (хотя там принцип, вроде, тот же).

Кстати, в последних RC выходили компиляторы шаблонов. Они увеличат размер JS-файлов, но ускорят первоначальный рендеринг страницы. Мы не пробовали, но звучит привлекательно.
Спасибо за ссылку, но на CodeDojo, на первый взгляд, поверхностное ознакомление — скорее обзоры, чем учебники) Но, может быть, кому-то будет полезно
Вторая ссылка)
Хотя… Он не совсем попадает в категорию «Что стоит почитать об Angular 2», он больше из «Где спросить совета»)) Как вы верно заметили
https://gitter.im/angular/angular — однозначно хороший ресурс, спасибо за напоминание! Дополним список :)
Авторам книг тоже сложно:) Eschweiler прямо пишет, что ждет финального релиза)
Текущий RC близок к финальной, насколько известно, пока что критичных изменений не предвидится
На русском, к сожалению, материалов мало. Если будет что-то интересное и актуальное, напишем.
Спасибо, хорошая у вас статья. RC6 попробовали?
Спасибо за дополнение!
По самому ангуляру в ней мало, но для старта достаточно много полезного — TypeScript, RxJS, Redux. Добавим в список :)

Information

Rating
Does not participate
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Lead
Docker
Git
MySQL
Nginx
OOP
.NET
C#
ASP.Net
.NET Core
ASP.NET Web API