O CSharp-101 é um repositório educacional com exemplos práticos em C# e .NET organizados por trilhas temáticas. Cada pasta reúne projetos pequenos e focados, com documentação local padronizada para facilitar leitura, execução isolada e reaproveitamento como referência técnica.
O catálogo cobre fundamentos da linguagem, APIs web, autenticação, mensageria, cache, padrões de projeto, padrões arquiteturais, persistência, algoritmos, utilitários, testes e SDKs. As convenções de documentação ficam em docs/ e o padronizador de README em tools/.
- Linguagem C#, orientação a objetos, LINQ, delegates, eventos e reflection.
- ASP.NET Core, Minimal APIs, middleware, gRPC, autenticação, autorização e segurança.
- Mensageria, Redis, design patterns, CQRS, Saga, persistência, algoritmos e utilitários de apoio.
- Testes, benchmarks e construção de bibliotecas e SDKs reutilizáveis.
- Encontrar rapidamente um exemplo prático para um tema específico do ecossistema .NET.
- Executar exemplos de forma isolada, com comandos direcionados por projeto.
- Comparar abordagens diferentes para o mesmo problema técnico.
- Usar os READMEs locais como índice curto de estudo e navegação.
CSharp-101/
+-- 01-Fundamentals/
+-- 02-AsyncAndConcurrency/
+-- 03-WebAPIs/
+-- 04-Authentication/
+-- 05-Messaging/
+-- 06-Caching/
+-- 07-DesignPatterns/
+-- 08-ArchitecturalPatterns/
+-- 09-Data/
+-- 10-Algorithms/
+-- 11-Utilities/
+-- 12-Testing/
+-- 13-SDKsAndLibraries/
+-- docs/
+-- tools/
+-- CSharp-101.sln
+-- README.md
+\-- .github/
Prefira comandos direcionados ao arquivo .csproj do exemplo que deseja estudar.
# Build de um exemplo console
dotnet build 01-Fundamentals/AggregationDepartmentManagement/AggregationDepartmentManagement.csproj
# Execução de uma API
dotnet run --project 03-WebAPIs/MinimalApiDemo/MinimalApiDemo.csproj
# Execução de testes
dotnet test 12-Testing/OrderRuleConsole/OrderRuleConsole.Tests/OrderRuleConsole.Tests.csproj
# Reaplicar a padronização de documentação
powershell -ExecutionPolicy Bypass -File .\tools\Standardize-Readmes.ps1- Use o README local de cada pasta antes de executar, alterar ou validar o projeto.
- Prefira
build,runetestpor.csproj; a solução raiz funciona melhor como índice do workspace do que como ponto único de validação. - Exemplos com Kafka, RabbitMQ, Redis, MySQL, PostgreSQL ou MongoDB exigem serviços externos ativos.
- As convenções oficiais de documentação deste repositório estão em
docs/CONVENCOES.mdedocs/README_TEMPLATE.md.
AggregationDepartmentManagement- Composição e agregaçãoAssociationMedicalScheduling- Associação entre objetosCompositionOrderFulfillment- Composição de objetosCourse- Fundamentos da linguagemDictionaryMaster- Estudo interativo de Dictionary<TKey, TValue>Events- Sistema de eventos e delegatesLinq- Query com LINQLogicalOperatorsDemo- Operadores lógicosReflection- Introspecção de tiposSymbolicDelegates- Delegates simbólicos
Asynchronous- Async/await básicoAsyncTasksDemo- Demonstração de tasksAtomicOperationsDemo- Operações atômicasBackgroudWorker- Background workersJobQueueDemo- Fila de trabalhosTaskManagement- Gerenciamento de tasksThreads- Manipulação de threads
BlazorHelloWorld- Aplicação BlazorCustomFilterApi- Filtros customizados em APICustomMiddleware- Middleware customizadoFluentValidationUserApi- Validação com Fluent ValidationGrpcSample(3 subprojetos)GrpcSample.Client- Cliente gRPCGrpcSample.Contracts- Contratos ProtobufGrpcSample.Server- Servidor gRPC
IdempotencyCacheApi- Idempotência com cacheInvoiceThrottlingApi- Throttling de requisiçõesMinimalApiDemo- Minimal APIs (ASP.NET Core)ShareableUser- Recurso compartilhávelSimpleWebAPI- API básicaSwaggerClientCode- Geração de código via SwaggerTransactionalOrderApi- Transações em pedidosWebApplication(1 subprojeto)MyAPI- Aplicação web
AdvancedAuthSystem- Sistema avançado de autenticaçãoAuthentication(2 subprojetos)Auth- Autenticação básicaOAuthApplication- OAuth 2.0
Security(3 subprojetos)EncryptDecrypt- CriptografiaSafeVault- Armazenamento seguroSecurityAndAuthentication- Segurança integrada
SessionManagement- Gerenciamento de sessão
Kafka(2 subprojetos)Send- Produtor KafkaReceive- Consumidor Kafka
KafkaStreamApi- Streaming com KafkaQueueExample- Exemplo de filaRabbitMQ(2 subprojetos)Send- Produtor RabbitMQReceive- Consumidor RabbitMQ
Caching(6 subprojetos)CacheAside- Padrão Cache-AsideCacheIncrement- Incremento com cacheCachePatterns- Padrões de cacheFusionCache- Biblioteca FusionCacheRedisMySQLIntegration- Redis + MySQLRedisConsoleApp- Redis (console)
UnifiedCacheSdk- SDK unificado de cacheCaching/RedisMetaData- Metadados do Redis
SOLIDExamples- Princípios SOLIDStrategyIntegration- Padrão StrategyObjectCalisthenics(2 subprojetos)BadOrderApi- Implementação inadequadaGoodOrderApi- Implementação adequada
RichVsAnemicDomain(2 subprojetos)AnemicDomain- Domínio anêmicoRichDomain- Domínio rico
DesignPattern/Behavioral(6 subprojetos)ChainOfResponsibility- Cadeia de responsabilidadeMediator- MediadorState- EstadoStrategy- EstratégiaUnitOfWork- Unidade de trabalhoVisitor- Visitante
DesignPattern/Creational(2 subprojetos)Builder- ConstrutorFactory- Fábrica
DesignPattern/Structural(3 subprojetos)Adapter- AdaptadorComposite- CompostoDecorator- Decorador
CarriedEvent- Eventos persistidosCircuitBreakerDemo- DisjuntorCQRSDemo- Command Query Responsibility SegregationPersistencePatterns- Padrões de persistênciaSagaPattern- Padrão SagaServiceRegistration- Registro de serviçosTransactionPattern- Padrão de transaçãoTransactionScript- Script de transaçãoUseCases- Casos de uso
Data(8 subprojetos)Dapper- Micro ORM DapperDapperExample- Exemplo com DapperMoneyStorageApi- API de armazenamentoMongoUserApi- API com MongoDBMysqlExample- Exemplo com MySQLPostgres- Exemplo com PostgreSQLProcedureExample- Procedimentos armazenadossqlite-sample-api- API com SQLitesqlite-sample-api.Tests- Testes
GraphTraversalDemo- Travessia de grafosLoadBalancingAlgorithms- Algoritmos de balanceamentoPriorityQueueDemo- Fila de prioridadeRealWorldBubbleSort- Bubble sort práticoSlidingWindows- Janela deslizante
ClassToDTO- Conversão classe para DTOClassToXml- Conversão classe para XMLCompressDecompress- Compressão/descompressãoDictionaryMerge- Fusão de dicionáriosNPOIDemo- NPOI para Excel/WordPDFGenerator- Geração de PDFSerialization- SerializaçãoSerilogExample- Logging estruturado com SerilogXmlBasics- Manipulação XML
BenchmarkTool- Benchmark de performanceOrderRuleConsole(2 subprojetos)OrderRuleConsole- AplicaçãoOrderRuleConsole.Tests- Testes
MySimpleSdk(3 subprojetos)MySimpleSdk- Biblioteca principalMySimpleSdk.Demo- DemonstraçãoMySimpleSdk.Tests- Testes
BlockchainDemo- Demonstração de blockchain (sem .csproj)
ReadmeStandardizer- Utilitário de padronização de READMEs
Total: 108+ subprojetos distribuídos em 13 trilhas temáticas + tools
| Pasta | Foco principal | Exemplos de referência |
|---|---|---|
01-Fundamentals |
Fundamentos da linguagem e OO | Course, DictionaryMaster, Events, Linq, Reflection |
02-AsyncAndConcurrency |
Async/await, tasks, threads e coordenação | Asynchronous, AsyncTasksDemo, JobQueueDemo |
03-WebAPIs |
APIs, middleware, gRPC e aplicações web | MinimalApiDemo, GrpcSample, CustomMiddleware |
04-Authentication |
JWT, OAuth, sessão e segurança | Auth, SessionManagement, AdvancedAuthSystem |
05-Messaging |
Filas, brokers e streaming | Kafka, RabbitMQ, KafkaStreamApi |
06-Caching |
Estratégias de cache e Redis | CacheAside, CachePatterns, FusionCache |
07-DesignPatterns |
GoF, SOLID e modelagem OO | DesignPattern, SOLIDExamples, ObjectCalisthenics |
08-ArchitecturalPatterns |
Organização de casos de uso e padrões arquiteturais | UseCases, CQRSDemo, SagaPattern |
09-Data |
Bancos de dados, ORMs e acesso a dados | Dapper, MongoUserApi, MoneyStorageApi |
10-Algorithms |
Estruturas de dados e análise de cenários | GraphTraversalDemo, PriorityQueueDemo, SlidingWindows |
11-Utilities |
Transformação de dados, serialização e observabilidade | Serialization, NPOIDemo, SerilogExample |
12-Testing |
Benchmarks e validação de comportamento | BenchmarkTool, OrderRuleConsole |
13-SDKsAndLibraries |
Bibliotecas e SDKs reutilizáveis | MySimpleSdk |
# RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
# Redis
docker run -d --name redis -p 6379:6379 redis
# Kafka (exemplo da pasta Kafka)
cd 05-Messaging/Kafka
docker compose up -ddocs/CONVENCOES.md: convenções de escrita e manutenção dos READMEs.docs/README_TEMPLATE.md: template base para novos exemplos.tools/ReadmeStandardizer/: utilitário em C# para padronização em lote.
- docs/CONVENCOES.md - Convenções de documentação do repositório.
- docs/README_TEMPLATE.md - Template base para READMEs padronizados.