Если вы готовы прочитать эту интересную, но огромную статью — прочитайте. Я всё-таки пристрастен и расскажу о том, что интересно лично мне.
А если не хотите читать и короткую…
TL&DR; Значительно (в 1.5-2 раза) улучшена производительность многих вещей, в том числе:
Структуры (Value types). Это ключевые изменения, многие оптимизации сделаны за счет Span<T> и Memory<T>.
Сравнения. Также оптимизированы сравнения внутри Dictionary .
Строки — оптимизированы не только сравнения, но и такие штуки как ToLower, Format и Parse.
Недавно я долго и мучительно переходил с .NET Core 1.x на 2.0. Возможно, расскажу об этом позже. Признаться, об этом лучше рассказывать в удобном кресле психоаналитика :)
Сегодня о более прозаичном. В нашей компании мы привыкли использовать TeamCity и NUnit. Для предыдущей версии .NET Core работал пакет “dotnet-test-nunit-teamcity”, для новой аналога не нашлось…
С удовольствием прочитал статью High-performance .NET by example: Filtering bot traffic.
Кстати, к ботам статья почти не имеет отношения, а вот к улучшению производительности — очень даже. В частности,
есть примеры использования BenchmarkDotNet, PerfView, Intel VTune Amplifier, ILSpy, WinDbg и unsafe-кода.
Знаете ли вы, какой будет уровень изоляции, когда вы откроете соединение (для определённости — SqlConnection)? Вопрос с подвохом.
Правильный ответ, как обычно — It depends.
Сегодня про опыт (мой и моих коллег) и впечатления о .NET Core.
На всякий (почти невероятный) случай кратко о том, что это такое.
Microsoft сделал фреймворк для кросcплатформенной разработки. Построил его на немного других принципах — сделал более
гранулированным (говоря попросту — нарезали большие DLL-ки помельче), кое-что ещё поменяли.
В итоге имеем возможность писать более быстрые (в том числе, потому что не тянем лишнего) и компактные кроссплатформенные приложения.
Проверяли под Windows и Linux — вполне работает. Маководов не было рядом :)
Сегодня о TransactionScope, уровне изоляции транзакций Serializable и дырявых абстракциях.
Вообще говоря, я раньше много раз сталкивался с распределёнными транзакциями.
В какой-то момент я окончательно сформировал своё мнение по этой теме. Получилось что-то вроде: “хватит, я не буду их использовать вообще, разве что в ход со стороны оппонента пойдут огнестрельное оружие и прочие нечестные аргументы”.
По этой причине моё знакомство с TransactionScope
свелось к его использованию в интеграционных тестах (без распределённой составляющей, просто для удобного отката транзакций)
и редким спорам с коллегами. Но сегодня, внезапно…