1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hejiale010426-dotnet-Beginner-to-Advanced

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение в .NET и продвинутые пути

  1. Основы синтаксиса C#

  2. Основные сведения о .NET Core

  3. ORM

  4. Относиельно-ориентированные базы данных

  5. Среды

  6. Операции с системами

  7. Микросервисы

  8. Прикладные фреймворки

Основы синтаксиса C#

Официальный учебник от Microsoft: Документация C# - Введение, учебники, справочники | Microsoft Learn

Видео на Bilibili:

Лю Тай Мэнг "Введение в C#" полный курс_哔哩哔哩_bilibili

Введение в C#

Основные сведения о .NET Core

Официальный учебник от Microsoft: Создание веб-приложений с помощью ASP.NET Core | Microsoft Learn.NET 6 учебник, видео-уроки по .Net Core 2022, преподаватель Ян Цзюнь Суо_哔哩哔哩_bilibili

Основные сведения о ASP.NET Core - Внедрение зависимостей

Blazor

Blazor — это фреймворк для создания интерактивных клиентских веб-интерфейсов с использованием C#.- Использует C# вместо JavaScript для создания информативных интерактивных пользовательских интерфейсов.

  • Обеспечивает совместное использование логики приложения, написанной на .NET, как для серверной, так и для клиентской части.

  • Представляет UI в виде HTML и CSS для поддержки множества браузеров, включая мобильные.

  • Интегрируется с современными платформами контейнеризации (например, Docker).

  • Использует .NET и Blazor для создания гибридных десктопных и мобильных приложений.Использование .NET для клиентской веб-разработки обеспечивает следующие преимущества:

  • Использование C# вместо JavaScript для написания кода.

  • Использование существующих .NET библиотек и экосистемы.

  • Совместное использование логики приложения между сервером и клиентом.

  • Получение преимуществ от производительности, надежности и безопасности .NET.

  • Поддержание эффективности работы на Windows, Linux или macOS с помощью сред разработки (например, Visual Studio или Visual Studio Code).

  • Использование стабильного, функционально богатого и удобного в использовании набора языков, фреймворков и инструментов.

Официальная документация Blazor от Microsoft

Основной учебник по Blazor

Рекомендованные Blazor UI-фреймворки:

dotnet документация

GitHub / Web VSCode адрес## Введение в ORMORM Объектно-реляционное отображение (Object Relational Mapping, ORM) — это техника, разработанная для решения проблем, возникающих из-за несоответствия объектно-ориентированного программирования и реляционных баз данных. Проще говоря, ORM использует метаданные, описывающие отображение объектов программы на структуру реляционной базы данных, для автоматической персистентизации объектов в базу данных. Как же осуществляется персистентизация? Одним из простых подходов является использование жесткого кодирования, при котором для каждой возможной операции доступа к базе данных создается отдельный метод. Этот подход имеет следующие недостатки: 1. Отсутствие гибкости в персистентном слое. При изменении бизнес-требований необходимо изменять интерфейс персистентного слоя. 2. Персистентный слой одновременно связан как с доменной моделью, так и с моделью реляционной базы данных. При изменении как доменной модели, так и модели реляционной базы данных, необходимо изменять соответствующие части кода персистентного слоя, что увеличивает трудоемкость поддержки программного обеспечения.

    · Простота: моделирование данных в самом базовом виде.
    · Доступность: структура базы данных документируется на языке, который может быть понят всеми.
    · Точность: создание правильно нормализованной структуры на основе данных модели.### [FreeSql](https://freesql.net/)

мощный компонент объектно-реляционного отображения (O/RM), поддерживающий .NET Core 2.1+, .NET Framework 4.0+ и Xamarin✨

EntityFrameworkCore

Entity Framework (EF) Core — это легковесный, расширяемый, открытый и кроссплатформенный вариант популярной технологии Entity Framework для доступа к данным. (рекомендовано использовать EF Core, поддерживаемое Microsoft)### Dapper Dapper — это микропроект ORM, созданный командой Stack Overflow. Dapper — это простой объектно-реляционный отображатель для .NET, который по скорости работы считается королем микропроектов ORM, почти так же быстрый, как и использование исходного ADO.NET Data Reader. ORM — это объектно-реляционный отображатель, отвечающий за отображение между базой данных и языком программирования.### SqlSugar SqlSugar — это старая версия открытого ORM-фреймворка для .NET, поддерживаемая и обновляемая командой Fruit Sugar Big Data Technology.

