Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 201 сообщений
Cообщения с меткой

csharp - Самое интересное в блогах

Следующие 30  »
rss_habr

Возможно вам не нужен AutoMapper

Четверг, 22 Декабря 2022 г. 17:46 (ссылка)

Вы знали, что AutoMapper и MediatR создал один и тот же человек?

Джимми Богард создал две крайне обсуждаемые и спорные темы в .NET разработке. Если с MediatR уже разобрались, то c AutoMapper также хотелось бы расставить все точки над "ё".

В этой статье хочу поговорить об истории возникновения библиотеки. О том какую задачу она была призвана решать изначально. И уделить внимание её недостаткам.

Читать далее

https://habr.com/ru/post/705296/?utm_source=habrahabr&utm_medium=rss&utm_campaign=705296

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Загадочный EF Core, или Как написать свое расширение

Вторник, 15 Ноября 2022 г. 12:12 (ссылка)

В EF Core много полезных фич по работе с базами данных, но что, если этих возможностей не хватает? Я был удивлен, когда узнал, что фреймворк из коробки не умеет создавать вьюшки и отслеживать изменения их исходного кода. А что, если нам нужны не только вьюшки, но еще и синонимы, гранты и DB link? При этом мы хотим видеть их как на производственной БД, так и в интеграционных тестах! В посте будет инфа про загадочный внутренний мир фреймворка: про ключевые интерфейсы, отвечающие за генерацию и применение миграций, про то, как можно подменить эти интерфейсы, и, самое главное, почему тут не поможет контейнер, создаваемый в Startup. Также поговорим про основные объекты EF Core: что такое модель и зачем нужен снепшот? Из чего состоит миграция и зачем нужно транслировать операции в SQL?

Пост будет интересен как тем разрабам, которые столкнулись с задачами создания и обновления вьюх, синонимов и других SQL-объектов (они узнают про наш пакет, позволяющий закрыть эти вопросы), так и тем, кто хочет написать свое расширение (они узнают про подмену сервисов). Если Вы хотите, чтобы мир EF Core стал для вас менее загадочным, но ничуть не менее интересным, добро пожаловать под кат.

Читать далее →

https://habr.com/ru/post/699138/?utm_source=habrahabr&utm_medium=rss&utm_campaign=699138

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Создаём асинхронный Fluent API

Пятница, 28 Октября 2022 г. 16:17 (ссылка)

Недавно я захотел сделать более удобный способ взаимодействия с кое-каким классом в одном из модулей приложения. Тогда-то я вспомнил про Fluent API, который в моём случае очень хорошо подходил.

Я нашёл кучу объяснений и примеров кода для реализации Fluent API, однако я не мог найти внятных объяснений, как реализовать в этом же Fluent API асинхронные методы, аки делает это какой-нибудь Linq. Библиотеки используют какую-то эльфийскую магию, но я нашёл драйвер MongoDB, на исходном коде которого я и разбирался, как реализовать асинхронный Fluent API.

Для тех, кто не знаком с темой Fluent API, прошу к прочтению.

Читать далее

https://habr.com/ru/post/695966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=695966

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Вероятно вам не нужен MediatR

Четверг, 09 Сентября 2022 г. 00:03 (ссылка)

MediatR - это очень популярная библиотека, которая используется для уменьшения зависимостей между объектами. Она популяризует архитектуру, основанную на крайне значимых принципах проектирования:

препятствование прямому общению между объектами для уменьшения связности;

нацеливание на Message-Oriented архитектуру;

поддержка асинхронного внутреннего обмена сообщениями;

ориентирование на переиспользование объектов.

Эти практики не пустое слово для меня. Кроме того, кажется, что такой способ создания программного обеспечения должен быть совершенно очевидным. Без сомнения, библиотека MediatR очень успешна и широко применяется разработчиками, которые разделяют эти ценности.

