Microsoft заявила, что администраторы Windows теперь могут выбирать автоматические обновления для .NET Framework и .NET Core через Microsoft Update (MU) в системах Windows Server.
Использование DiagnosticSource в .NET Core: практика
В предыдущей статье я рассказал про механизм DiagnosticSource и на простом примере показал, как с его помощью можно перехватывать запросы в базу данных через классы SqlConnection
и SqlCommand
и измерять время их выполнения.
В настоящее время DiagnosticSource уже используется в AspNetCore, EntityFrameworkCore, HttpClient и SqlClient — каждый из них отправляет собственные события, которые могут быть перехвачены и обработаны.
В этой статье я хочу рассмотреть несколько примеров того, как можно на практике использовать DiagnosticSource в приложениях ASP.NET Core.
- CorrelationID и пробрасывание заголовков между сервисами
- Сбор метрик и трассировок
- Логирование
Кроме того, в этой статье я решил собрать список событий, которые доступны для обработки и могут быть использованы в ваших приложениях, а также рассказать о некоторых подводных камнях, с которыми вы можете столкнуться, если решите использовать механизм DiagnosticSource в своём проекте.
Введение в .NET Core

На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
Введение в ASP.NET 5

Первый предварительный релиз ASP.NET 1.0 вышел практически 15 лет назад и с тех пор миллионы разработчиков использовали его чтобы создавать и запускать различные приложения., а мы на протяжении этих лет добавляли в совокупности колоссальное количество кода и возможностей.
Я сегодня сильно взволнован из-за того что пишу новость о новом релизе ASP.NET, над которым работает наша команда, и который называется ASP.NET 5. Этот релиз – одно из самых значимых обновлений архитектуры, которое мы делали когда-либо. В рамках этого релиза мы сделали ASP.NET более компактным, модульным и кросс-платформенным, а также ориентированным на облачные хостинги. ASP.NET 5 Preview доступна для скачивания в последнем Visual Studio 2015 CTP, которая стала доступна совершенно недавно.
ASP.NET 5 мертв — представляем ASP.NET Core 1.0 и .NET Core 1.0
Существует только две сложные темы в Науке о Компьютерах: cache invalidation и выбор названий. – Фил Карлтон.Очень просто откинуться на спинку кресла и сказать: “это очень просто, они должны были назвать это Foo”, но зачастую в именование вещей вовлечено множество игроков. ASP.NET – это хороший бренд, который с нами уже около 15 лет. ASP.NET 4.6 – поддерживаемый продукт выпущенный недавно, который доступен для вас здесь http://get.asp.net.

Тем не менее, назвать написанный с чистого листа ASP.NET-фреймворк как “ASP.NET 5” было плохой идеей и вот почему: 5 больше, чем 4.6, что выглядит как-будто ASP.NET 5 — большая, лучшая замена ASP.NET 4.6. А это не совсем так.
Так что мы изменили имя и выбрали более подходящий номер версии.
Полное руководство по использованию ASP.NET Core 1.0 (aka ASP.NET 5) Tag Helpers
Экспериментальная функция отладки .NET Core в Visual Studio Code
- Поддерживается только новая ознакомительная версия набора инструментов .NET Core CLI; поддержка не распространяется на текущие функции DNX (подробнее об изменениях — в этой публикации блога разработчиков ASP.NET с вопросами и ответами).
- Функция IntelliSense VS Code пока не поддерживает инструменты .NET CLI. Поэтому при отладке проектов CLI IntelliSense будет недоступен.
Этот первый выпуск поддерживает точки останова, пошаговое выполнение, отслеживание переменных и стеки вызовов.

Однако, .NET Core и функции отладки находятся на ранних этапах разработки, поэтому в VS Code отсутствует ряд возможностей, привычных для пользователей IDE Visual Studio. Вот некоторые особенности редактора:
Приглашаем на конференцию DotNext

Какими изначально были цели создания платформы .NET? Достигнуты ли они?
Дмитрий Сошников: Появление .NET — это реакция на повышение сложности программных систем. Когда стало слишком трудно создавать серьезные приложения на C++, особенно с учетом существования различных вычислительных платформ, появилась цель радикально упростить процесс создания программного обеспечения, в том числе многоплатформенного. И в конце концов исследователи научились изолировать аппаратные сложности (а заодно и ряд трудоемких моментов, таких, как распределение памяти, многопоточность и т.д.) на уровне абстрактной виртуальной машины, а прикладному программисту давать возможность создавать код для этой машины. Так появились Java и .NET. Но основной целью языка Java была возможность запускать один и тот же байт-код на всех устройствах, в то время как платформа .NET гордилась многообразием поддерживаемых языков программирования.
Надо сказать, что основные цели по сути были достигнуты уже по факту создания платформы. Теперь же мы продвинулись гораздо дальше. На основе .NET можно писать приложения под все основные мобильные платформы и под микроконтроллеры. В арсенале .NET-программиста — целый спектр языков от C# и F# до Python и Objective C. Код на базе .NET используется как на устройствах, так и в облаке. Мечта программиста сбылаcь — зная всего лишь один стек технологий, он может быть продуктивным, разрабатывая практически любой программный код.
.NET-разработка: девять вопросов взрослым
С новыми возможностями нас встречают новые вызовы:
- Как будет работать один и тот же код под .NET Core и Mono, на Windows и Linux, в docker-контейнере?
- Стоит ли переходить на .NET Core уже сейчас и как получить максимум от новой платформы?
- Какие перспективы у Mono и Xamarin?
- Какие изменения произошли «под капотом» .NET с переходом на Roslyn и .NET Core?
Всего через три недели на конференции DotNext в Питере 20 спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода.