Реляционные базы данных

SQL Server

SQL Server — это реляционная система управления базами данных (DBMS), разработанная и распространяемая Microsoft; SQL Server удобен в использовании, имеет хорошую масштабируемость и высокую степень интеграции с связанными программами; SQL Server обеспечивает надежное и безопасное хранение реляционных и структурированных данных.

MySQL

MySQL — это самая популярная реляционная система управления базами данных, и одна из лучших RDBMS (Relational Database Management System: реляционная система управления базами данных) для веб-приложений.

PostgreSQL

PgSQL История PostgreSQL. Современное название PostgreSQL — это объектно-реляционная система управления базами данных (ORDBMS), которая ранее называлась Postgres95. Она развивалась из пакета программ POSTGRES, написанного в Беркли. После десятилетий развития PostgreSQL является одной из самых передовых открытых систем управления базами данных, поддерживающей многоверсионное параллельное управление, поддержку практически всех компонентов SQL (включая подзапросы, транзакции и пользовательские определенные типы и функции), а также широкий спектр языков программирования (включая C, C++, Java, Perl, Tcl и Python).## Сервисы промежуточного слоя

Сред间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间ware,同时也把它与支撑软件和实用软件区分开来。件是位于应用软件和操作系统之间的一类软件,它利用系统软件提供的基础服务(功能),连接网络上应用系统的各个部分或不同的应用,从而实现资源共享和功能共享的目的。中间件并没有严格的定义,但普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户端/服务器操作系统之上,管理计算资源和网络通信。从这个意义上,可以用一个等式来表示中间件:中间件 = 平台 + 通信。这也就限定了只有用于分布式系统中才能称为中间件,同时也将其与支撑软件和实用软件区分开来。

MongoDB

MongoDB — это база данных, основанная на распределенном файловом хранилище, написанная на языке C++. Она предназначена для предоставления масштабируемого и высокопроизводительного решения для хранения данных в веб-приложениях.

MongoDB представляет собой продукт, находящийся между реляционными и нереляционными базами данных, и является наиболее функциональным среди нереляционных баз данных, напоминающим реляционные базы данных.### Redis

REmote DIctionary Server (Redis) — это система хранения данных с ключ-значением, написанная Salvatore Sanfilippo, которая является кроссплатформенной нереляционной базой данных.

Redis — это открытая система хранения данных с ключ-значением, написанная на языке ANSI C, которая подчиняется лицензии BSD, поддерживает сеть, может работать в памяти, быть распределённой и иметь опциональную долговременную сохраняемость. Redis также предоставляет клиентские библиотеки для взаимодействия с агентом на различных языках программирования.

Redis обычно называют сервером данных структуры, так как значения могут быть строками (String), хэшами (Hash), списками (List), множествами (Set) и упорядоченными множествами (Sorted Set).

RabbitMQ

RabbitMQ — это открытое программное обеспечение для сообщений, реализующее протокол передачи сообщений высокого уровня (AMQP). RabbitMQ-сервер написан на языке Erlang, а кластеризация и отказоустойчивость построены на основе открытой платформы связи (Open Telecom Platform). Для всех основных языков программирования существуют клиентские библиотеки для взаимодействия с агентом.

ActiveMQ

Apache ActiveMQ — это открытое программное обеспечение для сообщений, разработанное Apache Software Foundation. Поскольку ActiveMQ — это чистая реализация на Java, ему требуется только поддержка Java Virtual Machine (JVM) для выполнения.### SkyWalking

Инструмент для мониторинга производительности приложений в распределенных системах, особенно для микросервисов, облачных приложений и систем на основе контейнеров (Kubernetes).