Существует множество статей о MediatR, но лишь их малая часть фокусируется на недостатках и помогает определить случаи, когда использование инструмента не имеет смысла. Этот пост один из таких.

В этой статье хочу поговорить о том когда и почему применение MediatR может не оправдать ожиданий. В частности, думаю, что, несмотря на добрые намерения, некоторые способы внедрения MediatR могут причинить вред в погоне за лучшими архитектурными практиками и даже привести к использованию анти-паттернов.

Также стоит отметить, что эта статья не покрывает положительные аспекты библиотеки, а фокусируется только на недостатках.

Читать далее

https://habr.com/ru/post/686278/?utm_source=habrahabr&utm_medium=rss&utm_campaign=686278

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Предварительная версия C# 11: обощённые типы для ML, обязательные члены и многое другое

Среда, 07 Сентября 2022 г. 23:53 (ссылка)



Окончательная версия выйдет уже в ноябре, а пока приглашаем под кат, где к старту нашего курса по разработке на C# рассказываем о новой предварительной версии и напоминаем, что у вас есть возможность повлиять на развитие языка.

Узнать больше

https://habr.com/ru/post/686880/?utm_source=habrahabr&utm_medium=rss&utm_campaign=686880

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Две главные ошибки при использовании MediatR

Вторник, 23 Августа 2022 г. 12:00 (ссылка)

MediatR является, безусловно, очень успешным и популярным open-source проектом, который глубоко проник в недры коммерческой разработки. Однако, сколь популярен инструмент столь много способов его применения рождается среди сообщества. В этой статье я покажу два самых главных способа использовать этот инструмент неправильно вместе со способами решения проблемы

Читать далее

https://habr.com/ru/post/683804/?utm_source=habrahabr&utm_medium=rss&utm_campaign=683804

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Fluent Generics in C#

Четверг, 07 Июля 2022 г. 16:00 (ссылка)

Дженерики - мощная фича доступная во многих статически типизированных языках программирования. С их помощью можно писать код, который постоянно работает со множеством разных типов, делая упор на их общие особенности, нежели на сами типы. Они позволяют создавать гибкие и переиспользуемые компоненты без нужды в дублировании кода и жертвы безопасности типов.

Несмотря на то, что дженерики давно в C#, мне всё же удаётся найти новые интересные способы их применения. Например, в одной из моих предыдущих статей я написал об уловке, позволяющей добиться return type inference, что может облегчить работу с контейнерными union types.

Недавно, мне также довелось работать над кодом, использующим дженерики. Тогда передо мной встала нетипичная задача: было необходимо определить сигнатуру, где все типовые параметры опциональны и могут использоваться друг с другом в произвольных комбинациях. Первая попытка подступиться к решению заключалась в манипуляциях с перегрузками типов, однако такой подход оказался довольно непрактичным и не увлекательным.

После нескольких экспериментов, я нашёл способ решить проблему элегантно, используя подход схожий с паттерном проектирования fluent interface, который был применён не к объектам, а к типам. Мой подход предлагает domain-specific language, который позволяет разработчику построить нужный тип за несколько логических шагов, последовательно его "конфигурируя".

В данной статье я расскажу, что из себя представляет этот подход и как его можно использовать для того, чтобы сложные обобщённые типы писать просто.

Читать далее

https://habr.com/ru/post/666244/?utm_source=habrahabr&utm_medium=rss&utm_campaign=666244

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Simulating Return Type Inference in C#

Вторник, 28 Июня 2022 г. 20:00 (ссылка)

Мне по-настоящему нравиться больше чего-либо в разработке ПО делать фреймворки, позволяющие другим разработчикам создавать что-то крутое. Иногда, в погоне за идеальным кодом, ко мне на ум приходят странные идеи, при реализации который C# может дойти до предела своих возможностей.

Не так давно произошёл подобный случай, когда мы вместе с коллегой искали способ избежать передачи большого количества типовых параметров в тех местах, где компилятор должен был по идее их вывести. Однако, C# так устроен, что способен выводить типы в обобщённых вызовах только из передаваемых параметров метода.

