Roadmap for .NET developers
Mukhammadkarim Tukhtaboev
Module 0: Introduction to course?
Who is author?
About course
About programming and programming languages
Module 1: Introduction to .NET and C#
What is .NET?
History of .NET
Versions of .NET
Why .NET?
Major components of .NET
Installing .NET
Hello World in 5 minutes and .NET CLI
Installing IDE (Visual Studio, Rider)
Introducing project/solution structure
Module 2: C# Fundamentals
Print data to console
Date types and variables
Input data to console
String interpolation
If/else operator
Switch/case operator
Goto operator
Loops, break and continue
Math functions
Comments
Methods and params
Arrays
Casting types
Boxing and unboxing
Managed code and unmanaged code
Module 3: Essentials C# programming concepts
Introduction to OOP (vs functional programing)
Major components of OOP
Classes and objects
Constructor and Destructor
Property and fields
Incapsulation
Inheritance and this/base keywords
Polimorphism
Abstraction
Enum and struct
Value type and reference type
Ref and out
String arguments in Main function
Static, sealed, abstract classes
String and StringBuilder
Exception Handling
Module 4: Advanced topics in .NET
Collections: IEnumerable, ICollection, IReadonlyList
Collections: List, Stack, Queue, LinkedList, Dictionary, HashSet, ArrayList
KeyValuePair, Tuple and ValueTuple
Delegates
Events
Extension methods
Stream I/O (StreamWriter, StreamReader)
Stream I/O 2 (FileStream, MemoryStream)
Using statement
File and directories
Multithreading
Asynchronoues programming
Reflection and attributes
HttpClient and HTTP methods
Module 5: LINQ
Introduction to LINQ
What is LINQ and why is it important?
Benefits of using LINQ for data querying.
LINQ query syntax
Basic LINQ query structure.
Using
from
,where
,select
,orderby
, andgroupby
clauses.Filtering data using
where
clause.
Projection and transformation
Projecting data using
select
clause.Working with anonymous types in projections.
Transforming data into different shapes.
Sorting and grouping
Sorting data using the
orderby
clause.Grouping data using the
groupby
clause.Aggregating data within groups.
Aggregation and aggregation methods
Understanding aggregation functions like
Sum
,Average
,Min
, andMax
.Using aggregation methods with LINQ queries.
Applying aggregations on grouped data.
Additional data manipulation methods
Using methods like
All
,Any
,Contains
,Distinct
,Except
,Intersect
,Union
.Applying these methods in LINQ queries for specific scenarios.
Paging and filtering methods
Using methods like
Take
,TakeWhile
,Skip
,SkipWhile
.Applying paging and filtering techniques to query subsets of data.
Joining data
Using the
Join
method to combine data from multiple sources.Understanding different types of joins.
Accessing specific elements
Using methods like
ElementAt
,FirstOrDefault
,Last
,LastOrDefault
,Single
,SingleOrDefault
.Retrieving specific elements from a sequence.
LINQ method syntax
Introduction to LINQ method chaining.
Using methods like
Where
,Select
,OrderBy
,GroupBy
.Utilizing aggregation and other data manipulation methods.
LINQ to objects
Querying in-memory collections using LINQ.
Performing various data manipulations using LINQ.
Practicing LINQ with arrays, lists, dictionaries, etc.
LINQ to XML and JSON
Querying XML and JSON data using LINQ.
Loading and transforming XML/JSON data with LINQ queries.
Advanced LINQ concepts
Understanding expression trees in LINQ.
Writing custom LINQ extension methods.
Utilizing LINQ for functional-style programming.
Module 6: Version Control
Introduction to Version Control
Setting up git and github
Basic git commands
Working with branches
Remote repositories and Github
Collaborative development with Pull Requests
Resolving conflicts
Advanced git commands
Git Worklofw strategies
Git hooks and customization
Module 7: Database
What is MS SQL Server?
Difference editions of SQL Server: Express, Standart, Enterprise
Installing and setting up MS SQL Server
Introduction to SQL
Creating database and tables
Data types in SQL
Basic SQL queries: SELECT, INSERT, UPDATE, DELETE
SELECT statement: Filtering and sorting data
Working with NULL values
Aggregation and grouping
Joins
Transactions
Stored Procedure
Understanding indexes, Clustered, non-clustered and filtered indexes
Performance tuing: Identifying and improving slow queries
Working with Views
Working with Triggers
Constraints
Primary and foreign keys
JSON support in SQL Server
Backup, Restore and Security
Users, roles and permissions
Module 8: ORM
Introduction to ORMs
Dapper
Introduction to Dapper
Basic CRUD operations
Mapping Data to Objects
Handling Transactions and Stored Procedure
Asynchronous Data Access
Advanced Features and Performance
Entity Framework Core
Introduction to Entity Framework Core
Setting up data context and entities
Basic CRUD operations with EF Core
Querying data with LINQ and Projections
Relationships and navigation properties
Working with Migrations
Seeding data and data annotations
Advanced querying and filtering
Working with transactions
Performance optimization and caching
Code First and Database First approaches
Module 9: Introduction to ASP.NET Core
Basic of web development, client-server architecture (HTTP, HTTPS)
Setting up an ASP.NET Core project
Building endpoints and handling requests
Returning data from APIs
Handling errors and status codes
Versioning and documentation
Working with Postman
Content negotition and serialization
Module 10: Advanced ASP.NET Core Concepts
Middlewares
Dependency injection
Introduction to authentication and authorization
Implement token based authentication using JWT
Role-based authorization and policies
REST API development and resource naming
REST vs GraphQL vs gRPC vs SOAP
Logging
Introduction to caching
In-memory caching
Distributed caching
Module 11: Software Design Principles
Introduction to design principles
SOLID: Single Responsibility Principle
SOLID: Open Closed Principle
SOLID: Liskov Subsitition Principle
SOLID: Interface Segregation Principle
SOLID: Dependency Inversion Principle
DRY, KISS, YAGNI principles
Module 12: Software architecture and non-GoF Design Patterns
Introduction to Software architecture
N-Tier Architecture
Unit of Work and Generic Repository Patterns
Implementing N-tier architecture
Module 13: Testing and debugging
Introduction to Unit Testing
Testing basics and testing frameworks
Anatomy of a Unit Test
Unit Testing REST APIs
Testing Data Access Layer
Parameterized tests and test data
Test doubles and Mocking
Test suites and test organization
Test coverage and code analysis
Advanced testing techniques
Module 14: Deployment and Continuous Integration
Publishing ASP.NET Core applications
Introduction to Deployment and CI/CD
Setting up windows server for deployment
Introduction to github actions
Building and testing with github actions
Deploying to windows server with github actions
Handling environment-specific configurations
Automanted versioning and release management
Deployment strategies and rollbacks
Docker and containerization in deployment
Monitoring and alerts
Integration testing and quality checks
Module 15: Advanced technologies and architecture in .NET
Introduction to advanced .NET technologies
RabbitMQ and Messaging
Introduction to messaging and RabbitMQ
RabbitMQ architecture and components
Publish-subscribe model with RabbitMQ
Direct messaging and Rrouting
Topics and routing patterns
Request-reply communication
Message Acknowledgment and delivery guarantees
Dead letter exchanges and message handling
Message Serialization and best practices
Managing RabbitMQ instances
Monitoring and troubleshooting
Real-world use cases and examples
Microservices Architecture
Introduction to Microservices architecture
Design principles for microservices
Decomposing monolitcs into microservices
Service communication and API gateways
Service discovery and load balancing
Data management in microservices
Event-Driven microservices
Microservices security and authentication
Testing and deployment strategies
Monitoring and observability
Scaling microservices
Real-world use cases and case studies
Clean Architecture
Introduction to Clean Architecture
Implementing the presentation layer
Application services and use cases
The Domain Layer and Domain entities
Repository pattern and data persistence
Dependency injection and infrastructure
Decoupling with interfaces and Adapters
Handling cross-cutting concerns
Testing in Clean Architecture
Achieving separation of concerns
Real-world applications and case studies
Docker and Containerization
Introduction to Docker and Containers
Docker fundamentals and concepts
Containerizing ASP.NET Core applications
Managing application dependencies
Configuration and environment variables
Networking and communication
Persistent Storage and data volumes
Docker compose for multi-container applications
Orchestration with Kubernetes
Docker and CI/CD
Security and best practices
Debugging and troubleshooting
Real-world use cases and case studies
Event Sourcing and CQRS
Introduction to Event Sourcing and CQRS
Event Sourcing fundamentals
Implementing Event Sourcing in ASP.NET Core
CQRS overview
Implementing CQRS in ASP.NET Core
Building the write side of CQRS
Building the read side of CQRS
Event store and data storage
Scaling and eventual consistency
Applying Event Sourcing and CQRS in real-world scenarios
Pitfalls, challenges and best practices
Event sourcing and CQRS with Advanced technologies
GraphQL and API Design
Introduction to GraphQL and Hot Chocolate
Defining GraphQL Schemas and Types
Building queries and resolvers
Mutations and Data modification
Fragments and reusability
Filtering and pagination
Authentication and authorization
Real-time communitcation with subscriptions
Error handling and resilience
Introspection and scheme stitching
Real-time communication with SignalR
Introduction to real-time communication and SignalR
SingalR fundamentals and concepts
Building real-time applications with SignalR
SignalR hubs and communications
Real-time data visualization with SignalR
Handling connection state and reconnection
Scaling SignalR applications
Authentication and authorization with SignalR
Handling offline clients and state persistence
Extending SignalR for advanced scenarios
Real-world use cases and case studies
Pitfalls, challenges and best practices
Integrating SignalR with other technologies
Module: 16: Design Patterns
Introduction to Design Patterns
Creational Patterns
Singleton Pattern
Factory Method Pattern
Abstract Factory Pattern
Builder Pattern
Prototype Pattern
Structural Patterns
Adapter Pattern
Bridge Pattern
Composite Pattern
Decorator Pattern
Facade Pattern
Flyweight Pattern
Proxy Pattern
Behavioral Patterns
Chain of Responsibility Pattern
Command Pattern
Interpreter Pattern
Iterator Pattern
Mediator Pattern
Memento Pattern
Observer Pattern
State Pattern
Template Method Pattern
Visitor Pattern
Module 17: Desktop development in WPF
Introduction to WPF
Overview of Windows Presentation Foundation.
XAML (eXtensible Application Markup Language) basics.
Key differences between WPF and Windows Forms.
XAML and UI layout
Understanding XAML syntax and structure.
Creating UI layouts with panels (StackPanel, Grid, DockPanel).
Styling and theming using XAML.
Data binding in WPF
Implementing data binding using XAML.
Two-way data binding and updates.
Data templates for visualizing data.
WPF controls and user interface
Exploring built-in controls (TextBox, Button, ListBox, etc.).
Customizing control appearance using styles and templates.
Creating responsive and adaptive user interfaces.
Command binding and MVVM pattern
Implementing command binding for user interactions.
Introduction to the MVVM (Model-View-ViewModel) architectural pattern.
Separation of concerns with data binding and view-models.
Animations and visual effects
Adding animations to elements (transitions, storyboards).
Using Visual States for complex UI behaviors.
Enhancing user experience with visual effects.
Navigation and page management
Navigating between different views or pages.
Passing data between views during navigation.
Implementing a navigation framework.
Advanced styling and control templates
Creating custom control templates.
Styling controls using triggers and setters.
Incorporating vector graphics and icons.
Data validation and error handling
Implementing data validation using validation rules.
Displaying validation errors to users.
Handling exceptions gracefully.
Localization and globalization
Designing applications for internationalization.
Localizing user interface elements.
Handling different cultures and languages.
Printing and reporting
Generating and printing reports in WPF.
Configuring print settings and page layout.
Exporting content to various formats.
Advanced topics in WPF
Working with 3D graphics and animations.
Integrating multimedia (audio, video) into applications.
Data visualization using charts and graphs.
Deployment and distribution
Packaging WPF applications for deployment.
Creating installer packages.
Ensuring updates and maintenance.
Module 18: Mobile development in .NET MAUI
Introduction to .NET MAUI
Introduction to .NET MAUI and cross-platform development.
Advantages and use cases of .NET MAUI.
Setting up the development environment
Installing .NET MAUI workload and tools.
Creating a new .NET MAUI project.
Introduction XAML for .NET MAUI
XAML basics: UI elements, attributes, namespaces.
Building user interfaces using XAML.
UI components and controls
Using common controls: Button, Label, Entry, etc.
Layouts and containers: StackLayout, Grid, FlexLayout.
Component-based development
Adding and styling toggle buttons.
Implementing checkboxes and radio buttons.
Creating and customizing switches.
Data binding in .NET MAUI
Data binding basics using XAML.
Binding to properties in view models.
Handling data updates and synchronization.
Navigation and routing
Implementing navigation between pages/views.
Passing parameters between pages.
Handling navigation events and patterns.
Platform-specific customization
Leveraging platform-specific APIs and features.
Using Dependency Injection for platform-specific code.
Styling and theming
Applying styles using XAML resources.
Theming for consistent UI across platforms.
Handling device features
Accessing device capabilities through APIs.
Using Essentials library for common device features.
MVVM pattern with .NET MAUI
Understanding MVVM architecture.
Binding view models to views.
Commands and view model interactions.
Localization and globalization
Designing apps for multiple languages.
Localizing user interface elements.
Handling date, time, and number formats.
Working with media and multimedia
Displaying images and icons.
Integrating audio and video content.
Advanced .NET MAUI concepts
Adaptive UI for different screen sizes and orientations.
Custom controls and renderers.
Integrating third-party libraries using NuGet.
Debugging and testing
Debugging .NET MAUI applications.
Writing unit tests for view models and logic.
Deployment and distribution
Preparing apps for deployment.
Deploying to app stores: iOS, Android, Windows.
Module 19: Frontend development in Blazor
Introduction to Blazor
What is Blazor and its core concepts.
Advantages of using Blazor for frontend development.
Comparison between server-side Blazor and WebAssembly Blazor.
Setting up the development environment
Installing .NET SDK and Blazor tools.
Creating a new Blazor project.
Blazor components and pages
Understanding Blazor components and Razor syntax.
Creating and structuring Blazor pages.
Layouts, partial views, and reusable components.
Data binding and events
Two-way data binding using
@bind
directive.Handling user interactions with events.
Using form controls and input validation.
Routing and navigation
Configuring routing in Blazor applications.
Navigating between different pages and views.
Passing parameters in routes.
State management
Managing component state with
@state
.Sharing state between components.
Using Cascading Parameters.
Forms and validation
Building forms with Blazor components.
Client-side and server-side form validation.
Displaying validation errors to users.
Layouts and UI styling
Creating consistent layouts using shared components
Styling components with CSS and Bootstrap.
Customizing UI using themes and templates.
Dependency injection in Blazor
Understanding DI in Blazor applications.
Registering services and injecting dependencies.
Implementing services for data access.
Working with APIs and HTTP requests
Making HTTP requests using HttpClient.
Consuming RESTful APIs and handling responses.
Authentication and authorization with APIs.
Client-side interactivity
Adding JavaScript interop for client-side functionality.
Incorporating third-party JavaScript libraries.
Component lifecycle and hooks
Understanding the lifecycle of a Blazor component.
Using lifecycle methods (
OnInitialized
,OnParametersSet
, etc.).Performing actions during component lifecycle.
WebAssembly Blazor (Experimental)
Introduction to WebAssembly Blazor.
Setting up and building WebAssembly applications.
Comparing WebAssembly and server-side Blazor.
Testing and debugging
Writing unit tests for Blazor components and logic.
Debugging Blazor applications in the browser.
Deployment and hosting
Publishing Blazor applications for deployment.
Hosting options (Azure, AWS, GitHub Pages, etc.).
Advanced topics and best practices
Advanced state management with Flux/Redux patterns.
Using Blazor with Progressive Web Apps (PWAs).
Real-time communication with SignalR and Blazor.
Performance optimization and lazy loading.
Integrating Blazor with authentication providers.
Module 20: Building a real-world projects
Delivering system (BARQ, Talabat)
Producing real-world package for Nuget
Contribution in real-world exist open-source projects
Last updated