ConsulConsul — это распределенное средство для решения задачи обнаружения сервисов и центра конфигураций в микросервисной архитектуре. Consul — это открытое программное обеспечение, разработанное компанией HashiCorp, написанное на языке Go. Consul легко развернуть, так как он требует минимального количества исполняемых файлов и конфигурационных файлов. Consul является распределенным, отказоустойчивым и масштабируемым средством для реализации обнаружения сервисов и управления конфигурациями в распределенных системах.

  • Открытие служб (Service Discovery): Consul предоставляет возможность регистрации и обнаружения служб через DNS или HTTP интерфейсы. Внешние службы могут легко находить службы, на которые они зависят, с помощью Consul.

  • Проверка состояния (Health Checking): Клиент Consul может выполнять любое количество проверок состояния, как связанных с определенной службой ("возвращает ли веб-сервер OnClickListener 200 OK"), так и связанных с локальным узлом ("не превышает ли использование памяти 90%"). Операторы могут использовать эту информацию для мониторинга состояния кластера, а компоненты обнаружения служб могут использовать её для перенаправления трафика от неработоспособных узлов.

  • Хранилище Key/Value: Приложения могут использовать хранилище Key/Value, предоставляемое Consul, в соответствии со своими потребностями.Consul предоставляет простой и удобный HTTP-интерфейс, который можно использовать для реализации динамического конфигурирования, флагов функций, выбора лидеров и других функций в сочетании с другими инструментами.

  • Безопасная служебная связь: Consul может генерировать и распространять TLS-сертификаты для служб, чтобы установить взаимную TLS-связь. Это может использоваться для определения, какие службы могут общаться. Управление разделением служб может быть легко организовано, и его цель заключается в возможности в реальном времени изменять его, а не использовать сложные сетевые топологии и статические правила брандмауэра.

  • Поддержка нескольких центров обработки данных: Consul поддерживает работу с несколькими центрами обработки данных из коробки. Это означает, что пользователи не должны беспокоиться о необходимости создания дополнительных уровней абстракции для расширения бизнеса на несколько регионов. ### KafkaKafka — это высокопроизводительная распределённая система публикации/подписки, которая может обрабатывать данные потоков действий для сайтов масштаба потребителей. Эти действия (просмотр страниц, поиск и другие действия пользователей) являются ключевым фактором многих социальных функций в современных сетях. Эти данные обычно решаются с помощью обработки логов и агрегации логов из-за требований к пропускной способности. Для систем логов и офлайн-анализа, таких как Hadoop, но требующих реального времени обработки, это является возможным решением. Цель Kafka — это унификация онлайн и офлайн обработки сообщений с помощью параллельной загрузки Hadoop, а также обеспечение возможности работы в кластере для реального времени потребления.

Dapr

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

Описание Dapr от Microsoft

Операционное обслуживание

Docker

Docker — это открытая система контейнеризации приложений, написанная на языке Go и распространяемая под лицензией Apache2.0.Docker позволяет разработчикам упаковывать их приложения и зависимые библиотеки в легковесные, переносимые контейнеры, которые затем можно запустить на любом популярном Linux-сервере, обеспечивая тем самым виртуализацию.

Контейнеры полностью изолированы друг от друга с помощью механизма песочницы, между ними нет никаких интерфейсов (аналогично приложениям на iPhone), а также производительность контейнеров минимальна.

DockerCompose

Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. С помощью Compose можно использовать файл конфигурации в формате YML для настройки всех необходимых сервисов приложения. Затем можно использовать один командный вызов для создания и запуска всех сервисов из конфигурации YML.

Drone

Drone — это автономная платформа непрерывной интеграции для занятых команд разработчиков.

CI/CD

CI — Непрерывная интеграция (Continuous Integration) Совместная разработка — это наиболее распространенный метод разработки, когда несколько разработчиков могут одновременно работать над разными модулями или функциями одного приложения.Однако, если компания планирует объединять все ветки разработки в один день, это может занять много времени и привести к множеству повторных действий, что является неэффективным. Это связано с тем, что конфликты кода неизбежны. Если разработчики используют локальную среду, отличную от продакшн-среды, то проблема становится более сложной.Непрерывная интеграция (CI) помогает разработчикам легче объединять изменения кода в основную ветку.

Как только разработчик объединяет изменённый код в основную ветку, система автоматически собирает приложение и выполняет различные уровни автоматизированных тестов (обычно это юнит-тесты и интеграционные тесты), чтобы проверить изменения и убедиться, что они не наносят вред приложению.

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

