Dependency_Injection_Principles,_Practices,_and_Patterns_by_Mark.pdf
14.2 MB
Dependency Injection Principles, Practices, and Patterns (2019)
Автор(ы): Mark Seemann, Steven van Deursen
Книга научит вас использовать внедрение зависимостей (DI, Dependency Injection) для уменьшения жестких зависимостей между компонентами приложения.
Вы изучите основы DI, ознакомитесь с типами приложений, которые от нее выигрывают. Вы поработаете с конкретными сценариями, используя C# и .NET для реализации DI в разных проектах.
Преимещество книги в том, что она учит вас DI с нуля, показывая соответствующие примеры, шаблоны и анти-шаблоны для создания слабосвязанных и грамотно структурированных приложений. Хорошо аннотированный код и диаграммы используют примеры на C# для иллюстрации принципов, которые безупречно работают с современными объектно-ориентированными языками и библиотеками DI.
Автор(ы): Mark Seemann, Steven van Deursen
Книга научит вас использовать внедрение зависимостей (DI, Dependency Injection) для уменьшения жестких зависимостей между компонентами приложения.
Вы изучите основы DI, ознакомитесь с типами приложений, которые от нее выигрывают. Вы поработаете с конкретными сценариями, используя C# и .NET для реализации DI в разных проектах.
Преимещество книги в том, что она учит вас DI с нуля, показывая соответствующие примеры, шаблоны и анти-шаблоны для создания слабосвязанных и грамотно структурированных приложений. Хорошо аннотированный код и диаграммы используют примеры на C# для иллюстрации принципов, которые безупречно работают с современными объектно-ориентированными языками и библиотеками DI.
Статья, в которой объясняется, почему вы должны описывать программное обеспечение по вариантам использования, а не по уровням и структурам, которые оно использует. Погружаемся в принципы чистой архитектуры .Net: https://proglib.io/w/1ff937f9
DEV Community
Clean Architecture Essentials
We usually see Software Architecture descriptions like "The software architecture is an ASP.NET Web API with Entity Framework Core and SQL Server". Let's see how to describe software by the use cases instead of layers and the frameworks it uses and distill…
Актуальный вопрос поднял Николай Балакин на .NET Fest 2019. Действительно, что делать, если всё, что можно уже закэшировано, а код всё ещё тормозит? В своём докладе он приводит примеры работы некоторых низкоуровневых механизмов .NET, а также рассказывает, как с их помощью можно выиграть драгоценные секунды, когда счёт идет на отдельные такты процессора.
https://proglib.io/w/a30b46c9
https://proglib.io/w/a30b46c9
YouTube
Микрооптимизации в мире .NET. Николай Балакин .NET Fest 2019
The talk from .NET Fest conference in Kyiv, Ukraine.
Presentation: http://bit.ly/32ZqFCz
Fb: https://www.facebook.com/dotNETFest/
Website: http://dotnetfest.com/
Что делать, если все, что можно уже закэшировано, а код всё ещё тормозит? В этом докладе мы…
Presentation: http://bit.ly/32ZqFCz
Fb: https://www.facebook.com/dotNETFest/
Website: http://dotnetfest.com/
Что делать, если все, что можно уже закэшировано, а код всё ещё тормозит? В этом докладе мы…
Привет, Чувак на связи.
Веду канал с вакансиями в IT без херни.
✅ Лично отбираю вакансии - никакой херни.
✅ Вакансии краткие и по делу - никаких полотен в два экрана.
✅ Только две вакансии в день - никакого спама, я уважаю своих читателей.
✅ Все вакансии имеют стандартизированный вид - никакого хаоса.
✅ Заставляю эйчаров переписывать вакансии по 10 раз - никаких дружных коллективов.
Веду канал с вакансиями в IT без херни.
✅ Лично отбираю вакансии - никакой херни.
✅ Вакансии краткие и по делу - никаких полотен в два экрана.
✅ Только две вакансии в день - никакого спама, я уважаю своих читателей.
✅ Все вакансии имеют стандартизированный вид - никакого хаоса.
✅ Заставляю эйчаров переписывать вакансии по 10 раз - никаких дружных коллективов.
Если класс объявлен с модификатором sealed (запечатанный), то от этого класса нельзя наследовать и создавать производные классы.
В следующем примере класс
Модификатор
В следующем примере класс
B
наследует от класса A
, но никакие классы не могут наследовать от класса B
:class A {}
sealed class B : A {}
Модификатор
sealed
можно использовать для метода или свойства, которое переопределяет виртуальный метод или свойство в базовом классе. Это позволяет классам наследовать от вашего класса, запрещая им при этом переопределять определённые виртуальные методы или свойства.❤1
Практический мануал по созданию базового приложения с распределенной архитектурой для обмена сообщениями в реальном времени. В качестве инструментария используется многоуровневый шаблон запуска, Abp Framework для инфраструктуры, SignalR для обмена данными между сервером и клиентом в реальном времени, и RabbitMQ в качестве шины распределенных событий.
https://proglib.io/w/358c3a38
https://proglib.io/w/358c3a38
Volosoft
Real-Time Messaging In A Distributed Architecture Using ABP, SignalR & RabbitMQ
In this article, we will build a basic real-time messaging application in a distributed architecture. We will use Abp Framework for infrastructure and tiered startup template, SignalR for real time server-client communication and RabbitMQ as the distributed…
Видеозапись доклада Алексея Голуб на .NET fwdays'20 про работу с деревьями выражений в C#, в ходе которого поднимались следующие вопросы:
– что такое дерево выражений;
– как скомпилировать код во время выполнения программы;
– как сделать рефлексию быстрее;
– как реализовать обобщенные операторы;
– как превратить доменный язык в дерево выражений;
– как утилизировать систему типов, чтобы сделать метапрограммирование безопасным;
– как перевести лямбду с одной речи в другую.
https://proglib.io/w/c9d53bdc
– что такое дерево выражений;
– как скомпилировать код во время выполнения программы;
– как сделать рефлексию быстрее;
– как реализовать обобщенные операторы;
– как превратить доменный язык в дерево выражений;
– как утилизировать систему типов, чтобы сделать метапрограммирование безопасным;
– как перевести лямбду с одной речи в другую.
https://proglib.io/w/c9d53bdc
YouTube
Работаем с деревьями выражений в C# [ru] / Алексей Голуб
Видео с онлайн-конференции .NET fwdays'20, которая прошла 11 апреля 2020 года.
Описание доклада:
В ходе этого доклада, рассматривается инструмент "expression trees" в деталях, и обращают внимание на реальные примеры, где он может принести настоящую пользу.…
Описание доклада:
В ходе этого доклада, рассматривается инструмент "expression trees" в деталях, и обращают внимание на реальные примеры, где он может принести настоящую пользу.…
Набор практических советов для начинающих и не только по работе с числами и датами: https://proglib.io/w/6988f748
Code with Shadman
C# Number And DateTime Tips
In this article, we're going to be learning about a whole host of different tips and tricks related to numbers and dates in C# and .NET.
Небольшая и интересная статья об истории и альтернативах платформы .NET: https://proglib.io/w/270b51ce
Хабр
История и альтернативы платформы .NET
Недавно мне повезло пообщаться с Крисом Бэйконом, который написал DotNetAnywhere (альтернативный вариант .NET Runtime), и я остроумно заметил:
… ты, наверное, один из тех немногих, кто создал...
… ты, наверное, один из тех немногих, кто создал...
Необходимость генерировать новый тип класса во время выполнения программы может обусловлена незнанием свойств вашего класса до выполнения, удовлетворением требований к производительности, необходимостью добавления функциональности в ваш новый тип и другим. Если такая задача возникнет, то можно обратиться к следующему мануалу: https://proglib.io/w/0bc2a53e
blog.wedport.co.uk
Generating C# .NET Core Classes at Runtime
There’s been several times in my C# career where I’ve had to generate new class types at runtime. Hopefully writing about it will help others in the same situation. It also means I won’t have to look up the same StackOverflow articles again in the future!…
Что выведет программа?
Anonymous Quiz
7%
10 20 и 5 25
2%
20 10 и 25 5
81%
10 20 и 5 125
2%
20 10 и 125 5
9%
Посмотреть результаты
Доступ к функции
set
осуществляется с использованием объекта класса z
, значения которого передаются в качестве параметров a
и b
. Поскольку переменные c1
и c2
являются публичными членами класса z
, то они доступны с помощью имени класса. В результате мы получаем 10
20
и 5
125
.Подборка из 15 видеоуроков, представляющих из себя реальные проекты на C# начального и экспертного уровня: https://proglib.io/w/e9b32576
DEV Community
15 C# Project Ideas: Beginner to Expert [With tutorial]
I got a huge request from my Instagram friends to make a post like this. I am not a c# developer. I j...
В .NET Core 3 Microsoft представила ряд новых и полезных инструментов для диагностики приложений:
– dotnet-counters для просмотра счетчиков производительности;
– dotnet-dump для сбора и анализа дампов;
– dotnet-trace для захвата событий времени выполнения, эквивалентных событиям ETW и образцам стеков ЦП.
В этой статье автор проводит некоторый анализ производительности с помощью dotnet-trace и PerfView на Linux.
https://proglib.io/w/96e5f70e
– dotnet-counters для просмотра счетчиков производительности;
– dotnet-dump для сбора и анализа дампов;
– dotnet-trace для захвата событий времени выполнения, эквивалентных событиям ETW и образцам стеков ЦП.
В этой статье автор проводит некоторый анализ производительности с помощью dotnet-trace и PerfView на Linux.
https://proglib.io/w/96e5f70e
Michael's Coding Spot
Performance Profiling of .NET Core 3 applications on Linux with dotnet-trace and PerfView
Performance issues never seem to disappear from the world, no matter how fast new computers become. To deal with those issues we need proper tools. We have some great tools on Windows. On .NET Core with Linux, things are not so great. But they're getting…
💸 12 способов зарабатывать с помощью программного кода
Все в курсе, что у программистов высокие зарплаты. Но обычная работа в компании – лишь один из источников, с помощью которых можно зарабатывать на программировании. В этой статье обсудим другие способы.
https://proglib.io/sh/u7tJsmH5S4
Все в курсе, что у программистов высокие зарплаты. Но обычная работа в компании – лишь один из источников, с помощью которых можно зарабатывать на программировании. В этой статье обсудим другие способы.
https://proglib.io/sh/u7tJsmH5S4
👨💻 Как выбрать сервер для 1С
Рассказываем, как выбрать сервер для продуктов 1С в зависимости от числа активных пользователей и других требований к системе.
https://proglib.io/sh/bL4TeHxcQy
Рассказываем, как выбрать сервер для продуктов 1С в зависимости от числа активных пользователей и других требований к системе.
https://proglib.io/sh/bL4TeHxcQy
Серия статей, где автор представляет практическую точку зрения на два принципиально противоположных подхода в разработке программ: объектно-ориентированный и функциональный.
Часть 1
Часть 2
Часть 3
Часть 1
Часть 2
Часть 3
Vasil Kosturski
Clash of Styles, Part #1 – Operations Matrix via OOP - Vasil Kosturski
OOP or FP? C# or F#? Is it just a matter of style? These series will give you a lot of food for thought. Enjoy Part #1
#вопросы_для_самопроверки
Что такое ковариантность и контвариантность делегата?
Представленный ниже делегат является ковариантным или контрвариантным?
Что такое ковариантность и контвариантность делегата?
Представленный ниже делегат является ковариантным или контрвариантным?
delegate T Factory<out T>();