Roadmap for .NET developers
Roadmap for .NET developers
Mukhammadkarim Tukhtaboev
Module 0: Introduction to course?
-
About course
-
About programming and programming languages
Who is author?
Module 1: Introduction to .NET and C#
-
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
What is .NET?
Module 2: C# Fundamentals
-
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
Print data to console
Module 3: Essentials C# programming concepts
-
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
Introduction to OOP (vs functional programing)
Module 4: Advanced topics in .NET
-
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
Collections: IEnumerable, ICollection, IReadonlyList
Module 5: LINQ
-
Benefits of using LINQ for data querying.
-
LINQ query syntax
-
Using
from
,where
,select
,orderby
, andgroupby
clauses. -
Filtering data using
where
clause.
Basic LINQ query structure.
-
-
Projection and transformation
-
Working with anonymous types in projections.
-
Transforming data into different shapes.
Projecting data using
select
clause. -
-
Sorting and grouping
-
Grouping data using the
groupby
clause. -
Aggregating data within groups.
Sorting data using the
orderby
clause. -
-
Aggregation and aggregation methods
-
Using aggregation methods with LINQ queries.
-
Applying aggregations on grouped data.
Understanding aggregation functions like
Sum
,Average
,Min
, andMax
. -
-
Additional data manipulation methods
-
Applying these methods in LINQ queries for specific scenarios.
Using methods like
All
,Any
,Contains
,Distinct
,Except
,Intersect
,Union
. -
-
Paging and filtering methods
-
Applying paging and filtering techniques to query subsets of data.
Using methods like
Take
,TakeWhile
,Skip
,SkipWhile
. -
-
Joining data
-
Understanding different types of joins.
Using the
Join
method to combine data from multiple sources. -
-
Accessing specific elements
-
Retrieving specific elements from a sequence.
Using methods like
ElementAt
,FirstOrDefault
,Last
,LastOrDefault
,Single
,SingleOrDefault
. -
-
LINQ method syntax
-
Using methods like
Where
,Select
,OrderBy
,GroupBy
. -
Utilizing aggregation and other data manipulation methods.
Introduction to LINQ method chaining.
-
-
LINQ to objects
-
Performing various data manipulations using LINQ.
-
Practicing LINQ with arrays, lists, dictionaries, etc.
Querying in-memory collections using LINQ.
-
-
LINQ to XML and JSON
-
Loading and transforming XML/JSON data with LINQ queries.
Querying XML and JSON data using LINQ.
-
-
Advanced LINQ concepts
-
Writing custom LINQ extension methods.
-
Utilizing LINQ for functional-style programming.
Understanding expression trees in LINQ.
-
Introduction to LINQ
What is LINQ and why is it important?
Module 6: 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
Introduction to Version Control
Module 7: Database
-
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
What is MS SQL Server?
Module 8: ORM
-
Dapper
-
Basic CRUD operations
-
Mapping Data to Objects
-
Handling Transactions and Stored Procedure
-
Asynchronous Data Access
-
Advanced Features and Performance
Introduction to Dapper
-
-
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
Introduction to Entity Framework Core
-
Introduction to ORMs
Module 9: Introduction to ASP.NET Core
-
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
Basic of web development, client-server architecture (HTTP, HTTPS)
Module 10: Advanced ASP.NET Core Concepts
-
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
Middlewares
Module 11: Software 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
Introduction to design principles
Module 12: Software architecture and non-GoF Design Patterns
-
N-Tier Architecture
-
Unit of Work and Generic Repository Patterns
-
Implementing N-tier architecture
Introduction to Software architecture
Module 13: Testing and debugging
-
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
Introduction to Unit Testing
Module 14: Deployment and Continuous Integration
-
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
Publishing ASP.NET Core applications
Module 15: Advanced technologies and architecture in .NET
-
RabbitMQ and Messaging
-
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
Introduction to messaging and RabbitMQ
-
-
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
Introduction to Microservices architecture
-
-
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
Introduction to Clean Architecture
-
-
Docker and Containerization
-
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
Introduction to Docker and Containers
-
-
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
Introduction to Event Sourcing and CQRS
-
-
GraphQL and API Design
-
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
Introduction to GraphQL and Hot Chocolate
-
-
Real-time communication with 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
Introduction to real-time communication and SignalR
-
Introduction to advanced .NET technologies
Module: 16: Design Patterns
-
Creational Patterns
-
Factory Method Pattern
-
Abstract Factory Pattern
-
Builder Pattern
-
Prototype Pattern
Singleton Pattern
-
-
Structural Patterns
-
Bridge Pattern
-
Composite Pattern
-
Decorator Pattern
-
Facade Pattern
-
Flyweight Pattern
-
Proxy Pattern
Adapter Pattern
-
-
Behavioral Patterns
-
Command Pattern
-
Interpreter Pattern
-
Iterator Pattern
-
Mediator Pattern
-
Memento Pattern
-
Observer Pattern
-
State Pattern
-
Template Method Pattern
-
Visitor Pattern
Chain of Responsibility Pattern
-
Introduction to Design Patterns
Module 17: Desktop development in WPF
-
XAML (eXtensible Application Markup Language) basics.
-
Key differences between WPF and Windows Forms.
-
XAML and UI layout
-
Creating UI layouts with panels (StackPanel, Grid, DockPanel).
-
Styling and theming using XAML.
Understanding XAML syntax and structure.
-
-
Data binding in WPF
-
Two-way data binding and updates.
-
Data templates for visualizing data.
Implementing data binding using XAML.
-
-
WPF controls and user interface
-
Customizing control appearance using styles and templates.
-
Creating responsive and adaptive user interfaces.
Exploring built-in controls (TextBox, Button, ListBox, etc.).
-
-
Command binding and MVVM pattern
-
Introduction to the MVVM (Model-View-ViewModel) architectural pattern.
-
Separation of concerns with data binding and view-models.
Implementing command binding for user interactions.
-
-
Animations and visual effects
-
Using Visual States for complex UI behaviors.
-
Enhancing user experience with visual effects.
Adding animations to elements (transitions, storyboards).
-
-
Navigation and page management
-
Passing data between views during navigation.
-
Implementing a navigation framework.
Navigating between different views or pages.
-
-
Advanced styling and control templates
-
Styling controls using triggers and setters.
-
Incorporating vector graphics and icons.
Creating custom control templates.
-
-
Data validation and error handling
-
Displaying validation errors to users.
-
Handling exceptions gracefully.
Implementing data validation using validation rules.
-
-
Localization and globalization
-
Localizing user interface elements.
-
Handling different cultures and languages.
Designing applications for internationalization.
-
-
Printing and reporting
-
Configuring print settings and page layout.
-
Exporting content to various formats.
Generating and printing reports in WPF.
-
-
Advanced topics in WPF
-
Integrating multimedia (audio, video) into applications.
-
Data visualization using charts and graphs.
Working with 3D graphics and animations.
-
-
Deployment and distribution
-
Creating installer packages.
-
Ensuring updates and maintenance.
Packaging WPF applications for deployment.
-
Introduction to WPF
Overview of Windows Presentation Foundation.
Module 18: Mobile development in .NET MAUI
-
Advantages and use cases of .NET MAUI.
-
Setting up the development environment
-
Creating a new .NET MAUI project.
Installing .NET MAUI workload and tools.
-
-
Introduction XAML for .NET MAUI
-
Building user interfaces using XAML.
XAML basics: UI elements, attributes, namespaces.
-
-
UI components and controls
-
Layouts and containers: StackLayout, Grid, FlexLayout.
Using common controls: Button, Label, Entry, etc.
-
-
Component-based development
-
Implementing checkboxes and radio buttons.
-
Creating and customizing switches.
Adding and styling toggle buttons.
-
-
Data binding in .NET MAUI
-
Binding to properties in view models.
-
Handling data updates and synchronization.
Data binding basics using XAML.
-
-
Navigation and routing
-
Passing parameters between pages.
-
Handling navigation events and patterns.
Implementing navigation between pages/views.
-
-
Platform-specific customization
-
Using Dependency Injection for platform-specific code.
Leveraging platform-specific APIs and features.
-
-
Styling and theming
-
Theming for consistent UI across platforms.
Applying styles using XAML resources.
-
-
Handling device features
-
Using Essentials library for common device features.
Accessing device capabilities through APIs.
-
-
MVVM pattern with .NET MAUI
-
Binding view models to views.
-
Commands and view model interactions.
Understanding MVVM architecture.
-
-
Localization and globalization
-
Localizing user interface elements.
-
Handling date, time, and number formats.
Designing apps for multiple languages.
-
-
Working with media and multimedia
-
Integrating audio and video content.
Displaying images and icons.
-
-
Advanced .NET MAUI concepts
-
Custom controls and renderers.
-
Integrating third-party libraries using NuGet.
Adaptive UI for different screen sizes and orientations.
-
-
Debugging and testing
-
Writing unit tests for view models and logic.
Debugging .NET MAUI applications.
-
-
Deployment and distribution
-
Deploying to app stores: iOS, Android, Windows.
Preparing apps for deployment.
-
Introduction to .NET MAUI
Introduction to .NET MAUI and cross-platform development.
Module 19: Frontend development in Blazor
-
Advantages of using Blazor for frontend development.
-
Comparison between server-side Blazor and WebAssembly Blazor.
-
Setting up the development environment
-
Creating a new Blazor project.
Installing .NET SDK and Blazor tools.
-
-
Blazor components and pages
-
Creating and structuring Blazor pages.
-
Layouts, partial views, and reusable components.
Understanding Blazor components and Razor syntax.
-
-
Data binding and events
-
Handling user interactions with events.
-
Using form controls and input validation.
Two-way data binding using
@bind
directive. -
-
Routing and navigation
-
Navigating between different pages and views.
-
Passing parameters in routes.
Configuring routing in Blazor applications.
-
-
State management
-
Sharing state between components.
-
Using Cascading Parameters.
Managing component state with
@state
. -
-
Forms and validation
-
Client-side and server-side form validation.
-
Displaying validation errors to users.
Building forms with Blazor components.
-
-
Layouts and UI styling
-
Styling components with CSS and Bootstrap.
-
Customizing UI using themes and templates.
Creating consistent layouts using shared components
-
-
Dependency injection in Blazor
-
Registering services and injecting dependencies.
-
Implementing services for data access.
Understanding DI in Blazor applications.
-
-
Working with APIs and HTTP requests
-
Consuming RESTful APIs and handling responses.
-
Authentication and authorization with APIs.
Making HTTP requests using HttpClient.
-
-
Client-side interactivity
-
Incorporating third-party JavaScript libraries.
Adding JavaScript interop for client-side functionality.
-
-
Component lifecycle and hooks
-
Using lifecycle methods (
OnInitialized
,OnParametersSet
, etc.). -
Performing actions during component lifecycle.
Understanding the lifecycle of a Blazor component.
-
-
WebAssembly Blazor (Experimental)
-
Setting up and building WebAssembly applications.
-
Comparing WebAssembly and server-side Blazor.
Introduction to WebAssembly Blazor.
-
-
Testing and debugging
-
Debugging Blazor applications in the browser.
Writing unit tests for Blazor components and logic.
-
-
Deployment and hosting
-
Hosting options (Azure, AWS, GitHub Pages, etc.).
Publishing Blazor applications for deployment.
-
-
Advanced topics and best practices
-
Using Blazor with Progressive Web Apps (PWAs).
-
Real-time communication with SignalR and Blazor.
-
Performance optimization and lazy loading.
-
Integrating Blazor with authentication providers.
Advanced state management with Flux/Redux patterns.
-
Introduction to Blazor
What is Blazor and its core concepts.
Module 20: Building a real-world projects
-
Producing real-world package for Nuget
-
Contribution in real-world exist open-source projects
Delivering system (BARQ, Talabat)
Last updated
Dasturlash
Roadmap for .NET developers