|
rss_habr
Возможно вам не нужен AutoMapperЧетверг, 22 Декабря 2022 г. 17:46 (ссылка)
Вы знали, что AutoMapper и MediatR создал один и тот же человек? https://habr.com/ru/post/705296/?utm_source=habrahabr&utm_medium=rss&utm_campaign=705296
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
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
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
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
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
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
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
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
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
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
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
|
LiveInternet.Ru |
Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат О проекте: помощь|контакты|разместить рекламу|версия для pda |