Непрерывная доставка (Continuous Delivery) После завершения автоматизированных процессов сборки, юнит-тестирования и интеграционного тестирования, непрерывная доставка автоматически публикует проверенный код в репозиторий компании.

Цель непрерывной доставки — создать репозиторий кода, который можно было бы в любое время использовать для развертывания функций разработки в продакшн-среде.

В процессе непрерывной доставки каждый шаг включает автоматизированные тесты и автоматизированное развертывание кода.

Когда процесс завершён, операционная команда может быстро и легко развернуть приложение в продакшн-среде.

Непрерывное развертывание (Continuous Deployment) В рамках полной непрерывной доставки каждый шаг включает автоматизированное развертывание кода в продакшн-среде.

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

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

В целом, все эти шаги, связанные с CI/CD, значительно снижают риски при развертывании приложений.

Однако, из-за необходимости написания автоматизированных тестов, адаптированных к различным этапам тестирования и публикации в CI/CD-канале, начальный объём работы остаётся значительным.

МикросервисыОдна из вариаций архитектуры, ориентированной на сервисы (SOA) — это микросервисная архитектура, которая предполагает разбиение единой программы на набор небольших сервисов, которые взаимодействуют и координируют свою работу для предоставления конечной ценности пользователю. Каждый сервис выполняется в отдельном процессе, а коммуникация между сервисами осуществляется с помощью легковесных механизмов (обычно это RESTful API на основе HTTP). Каждый сервис разрабатывается с учетом конкретной бизнес-функции и может быть независимо развернут в рабочей среде, тестовой среде и т.д. Кроме того, следует избегать централизованного управления сервисами и выбирать подходящий язык и инструменты для каждого сервиса в зависимости от контекста.

Облачное-ориентированное проектирование (DDD)

Облачное-ориентированное проектирование (DDD) поддерживает создание моделей, основанных на реальном бизнесе и связанных с сценариями использования. В контексте разработки приложений DDD использует термин "область" для описания проблемы. Оно описывает независимые области как определенные контексты (каждый определенный контекст связан с микросервисом), и акцентирует внимание на использовании общей языковой модели для обсуждения этих областей. DDD также предлагает множество технических концепций и моделей, таких как доменные сущности с "наполненными" моделями (в отличие от "анемичных" моделей), объекты-значения, агрегаты и корневые агрегаты (или корневые сущности), которые поддерживают внутреннюю реализацию. В этом разделе рассматриваются внутренние модели и их реализация.Иногда технические правила и модели DDD воспринимаются как препятствие из-за крутого обучения кривого при внедрении методологии DDD. Однако важнее не сами модели, а то, как код организован вокруг бизнес-проблем и используется одинаковый бизнес-терминологический язык (общий язык). Кроме того, методология DDD должна применяться только тогда, когда требуется реализация сложных микросервисов, использующих важные бизнес-правила. Для более простых функций, таких как CRUD-сервисы, можно использовать более простые методы управления.

При проектировании и определении микросервисов ключевым аспектом является определение границ. С использованием моделей DDD можно лучше понять сложность области. Для модели области каждого определенного контекста необходимо определить и описать сущности, объекты-значения и агрегаты, необходимые для моделирования области. Генерация и оптимизация модели области, ограниченной определенной границей, которая определяет контекст. Если это микросервис, это будет очевидно. Компоненты внутри этих границ в конечном итоге становятся микросервисами, но в некоторых случаях BC или бизнес-микросервисы могут состоять из нескольких физических сервисов. DDD связан с границами, как и микросервисы.

Реализация чтения/запроса в CQRS микросервисахДля чтения/запроса микросервис заказов из примера приложения eShopOnContainers реализует запросы независимо от моделей DDD и областей транзакций. Это реализация в основном обусловлена тем, что требования к запросам и транзакциям значительно различаются. Выполнение транзакций для записи должно соответствовать логике области. С другой стороны, запросы являются идемпотентными и могут быть отделены от правил области.

Приложение-фреймворк

ABP