В этой статье покажу небольшой трюк, который позволит симулировать вывод типов для возвращаемых значений, и немного примеров, где это может быть полезно.

Читать далее

https://habr.com/ru/post/673448/?utm_source=habrahabr&utm_medium=rss&utm_campaign=673448

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Особенности применения LRU кэша в ASP NET Core приложениях

Пятница, 24 Июня 2022 г. 12:16 (ссылка)

В современной веб разработке сложно переоценить значение такого инструмента как кэш. Мы сохраняем результаты выполнения длительных, дорогостоящих или часто выполняемых операций в некое хранилище, обратиться к которому будет быстрее и дешевле чем к первоисточнику или дешевле чем повторять операцию. В качестве такого хранилища обычно выступает оперативная память или же оптимизированные для быстрого доступа по ключу базы данных, такие как Redis. Кэш это незаменимый инструмент для уменьшения времени отклика и повышения масштабируемости приложения. Однако он имеет свои ограничения, которые связаны в основном с размером кэша. У нас не хватит оперативной памяти и пространства в Redis чтобы полностью закешировать таблицу базы данных с миллионами записей. Для решения проблемы использования кэша при большом объеме исходных данных и ограниченных ресурсах, мы должны применить некий алгоритм, который позволит нам кешировать только самое необходимое - часто запрашиваемые элементы. В этой статье мы детально рассмотрим применение одного из таких алгоритмов кэширования - LRU в контексте ASP NET Core приложения.

Эта статья может быть полезна разработчикам, которые ищут пути повышения производительности веб приложения, а также всем разработчикам, заинтересованным в расширении своего профессионального инструментария.

Читать далее

https://habr.com/ru/post/673224/?utm_source=habrahabr&utm_medium=rss&utm_campaign=673224

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

NBomber как альтернатива JMeter для .NET разработчика

Суббота, 07 Мая 2022 г. 21:20 (ссылка)

Как и многие разработчики, впервые столкнувшиеся с нагрузочным тестированием, я начал с JMeter. Для ознакомления и простых сценариев JMeter полностью меня устраивал, но с усложнением задач и потребностью в большем контроле я начал задумываться о поиске более удобной альтернативы. Особенно хотелось чтобы инструмент легко адаптировался или уже был адаптирован под экосистему .NET.

В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".

Эта статья предназначена для .NET разработчиков, которые хотят пополнить свой инструментарий удобным инструментом для нагрузочного тестирования, а также тем кто рассматривает альтернативы JMeter для экосистемы .NET.

Читать далее

https://habr.com/ru/post/664824/?utm_source=habrahabr&utm_medium=rss&utm_campaign=664824

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] В .NET 7 Preview 3 доступны обновления ASP.NET Core

Четверг, 14 Апреля 2022 г. 23:55 (ссылка)

Среди улучшений ASP.NET Core поддержка фильтров обработчиков маршрутов Minimal API, повышение тестируемости обработчиков маршрутов Minimal API, биндинг в контроллерах MVC и контроллерах API с помощью TryParse и не только. Материалом из блога разработчиков делимся к старту курса по разработке на C#.

Читать далее

https://habr.com/ru/post/661081/?utm_source=habrahabr&utm_medium=rss&utm_campaign=661081

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Вот что такое тактический Git

Понедельник, 11 Апреля 2022 г. 23:33 (ссылка)

Автор книг Dependency Injection in .NET («Внедрение зависимостей на платформе .NET») и Code That Fits in Your Head рассказывает о своём подходе к Git и git stash, позволяющем добиться большой гибкости в работе с кодом. Опытом Марка Симана делимся к старту курса по разработке на С#.

Читать далее

https://habr.com/ru/post/660335/?utm_source=habrahabr&utm_medium=rss&utm_campaign=660335

Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<csharp - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda