Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.43K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
Вероятно каждый веб-разработчик сталкивался с пагинацией (порядковая нумерация страниц) в своей практике, ведь она является одной из самых важных концепций при создании RESTful API. В руководстве подробно и довольно понятно расписан процесс создания ASP.NET Core 3.1 WebApi, который реализует расширенную пагинацию. Читайте статью или сразу в репозиторий.
Статья о поиске сильных и слабых сторон .NET Core и Node.js, которая породила много споров и побудила автора написать новую полноценную статью-продолжение с точки зрения личного опыта и причинно следственных связей.
#вопросы_для_самопроверки

Зачем нужны автосвойства, не проще ли их заменить обычными переменными?
Библиотека шарписта | C#, F#, .NET, ASP.NET pinned «​​Фильм Microsoft Build 2020: главные новинки IT-индустрии Рассказ и видео о последних новинках от компании Microsoft. Суперкомпьютеры, безопасное машинное обучение, Learn TV, Fluid Framework и многое другое – будьте в курсе инноваций! https://proglib.io/sh/RSsI59cBpz»
​​Свойства в C# управляют доступом к полям класса. Если у нас имеется десяток и более полей, то определять каждое поле и писать для него однотипное свойство было бы утомительно. Поэтому в .NET были добавлены автоматические свойства (автосвойства). Сокращенная запись автосвойств прикреплена к посту.

Преимущество автосвойств заключается в том, что при необходимости их можно развернуть в полноценные свойства и через них управлять доступом к переменным. Если бы мы использовали обычные переменные вместо автосвойств, то при необходимости ограничить доступ к переменным нам, возможно, пришлось исправить множество имеющегося кода в программе.
Как безопасно подключаться к API в .NET Core, используя C#? HttpClient — это решение, но как правильно его использовать, чтобы не вызвать дальнейших проблем? Разбираемся: https://proglib.io/w/9cb945fe
В строках 12 и 13 перечислены 2 способа преобразования объекта Person к типу Employee. Какой из них предпочтительнее?
Anonymous Poll
75%
Employee empl1
25%
Employee empl2
Использование оператора as (строка 12) является более предпочтительным, поскольку в случае неудачного преобразования этот оператор возвращает значение null. При доступе к объекту через переменную мы можем проверить её значение на null.

Операция преобразования (строка 13) в случае неудачного преобразования генерирует исключение. Мы можем отлавливать данное исключение через конструкцию try...catch. Однако, как правило, обработка исключений является более затратной операций по сравнению с простой проверкой в блоке if.
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.
Статья, в которой объясняется, почему вы должны описывать программное обеспечение по вариантам использования, а не по уровням и структурам, которые оно использует. Погружаемся в принципы чистой архитектуры .Net: https://proglib.io/w/1ff937f9
Актуальный вопрос поднял Николай Балакин на .NET Fest 2019. Действительно, что делать, если всё, что можно уже закэшировано, а код всё ещё тормозит? В своём докладе он приводит примеры работы некоторых низкоуровневых механизмов .NET, а также рассказывает, как с их помощью можно выиграть драгоценные секунды, когда счёт идет на отдельные такты процессора.

https://proglib.io/w/a30b46c9
Привет, Чувак на связи.

Веду канал с вакансиями в IT без херни.

Лично отбираю вакансии - никакой херни.
Вакансии краткие и по делу - никаких полотен в два экрана.
Только две вакансии в день - никакого спама, я уважаю своих читателей.
Все вакансии имеют стандартизированный вид - никакого хаоса.
Заставляю эйчаров переписывать вакансии по 10 раз - никаких дружных коллективов.
Если класс объявлен с модификатором sealed (запечатанный), то от этого класса нельзя наследовать и создавать производные классы.

В следующем примере класс B наследует от класса A, но никакие классы не могут наследовать от класса B:
class A {}
sealed class B : A {}


Модификатор sealed можно использовать для метода или свойства, которое переопределяет виртуальный метод или свойство в базовом классе. Это позволяет классам наследовать от вашего класса, запрещая им при этом переопределять определённые виртуальные методы или свойства.
1
Практический мануал по созданию базового приложения с распределенной архитектурой для обмена сообщениями в реальном времени. В качестве инструментария используется многоуровневый шаблон запуска, Abp Framework для инфраструктуры, SignalR для обмена данными между сервером и клиентом в реальном времени, и RabbitMQ в качестве шины распределенных событий.

https://proglib.io/w/358c3a38