SqlBulkCopy
можно использовать в трех вариантах: вставка данных, представленных в виде DataTable
, массива DataRow
или IDataReader
экземпляра. В этой статье я продемонстрирую две реализации IDataReader
интерфейса, которые используются в сочетании с SqlBulkCopy
высокопроизводительной вставкой в базу данных. Два других варианта похожи друг на друга и могут использоваться для относительно небольших объемов данных, поскольку они требуют, чтобы все записи были предварительно загружены в память перед их передачей SqlBulkCopy
. Напротив, этот IDataReader
подход более гибкий и позволяет работать с неограниченным количеством записей в «ленивом» режиме, что означает, что данные могут передаваться SqlBulkCopy
на лету так быстро, как сервер может их использовать. Это аналогично подходу IList<T>
vs.IEnumerable<T>
.
.NET *
Хаб со знаниями про NET Framework
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Я не могу спроектировать архитектуру своего интернет-магазина или как я пишу «под клиента»
В этой статье я расскажу про свою проблему с доработкой сайта под клиентов...
Разработка кроссплатформенного приложения на Avalonia для Raspberry Pi с использованием Github Action
Вступление
В связи с желанием апгрейдить свое рабочее место, появилась потребность в мониторе, на котором будут отображаться информативные виджеты, например: погода, календарь, показатели датчиков в доме -, и, так как готовые решения меня не устраивают, я решил, что сделаю свой аналог домашнего «дашбоарда».
Примерный план был такой: приобрести Raspberry PI 3 и экран, подключить его к интернету, написать приложение, повесить на стенку и пользоваться с удовольствием.
В процессе проектирования, я сразу же увидел проблему в процессе разработки – как разрабатывать на домашнем компьютере и автоматически доставлять и запускать написанное приложение на Raspberry Pi, чтобы это не было долгим и мучительным ручным процессом.
Для решения проблемы, я пообщался в чатах, почитал в интернете несколько советов и выбрал для себя оптимальный способ развёртывания десктопного кроссплатформенного приложения.
Статья будет посвящена полному циклу разработки кроссплатформенного десктопного приложения, преимущественно для использования на одноплатном компьютере Raspberry PI 3, а также, речь пойдет о его автоматическом развертывании, с описанием проблем и их решений, которые возникли в процессе разработки. В статье упор сделан на решение проблемы с доставкой, сборкой и запуском приложения на Raspberry Pi.
Выбор технологий для разработки и настройка Raspberry Pi
Для решения поставленных задач, нам потребуется ряд технологий, а именно:
- Кроссплатформенный фреймворк для работы логики и GUI приложения;
- ПО для автоматического развертывания приложения;
CI/CD для Dynamics CRM на базе Azure DevOps. Часть 2. Continuous Deployment
В прошлой статье я рассказал как собрать CI часть пайплайна непрерывной поставки CI/CD на базе Azure DevOps Pipelines для Microsoft Dynamics CRM. Сегодня же поговорим о CD (Continuous Deployment) части.
Нагрузочное тестирование сайта на Microsoft Azure
В последние лет пять про облачные технологии слышно все чаще. Microsoft и Amazon отчитываются о высоком росте доли облачных сервисов в отчетах о прибыли. Российский Яндекс относительно давно продвигает свое Облако. К этому подключился и Сбер со своим облачным продуктом. Часто можно услышать и о других, менее крупных игроках.
Смотря на все это многообразие я подумал, что происходит какая-то вечеринка, а меня не пригласили. Ну что же, давайте присоединимся к этой вечеринке сами разместив сайт на Azure и сравнив тарифы службы приложений и службы БД.
Цель этой статьи можно выразить в 2х пунктах:
1. С одной стороны мы познакомимся с тарифными планами службы веб-приложений и службы хостинга баз данных
2. С другой стороны мы проведем нагрузочное тестирование тремя стратегиями тестирования в разрезе разных тарифных планов.
Реализуем рефлексию при помощи source generators
В одной из своих статей я уже описывал как можно реализовать рефлексию при помощи source generator-ов. Тогда цель была продемонстрировать что такое эти ваши генераторы, а сама рефлексия была лишь примером. Сейчас же, я предлагаю сконцентрироваться на рефлексии, и узнать что из этого получиться.
48 полноценных бесплатных книг для программистов (happy developer's day)
Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.
Дисклеймер. Все эти книги взяты с одного ресурса, который существует за счет донейшенов. Получить книги можно без осуществления донейшенов, ресурс полностью бесплатный, пожертвования опциональны. Все книги написаны на основе контента со StackOverflow и являются код-ориентированными. Книги со временем обновляются. По ссылкам -- книги, актуальные на 15.09.2021.
Делаем быстрый поиск по неточному совпадению среди 100 миллионов товаров
Это четвертая статья с этой картинкой для привлечения внимания. Она каким-то удивительным образом опять подошла по смыслу.
Мы делаем проект по управлению большими каталогами товаров, и нам потребовалось быстро искать товары по неточному совпадению.
Забегая вперед, скажу, что от идеи до рабочего решения на продакшене прошло пять часов.
Исходная ситуация такова: таблица в MS SQL базе, 50 миллионов записей, записи добавляются постоянно, удаляются или обновляются крайне редко. Средняя длина названия товара составляет 64 символа. Поиск по неточному совпадению работает, для этого используются триграммы и полнотекстовый индекс по столбцу с триграммами. Ранжирование результатов осуществляется при помощи функции CONTAINSTABLE. Результаты получаются релевантные, но поиск работает откровенно медленно, 2-5 секунд на запрос, в зависимости от длины запроса. Мы хотим ускорить его раз в 20, а лучше в 100 подручными средствами.
Асинхронные потоки от Стивена Клири
Про Стивена Клири можно сказать «он всерьез занялся многопоточным программированием еще до того, как это стало мейнстримом». Клири стал палочкой-выручалочкой для тысяч разработчиков, терпеливо объясняя на StackOverflow, почему программы не работают и как их исправить.
Еще в 2019-м на нашей конференции DotNext Стивен рассказал об асинхронных потоках: чем они могут быть полезны, чем отличаются от существующих библиотек вроде System.Reactive и RxJS, а также как задействовать их в проектах.
Спустя пару лет этот доклад остается полезным — поэтому теперь, в преддверии нового DotNext, мы решили сделать для Хабра текстовый перевод доклада Стивена. Видео тоже есть под катом. Далее повествование будет от лица спикера.
Самодельный стратостат. Часть 2
Long, long time ago… Нет, не так. 4 месяца назад я рассказал вам, как из клея и резиновых сапог создать с нуля свой стратостат с телеметрическим модулем и видеокамерой. Я так же описал наш опыт запуска и поиска этого метеозонда, обозначив несколько возникших проблем. Что ж. Мы анализировали, анализировали и доанализировались до четвертого шара. И сейчас я расскажу вам, что произошло за это время, почему он четвертый, и где пропавшие два. Эта часть будет менее технической, т.к. изменений конструкции почти не было, но те что были — имеют значение. Если вы вне контекста, то эту часть советую читать только после прочтения первой (хотя бы технических разделов). Ссылка на первую часть ниже. Будет много фото, видео и графиков. Поехали?
Топ-10 докладов DotNext 2021 Piter
Весной мы провели DotNext 2021 Piter. А теперь, пока готовим следующий DotNext (пройдёт 21-22 октября), выложили на YouTube видеозаписи весеннего.
И традиционно представляем Хабру лучшую десятку докладов (составленную на основе зрительского фидбека). Для большей интриги доклады расположены в тексте от десятого места к первому, чтобы можно было до последнего момента гадать, кто лидирует.
Если вы .NET-разработчик, то почти наверняка под катом есть что-то, полезное для вас: там и перформанс, и глубокая отладка, и БД с разных ракурсов, и даже детективное расследование.
Почему я ненавижу JS или как я в 15 лет переписывал свой интернет-магазин
Я написал интернет-магазин для магазинов мяса на Blazor Server. Попробовал переписать его на React + Node.
Сейчас расскажу, почему после этого я так возненавидел JS...
Blazor WebAssembly: динамическое создание компонентов по JSON описанию
В заметке описан способ динамического добавления на страницу компонентов по JSON-описанию с помощью DynamicComponent из ASP.NET Core 6.0 (в настоящее время в статусе Preview).
Динамическое создание компонентов пригодится например при реализации конструктора форм:
• Форма описывается JSON-ом;
• Элементы (или контролы) формы не ограничены предустановленным набором. Контролы можно добавлять, в том числе подгружать из других dll-библиотек.
Повысьте свою продуктивность с помощью расширений Productivity Power Tools в Visual Studio 2022
Visual Studio 2022 уже здесь, и ее можно настраивать еще удобнее, чем когда-либо. Однако этот опыт может быть неполным без необходимых расширений, которые вы знаете и любите. Поскольку существующие расширения продолжают переноситься, мы рады сообщить, что один из самых популярных и ожидаемых наборов расширений теперь доступен для загрузки: инструменты повышения производительности для Visual Studio 2022!
Пакет Productivity Power Tools (PPT), разработанный командой VS, представляет собой набор расширений, которые повышают вашу общую продуктивность и эффективность в Visual Studio. Этот пакет расширений бустит вашу продуктивность с самого начала, позволяя установить весь пакет сразу, а не по отдельности. Не уверены, подходят ли вам расширения PPT? Давайте посмотрим на некоторые расширения пакета, которые могут сэкономить ваше время и снизить утомление при работе в VS.
Представляем .NET MAUI Community Toolkit (Preview)
Команда Community Toolkit рада объявить о первых предварительных выпусках двух новых наборов инструментов .NET Multi-platform App UI (.NET MAUI): CommunityToolkit.Maui и CommunityToolkit.Maui.Markup.
Как было объявлено в прошлом месяце, эти библиотеки являются развитием Xamarin Community Toolkits. Они содержат .NET MAUI Extensions, Advanced UI/UX Controls, Effects и Behaviors, чтобы облегчить вам жизнь в качестве .NET MAUI-разработчика.
Функции, которые вы добавляете в .NET MAUI Toolkit, однажды могут быть включены в официальную библиотеку .NET MAUI. Мы используем наборы инструментов сообщества, чтобы представить новые функции, и тесно сотрудничаем с командой разработчиков .NET MAUI, чтобы выбирать функции для добавления.
Ускоряем запуск приложений с .NET 6, .NET на холодильнике и многое другое
Данная статья содержит небольшое введение в JIT-компиляцию и .NET Core (отныне .NET 5, .NET 6 и так далее), а также несколько практических примеров ускорения запуска приложений на .NET. Данные советы могут быть полезны как для приложений, запускаемых на больших многоядерных x64 серверах, так и для приложений, запускаемых на ARM чипах с малым числом ядер. Например, подобные оптимизации используются в операционной системе Tizen, об этом далее.
Печать при помощи API nanoCAD
Печать чертежей – ответственный и трудоемкий процесс. Чертеж, напечатанный в неверном масштабе или с неверной толщиной линий, может стать причиной производственных ошибок, так как будет неправильно прочитан. На настройку параметров печати и саму печать порой уходит немалая часть рабочего времени, поэтому многие проектировщики, знакомые с программированием, обращаются к программному интерфейсу САПР и получают хорошую возможность уменьшить влияние «человеческого фактора», а также сократить время, которое приходится тратить на работу с чертежами.
Этой статьей мы запускаем цикл материалов, посвященный API печати nanoCAD, в котором предложим ответы на традиционные вопросы начинающих САПР-программистов. Начнем с того, что разберемся, как программно отправить чертеж на печать.
Как Visual Studio 2022 съела 100 Гб памяти и при чём здесь XML бомбы?
В апреле 2021 года Microsoft анонсировала новую версию своей IDE – Visual Studio 2022, попутно объявив, что она будет 64-битной. Сколько мы этого ждали — больше никаких ограничений по памяти в 4 Гб! Однако, как оказалось, есть нюансы...
Техники обработки отказов сервиса в микросервисных архитектурах, или Альтернативы Circuit Breaker
Эта статья может быть полезна для тех, кто, как и мы, пострадал от нестабильной работы внешних API. Я расскажу, какие бывают стратегии обработки отказов и какой путь борьбы с глючным почтовым сервисом избрали мы.
Автоматическое управление номером версии c помощью Azure DevOps
В этой статье я расскажу, как мы организовали последовательное автоматическое увеличение номера версии приложения при выполнении коммита в ветку main с помощью Azure DevOps Pipeline.
Мы делаем этого для того, чтобы все пользователи и разработчики могли видеть, какая именно версия продукта развернута в той или иной среде.
Вклад авторов
-
sidristij 2942.4 -
XaocCPS 1863.6 -
olegchir 1250.6 -
sahsAGU 1249.8 -
mezastel 1199.6 -
SergeyT 1140.6 -
phillennium 1010.6 -
marshinov 886.2 -
foto_shooter 827.0 -
chernikov 822.0