А пока мы попросили четырех из них поделиться своим опытом и мнениями о грядущих изменениях в мире .NET. На наши вопросы ответили:
- Ведущий мировой эксперт по производительности .NET-платформы, восьмикратный Microsoft MVP, автор прекрасной книги по производительности .NET «Pro .NET Performance» Саша Голдштейн;
- Главный разработчик протокола реактивного многопроцессного взаимодействия в Rider Дмитрий Иванов из JetBrains;
- Ещё один разработчик Rider’a из компании JetBrains, .NET MVP, к.ф.-м.н., серебряный призёр ACM ICPC, постдок в Вейцмановском институте науки Андрей Акиньшин;
- CTO Promarket и эксперт в области Mono и Linux Никита Цуканов.
ASP.NET Core сегодня: за и против
- Дино Эспозито (Dino Esposito) – писатель, консультант, тренер и технический евангелист, признанный эксперт и популяризатор концепций DDD и CQRS
- Морис де Бейер (Maurice de Beijer) – независимый консультант, MVP и автор онлайн-курса The React Tutorial
- Андрей Терехов – full-stack разработчик EPAM, специалист по серверному пререндерингу.

Все трое выступят через неделю в Питере на конференции DotNext с докладами про ASP.NET Core.
Дино и Морис отвечали на английском языке, ниже мы публикуем перевод их ответов.
Изменения Project.json
MSBuild
Когда команда ASP.NET начала работу над ASP.NET 5 (ASP.NET Core уже), то одной из главных целей была возможность легкого создания и разработки приложений на Windows, Mac и Linux. Это повлекло за собой создание систем проектов .xproj/project.json. Ключевыми фичами были:
- Отсутствие перечисления файлов в проекте
- Легкость редактирования файла проекта без IDE
- Создание Nuget –пакета, используя только проект
- Кросс-компиляция для разных версий фреймворка
- Легкость переключения ссылок/зависимостей
Продолжая разработку, мы расширяли роль самого .NET Core:
- .NET Core стал платформой для Universal Windows Applications (UWP)
- .NET Core стал кросс-платформенным набором инструментов для создания как консольных приложений, так и библиотек
- Microsoft приобрела Xamarin, чтобы .NET разработчики могли создавать iOS и Android приложения (прим. переводчика: речь идет о бесплатности Xamarin tools)
Как это влияет на project.json? Одним из ключевых принципов .NET как платформы — возможность совместного использования кода нашими разработчиками во всех моделях приложений .NET (WinForms, WPF, UWP, ASP.NET, IOS, Android и т.д.). Это создает ряд проблем: хоть project.json отлично подходит для создания веб-приложений и библиотек классов, но в то же время не позволяет унификацию с другими моделями приложений.
DotNext 2016: Между настоящим и будущим
Петербургский «Летний фестиваль разработчиков», состоящий из трёх конференций подряд, начался с DotNext 2016. Как там была разрешена возникшая дилемма, и как вообще прошёл DotNext? По снимку команды организаторов видно, что при всей хардкорности мероприятие не обошлось без летнего настроения, а все остальные подробности — под катом.

Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
Там мы получили возможность использования классов .Net в неуправляемом приложении. Теперь воспользуемся «Создание компонент с использованием технологии Native API».
Итак, начнем.
Переходим на WebMarkupMin 2.X

