Алексей, думаю, часть своих минусов вы получаете из-за пассивно-агрессивного стиля общения, который часто очень разительно отличается от стиля вопросов, которые вам задают к постам, и выглядит чрезвычайно неприятно.
Не было с ними знакомства. Trace, насколько я знаю, даже по сигнатуре методов «логирования» сильно проигрывает NLog. Мы смогли бы с его помощью гибко настраивать, что логировать, данные, которые войдут в каждую запись, настраивать, в какие получатели будут отправлены записи? Смогли бы из коробки логировать в БД, на logentries? Хотя бы смогли бы писать логи в файлы, ротируя их каждые сутки?
Про штатный Health Monitoring вообще ничего не знаю, расскажите, пожалуйста.
Вы знаете, я не думаю, что концептуально наше решение отличается от предложенного вами. Пользователь в HttpContext.Current.Items так же, как и из CurrentIdentity, переезжает из потока в поток.
Да, я в этом не уверен, и второе ваше замечание тоже верно, обдумаю, как мы можем это исправить.
Проблем не возникало, видимо, потому, что а) синхронно асинхронные методы мы вызываем мало; б) информация о пользователе захватывается в его начале и передается явно через параметры.
Видимо, пока ни разу не наткнулись на рекомендацию использовать его, когда искали, как решить ту или иную задачу. Для чего его используете вы? Он может решить что-то из того, что я описал?
Работал с солюшеном, о котором говорит автор (300 проектов). Пробовал его собирать целиком в оперативной памяти (на машине 16 Гб, делал рамдиск, на который влезал собранный солюшен — около 5-6 Гб). Значительного прироста не заметил, что показалось странным. Возможно, компилятор генерирует временные файлы, которые записываются и читаются с жесткого диска (не уверен). Также пробовал его собирать и на SSD, тоже значительного прироста не заметил. Но если бывшим коллегам поставят SSD, буду рад :)
P.S. С автором, похоже, немного разминулись по времени :)
Эх, только какой это старичок уже. Я не следил пару лет за тем, что делается в этой области, наверное, уже появились другие более мощные и бесплатные библиотеки. Однако периодически народ пишет на почту, что-то спрашивает, я даже что-то вспоминаю :)
Наверное, на разных машинах папка расширения может называться по-разному, можно запускать поиск в папке Extensions чего-нибудь, скажем, с именем Specflow.*
Собственно, я так и нашел.
Можно отредактировать item template для feature в папке в расширением SpecFlow.
У меня он расположен по пути c:\Users\{User}\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\qzghrp4n.hc5\ItemTemplates\SpecFlowFeature_CSharp.zip\SpecFlowFeature1.feature
Правда, наверное, при обновлении расширения все это может потеряться.
http://loginzlib2vrak5zzpcocc3ouizykn6k5qecgj2tzlnab5wcbqhembyd.onion/
Библиотека чрезвычайно полезная, огромное число книг.
You give an example of how to get a Reader<Service>:
public static Reader<TService> GetService<TService>() =>
Reader<TService>.Read<IServiceProvider>(serviceProvider
=> (TService)serviceProvider
.GetService(typeof(TService)));
It looks like the Service Locator pattern, that is considered an anti-pattern as it hides actual dependencies used by the code.
Про штатный Health Monitoring вообще ничего не знаю, расскажите, пожалуйста.
Проблем не возникало, видимо, потому, что а) синхронно асинхронные методы мы вызываем мало; б) информация о пользователе захватывается в его начале и передается явно через параметры.
Но спасибо за его упоминание, попробую понять, чем он может быть нам полезен.
Видимо, пока ни разу не наткнулись на рекомендацию использовать его, когда искали, как решить ту или иную задачу. Для чего его используете вы? Он может решить что-то из того, что я описал?
.Result
мы не обращаемся, используем решение из http://stackoverflow.com/questions/5095183/how-would-i-run-an-async-taskt-method-synchronouslyРасскажете, каких ситуаций?
P.S. С автором, похоже, немного разминулись по времени :)
Собственно, я так и нашел.
У меня он расположен по пути c:\Users\{User}\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\qzghrp4n.hc5\ItemTemplates\SpecFlowFeature_CSharp.zip\SpecFlowFeature1.feature
Правда, наверное, при обновлении расширения все это может потеряться.
f = length . filter (>3) . map (+1) . skip 3
считается логичной и читабельной?
Я это прочел как «взять некую длину (список чего-то?), отфильтровать, увеличить и пропустить», а не так, как вы это описали.