ABP — это открытый и хорошо документированный фреймворк для приложений. ABP представляет собой не только фреймворк, но и предлагает модель архитектуры, основанную на лучших практиках и подходе к доменной моделировке (DDD), поддерживающую как .NET Framework, так и .NET Core.

Основные характеристики фреймворка ABP- Зависимости и внедрение. Эта часть реализуется с помощью Castle Windsor (контейнера внедрения зависимостей), что позволяет использовать IOC для управления зависимостями.

  • Репозиторий. Реализованы репозитории для Entity Framework, NHibernate, MongoDB и памяти, что позволяет быстро вызывать интерфейсы данных.
  • Аутентификация и управление разрешениями. Поддерживается аутентификация и управление разрешениями через декларативные атрибуты, позволяющие проверять вход пользователя или права доступа к интерфейсу.
  • Проверка валидности данных. ABP автоматически проверяет входные параметры объектов на предмет пустот и валидности, используя информацию о свойствах.
  • Аудит и логирование. Запись логов каждого вызова интерфейса, а также информации о создании, изменении и удалении записей.
  • Рабочий цикл (Unit of Work). Реализация транзакций для уровней приложения и репозиториев, что позволяет выполнять все операции в рамках одной транзакции.
  • Обработка ошибок. Полный набор функций для обработки ошибок, включая логирование и передачу ошибок.
  • Логирование. Использование Log4Net для записи логов, что облегчает отслеживание информации о работе программы и ошибках.
  • Поддержка нескольких языков и локализация. Поддержка нескольких языков с помощью конфигурации XML и JSON.
  • Автоматическое отображение (Auto Mapping).Использование AutoMapper для отображения свойств доменных объектов и DTO, что позволяет изолировать логику объектов, но при этом легко передавать данные.
  • Динамическое API Web. Возможность публикации Application Service в виде API Web без необходимости создания контроллеров для каждого бизнес-объекта.
  • Динамическое управление JavaScript и AJAX. Автоматическое создание JavaScript-слоя для удобного использования Web API, что упрощает работу с Web-слоем. Особые функции фреймворка ABP- Поддержка многосессионности (данные каждого сессионного пользователя автоматически изолированы, разработчики модулей бизнес-логики не должны писать соответствующий код при сохранении и запросе данных);
  • Поддержка мягкого удаления (наследуя соответствующие базовые классы или реализуя соответствующие интерфейсы, автоматически реализуется мягкое удаление);
  • Управление настройками системы (системные, сессионные, пользовательские, область действия автоматически управляется);
  • Реализация EventBus для доменных событий (Domain Events);
  • Реализация модулей и зависимостей модулей в виде плагинов и т.д.

image

MASA Framework

Новый .NET современный фреймворк для разработки приложений, предоставляющий распределённый запуск приложений – на основе Dapr лучших практик облачных технологий, что позволяет быстро создавать распределённые, микросервисные, DDD, SaaS и другие современные приложения.

image

OpenIddict

Что такое OpenIddict?

OpenIddict предназначен для предоставления универсального решения для реализации поддержки клиентов, серверов и проверки токенов OpenID Connect в любом приложении ASP.NET Core 2.1 (и выше) и ASP.NET 4.6.1 (и выше), благодаря нативной интеграции с Microsoft.Owin 4.2.OpenIddict полностью поддерживает потоки кода/скрытого/гибридного, потоки клиентских удостоверений/ресурсов владельцев паролей и потоки устройств.

OpenIddict нативно поддерживает Entity Framework Core, Entity Framework 6 и MongoDB, а также позволяет реализовать пользовательские хранилища для поддержки других провайдеров.

Заключение

Добро пожаловать, уважаемые разработчики, для дополнения и укрепления экосистемы .NET!

GitHub адрес: dotnet от новичка до продвинутого

Спасибо за использование

Технический обмен: 737776595

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Путь от入门到高级 для .NET Путь от начального уровня до高级 для .NET Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hejiale010426-dotnet-Beginner-to-Advanced.git
git@api.gitlife.ru:oschina-mirror/hejiale010426-dotnet-Beginner-to-Advanced.git
oschina-mirror
hejiale010426-dotnet-Beginner-to-Advanced
hejiale010426-dotnet-Beginner-to-Advanced
main