Весной прошлого года, когда ASP.NET 5 был еще в стадии Beta 3, я начал получать от пользователей письма с просьбами сделать WebMarkupMin совместимым с DNX 4.5.1 и DNX Core 5.0. Основной проблемой было то, что новый .NET не поддерживал настройку с помощью конфигурационных файлов
App.config
и Web.config
. Переписывание WebMarkupMin.Core, WebMarkupMin.MsAjax и WebMarkupMin.Yui не должно было представлять особой сложности, потому что нужно было просто удалить весь код, использующий библиотеку System.Configuration
. Серьезные проблемы должны были возникнуть при переписывании ASP.NET-расширений, потому что для них нужно было разработать совершенно новую модель конфигурации, а это, в свою очередь, требовало очень серьезных изменений в архитектуре. Эти изменения затрагивали не только код, но и структуру решения и NuGet-пакеты, поэтому я решил начать с чистого листа и сделал репозиторий на GitHub. На тот момент, до релиза стабильной версии нового ASP.NET оставалось как минимум полгода, поэтому нужно было одновременно поддерживать 2 ветви WebMarkupMin: стабильную 1.X на CodePlex и предварительную 2.X на GitHub.Как известно всем, выход стабильных версий .NET и ASP.NET Core 1.0 задержался еще на несколько месяцев и состоялся только в конце июня этого года. Вслед за релизом этих фреймворков, состоялся и релиз WebMarkupMin 2.0. В этой статье я расскажу вам о том, как обновить существующие приложения под WebMarkupMin 2.X, а также как добавить его в веб-приложения, написанные на ASP.NET Core.
Критические изменения и нововведения
Для того чтобы установить пакеты WebMarkupMin 2.X вам необходимо обновить NuGet Package Manager до версии 2.8.6 или выше.
Основным критическим изменением версии 2.X стал отказ от использования файлов
Web.config
и App.config
для настройки WebMarkupMin. Теперь при настройке вместо декларативного подхода (использование конфигурационных файлов) используется императивный подход (использование программного кода).Выбираем длинный путь (или прощай MAX_PATH)

Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.
В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).
Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II
» Разработка → Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
» Разработка → Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
С того времени добавил поддержку методов с параметрами по умолчанию, вызов методов расширений, вывод типов для дженерик методов, поддержка объектов реализующих IDynamicMetaObjectProvider (ExpandoObject,DynamicObject), добавление синонимов к членам типа и асинхронное программирование на 1С!
Асинхронное программирование в 1С через .Net Native ВК
В .Net сейчас во многих классах есть асинхронные методы. В 1С их можно применять например так
Стр=ъ(Клиент.GetStringAsync(uriSources)).Result;
И напомню про синонимы из предыдущей статьи/ Так добавив синоним
Врап.ДобавитьСиноним(HTTPClient.ПолучитьСсылку(),"ПолучитьСтроку","GetStringAsync");
Врап.ДобавитьСиноним(Task.ПолучитьСсылку(),"Результат","Result");
Я могу использовать все на русском
Стр=ъ(Клиент.ПолучитьСтроку(адрес)).Результат;
Но можно использовать асинхронные методы так.
Клиент = ъ(Врап.Новый(HttpClient.ПолучитьСсылку(),handler.ПолучитьСсылку()));
лист=ъНовый("System.Collections.Generic.List`1[System.Threading.Tasks.Task]");
Для каждого стр из ПолучитьСписокURL() Цикл
Задача=ъ(Клиент.GetStringAsync(стр));
лист.Add(задача.ПолучитьСсылку());
КонецЦикла;
Task=ъТип("System.Threading.Tasks.Task");
Пока лист.Count>0 Цикл
массив=ъ(лист.ToArray());
индекс = Task.WaitAny(массив.ПолучитьСсылку());
Сообщить(индекс);
результат = ъ(лист.get_Item(индекс)).Result;
Сообщить(СтрДлина(результат));
лист.RemoveAt(индекс);
КонецЦикла;
Это конечно не совсем асинхронное программирование, но все же лучше чем отдельно для каждого запроса вызывать синхронный метод.
.Net Core, 1C, динамическая компиляция, Scripting API
» Разработка → Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
» Разработка → Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
» Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II
» Асинхронное программирование в 1С через .Net Native ВК
1С, Linux, Excel, Word, OpenXML,ADO и Net Core
На данный момент в .Net Core 2 варианта динамической компиляции
1. Это аналог CodeDom Microsoft.CodeAnalysis.CSharp.CSharpCompilation
2. Roslyn Scripting Api. Примеры здесь
1С,.Net Core. Динамическая компиляция класса обертки для получения событий .Net объекта в 1С
По сути это продолжение .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, но для кроссплатформенного .Net Core. Но в той разработке я использовал CodeDom. В .Net Core удобнее использовать Roslyn Scripting API.
В свое время делал вручную обертку для WhatsApp, а там более 30 событий. При этом весь процесс можно автоматизировать с помощью кодогенерации и в конечном итоге можно этот код динамически скомпилировать.
В «Создание компонент с использованием технологии Native API» есть метод для вызова внешнего события в 1С ExternalEvent. Синтаксис:
bool ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData)
Параметры:
• Тип: WCHAR_T*. Строка с наименованием источника события.
• Тип: WCHAR_T*. Строка с наименованием события.
• Тип: WCHAR_T*. Строка c параметрами события.
Но в качестве wsData будем передавать ссылку на объект созданный из параметров события.
Итак начнем.
.Net Core, WCF и ODATA клиенты
В VS 2015 Update 3 для приложения под .Net Core нет привычного нам элемента меню «Добавить Ссылку на Службу». Вместо этого есть «Add Connected Services». Про то, как его установить, можно посмотреть здесь WCF Connected Service for .NET Core 1.0 and ASP.NET Core 1.0 is now available. Для подопытного сервиса был выбран Web сервис ЦБ Веб-сервис для получения ежедневных данных (курсы валют, учетные цены драг. металлов...). В общем подключился по методичке выше. Получил описание классов. Но при этом есть отличие от большого брата.