Roadmap for .NET developers

Roadmap for .NET developers

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?

    1. Benefits of using LINQ for data querying.

  • LINQ query syntax

      Basic LINQ query structure.

    1. Using from, where, select, orderby, and groupby clauses.

    2. Filtering data using where clause.

  • Projection and transformation

      Projecting data using select clause.

    1. Working with anonymous types in projections.

    2. Transforming data into different shapes.

  • Sorting and grouping

      Sorting data using the orderby clause.

    1. Grouping data using the groupby clause.

    2. Aggregating data within groups.

  • Aggregation and aggregation methods

      Understanding aggregation functions like Sum, Average, Min, and Max.

    1. Using aggregation methods with LINQ queries.

    2. Applying aggregations on grouped data.

  • Additional data manipulation methods

      Using methods like All, Any, Contains, Distinct, Except, Intersect, Union.

    1. Applying these methods in LINQ queries for specific scenarios.

  • Paging and filtering methods

      Using methods like Take, TakeWhile, Skip, SkipWhile.

    1. Applying paging and filtering techniques to query subsets of data.

  • Joining data

      Using the Join method to combine data from multiple sources.

    1. Understanding different types of joins.

  • Accessing specific elements

      Using methods like ElementAt, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault.

    1. Retrieving specific elements from a sequence.

  • LINQ method syntax

      Introduction to LINQ method chaining.

    1. Using methods like Where, Select, OrderBy, GroupBy.

    2. Utilizing aggregation and other data manipulation methods.

  • LINQ to objects

      Querying in-memory collections using LINQ.

    1. Performing various data manipulations using LINQ.

    2. Practicing LINQ with arrays, lists, dictionaries, etc.

  • LINQ to XML and JSON

      Querying XML and JSON data using LINQ.

    1. Loading and transforming XML/JSON data with LINQ queries.

  • Advanced LINQ concepts

      Understanding expression trees in LINQ.

    1. Writing custom LINQ extension methods.

    2. 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

    1. Basic CRUD operations

    2. Mapping Data to Objects

    3. Handling Transactions and Stored Procedure

    4. Asynchronous Data Access

    5. Advanced Features and Performance

  • Entity Framework Core

      Introduction to Entity Framework Core

    1. Setting up data context and entities

    2. Basic CRUD operations with EF Core

    3. Querying data with LINQ and Projections

    4. Relationships and navigation properties

    5. Working with Migrations

    6. Seeding data and data annotations

    7. Advanced querying and filtering

    8. Working with transactions

    9. Performance optimization and caching

    10. 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

    1. RabbitMQ architecture and components

    2. Publish-subscribe model with RabbitMQ

    3. Direct messaging and Rrouting

    4. Topics and routing patterns

    5. Request-reply communication

    6. Message Acknowledgment and delivery guarantees

    7. Dead letter exchanges and message handling

    8. Message Serialization and best practices

    9. Managing RabbitMQ instances

    10. Monitoring and troubleshooting

    11. Real-world use cases and examples

  • Microservices Architecture

      Introduction to Microservices architecture

    1. Design principles for microservices

    2. Decomposing monolitcs into microservices

    3. Service communication and API gateways

    4. Service discovery and load balancing

    5. Data management in microservices

    6. Event-Driven microservices

    7. Microservices security and authentication

    8. Testing and deployment strategies

    9. Monitoring and observability

    10. Scaling microservices

    11. Real-world use cases and case studies

  • Clean Architecture

      Introduction to Clean Architecture

    1. Implementing the presentation layer

    2. Application services and use cases

    3. The Domain Layer and Domain entities

    4. Repository pattern and data persistence

    5. Dependency injection and infrastructure

    6. Decoupling with interfaces and Adapters

    7. Handling cross-cutting concerns

    8. Testing in Clean Architecture

    9. Achieving separation of concerns

    10. Real-world applications and case studies

  • Docker and Containerization

      Introduction to Docker and Containers

    1. Docker fundamentals and concepts

    2. Containerizing ASP.NET Core applications

    3. Managing application dependencies

    4. Configuration and environment variables

    5. Networking and communication

    6. Persistent Storage and data volumes

    7. Docker compose for multi-container applications

    8. Orchestration with Kubernetes

    9. Docker and CI/CD

    10. Security and best practices

    11. Debugging and troubleshooting

    12. Real-world use cases and case studies

  • Event Sourcing and CQRS

      Introduction to Event Sourcing and CQRS

    1. Event Sourcing fundamentals

    2. Implementing Event Sourcing in ASP.NET Core

    3. CQRS overview

    4. Implementing CQRS in ASP.NET Core

    5. Building the write side of CQRS

    6. Building the read side of CQRS

    7. Event store and data storage

    8. Scaling and eventual consistency

    9. Applying Event Sourcing and CQRS in real-world scenarios

    10. Pitfalls, challenges and best practices

    11. Event sourcing and CQRS with Advanced technologies

  • GraphQL and API Design

      Introduction to GraphQL and Hot Chocolate

    1. Defining GraphQL Schemas and Types

    2. Building queries and resolvers

    3. Mutations and Data modification

    4. Fragments and reusability

    5. Filtering and pagination

    6. Authentication and authorization

    7. Real-time communitcation with subscriptions

    8. Error handling and resilience

    9. Introspection and scheme stitching

  • Real-time communication with SignalR

      Introduction to real-time communication and SignalR

    1. SingalR fundamentals and concepts

    2. Building real-time applications with SignalR

    3. SignalR hubs and communications

    4. Real-time data visualization with SignalR

    5. Handling connection state and reconnection

    6. Scaling SignalR applications

    7. Authentication and authorization with SignalR

    8. Handling offline clients and state persistence

    9. Extending SignalR for advanced scenarios

    10. Real-world use cases and case studies

    11. Pitfalls, challenges and best practices

    12. Integrating SignalR with other technologies

Module: 16: Design Patterns

    Introduction to Design Patterns

  • Creational Patterns

      Singleton Pattern

    1. Factory Method Pattern

    2. Abstract Factory Pattern

    3. Builder Pattern

    4. Prototype Pattern

  • Structural Patterns

      Adapter Pattern

    1. Bridge Pattern

    2. Composite Pattern

    3. Decorator Pattern

    4. Facade Pattern

    5. Flyweight Pattern

    6. Proxy Pattern

  • Behavioral Patterns

      Chain of Responsibility Pattern

    1. Command Pattern

    2. Interpreter Pattern

    3. Iterator Pattern

    4. Mediator Pattern

    5. Memento Pattern

    6. Observer Pattern

    7. State Pattern

    8. Template Method Pattern

    9. Visitor Pattern

Module 17: Desktop development in WPF

    Introduction to WPF

      Overview of Windows Presentation Foundation.

    1. XAML (eXtensible Application Markup Language) basics.

    2. Key differences between WPF and Windows Forms.

  • XAML and UI layout

      Understanding XAML syntax and structure.

    1. Creating UI layouts with panels (StackPanel, Grid, DockPanel).

    2. Styling and theming using XAML.

  • Data binding in WPF

      Implementing data binding using XAML.

    1. Two-way data binding and updates.

    2. Data templates for visualizing data.

  • WPF controls and user interface

      Exploring built-in controls (TextBox, Button, ListBox, etc.).

    1. Customizing control appearance using styles and templates.

    2. Creating responsive and adaptive user interfaces.

  • Command binding and MVVM pattern

      Implementing command binding for user interactions.

    1. Introduction to the MVVM (Model-View-ViewModel) architectural pattern.

    2. Separation of concerns with data binding and view-models.

  • Animations and visual effects

      Adding animations to elements (transitions, storyboards).

    1. Using Visual States for complex UI behaviors.

    2. Enhancing user experience with visual effects.

  • Navigation and page management

      Navigating between different views or pages.

    1. Passing data between views during navigation.

    2. Implementing a navigation framework.

  • Advanced styling and control templates

      Creating custom control templates.

    1. Styling controls using triggers and setters.

    2. Incorporating vector graphics and icons.

  • Data validation and error handling

      Implementing data validation using validation rules.

    1. Displaying validation errors to users.

    2. Handling exceptions gracefully.

  • Localization and globalization

      Designing applications for internationalization.

    1. Localizing user interface elements.

    2. Handling different cultures and languages.

  • Printing and reporting

      Generating and printing reports in WPF.

    1. Configuring print settings and page layout.

    2. Exporting content to various formats.

  • Advanced topics in WPF

      Working with 3D graphics and animations.

    1. Integrating multimedia (audio, video) into applications.

    2. Data visualization using charts and graphs.

  • Deployment and distribution

      Packaging WPF applications for deployment.

    1. Creating installer packages.

    2. Ensuring updates and maintenance.

Module 18: Mobile development in .NET MAUI

    Introduction to .NET MAUI

      Introduction to .NET MAUI and cross-platform development.

    1. Advantages and use cases of .NET MAUI.

  • Setting up the development environment

      Installing .NET MAUI workload and tools.

    1. Creating a new .NET MAUI project.

  • Introduction XAML for .NET MAUI

      XAML basics: UI elements, attributes, namespaces.

    1. Building user interfaces using XAML.

  • UI components and controls

      Using common controls: Button, Label, Entry, etc.

    1. Layouts and containers: StackLayout, Grid, FlexLayout.

  • Component-based development

      Adding and styling toggle buttons.

    1. Implementing checkboxes and radio buttons.

    2. Creating and customizing switches.

  • Data binding in .NET MAUI

      Data binding basics using XAML.

    1. Binding to properties in view models.

    2. Handling data updates and synchronization.

  • Navigation and routing

      Implementing navigation between pages/views.

    1. Passing parameters between pages.

    2. Handling navigation events and patterns.

  • Platform-specific customization

      Leveraging platform-specific APIs and features.

    1. Using Dependency Injection for platform-specific code.

  • Styling and theming

      Applying styles using XAML resources.

    1. Theming for consistent UI across platforms.

  • Handling device features

      Accessing device capabilities through APIs.

    1. Using Essentials library for common device features.

  • MVVM pattern with .NET MAUI

      Understanding MVVM architecture.

    1. Binding view models to views.

    2. Commands and view model interactions.

  • Localization and globalization

      Designing apps for multiple languages.

    1. Localizing user interface elements.

    2. Handling date, time, and number formats.

  • Working with media and multimedia

      Displaying images and icons.

    1. Integrating audio and video content.

  • Advanced .NET MAUI concepts

      Adaptive UI for different screen sizes and orientations.

    1. Custom controls and renderers.

    2. Integrating third-party libraries using NuGet.

  • Debugging and testing

      Debugging .NET MAUI applications.

    1. Writing unit tests for view models and logic.

  • Deployment and distribution

      Preparing apps for deployment.

    1. Deploying to app stores: iOS, Android, Windows.

Module 19: Frontend development in Blazor

    Introduction to Blazor

      What is Blazor and its core concepts.

    1. Advantages of using Blazor for frontend development.

    2. Comparison between server-side Blazor and WebAssembly Blazor.

  • Setting up the development environment

      Installing .NET SDK and Blazor tools.

    1. Creating a new Blazor project.

  • Blazor components and pages

      Understanding Blazor components and Razor syntax.

    1. Creating and structuring Blazor pages.

    2. Layouts, partial views, and reusable components.

  • Data binding and events

      Two-way data binding using @bind directive.

    1. Handling user interactions with events.

    2. Using form controls and input validation.

  • Routing and navigation

      Configuring routing in Blazor applications.

    1. Navigating between different pages and views.

    2. Passing parameters in routes.

  • State management

      Managing component state with @state.

    1. Sharing state between components.

    2. Using Cascading Parameters.

  • Forms and validation

      Building forms with Blazor components.

    1. Client-side and server-side form validation.

    2. Displaying validation errors to users.

  • Layouts and UI styling

      Creating consistent layouts using shared components

    1. Styling components with CSS and Bootstrap.

    2. Customizing UI using themes and templates.

  • Dependency injection in Blazor

      Understanding DI in Blazor applications.

    1. Registering services and injecting dependencies.

    2. Implementing services for data access.

  • Working with APIs and HTTP requests

      Making HTTP requests using HttpClient.

    1. Consuming RESTful APIs and handling responses.

    2. Authentication and authorization with APIs.

  • Client-side interactivity

      Adding JavaScript interop for client-side functionality.

    1. Incorporating third-party JavaScript libraries.

  • Component lifecycle and hooks

      Understanding the lifecycle of a Blazor component.

    1. Using lifecycle methods (OnInitialized, OnParametersSet, etc.).

    2. Performing actions during component lifecycle.

  • WebAssembly Blazor (Experimental)

      Introduction to WebAssembly Blazor.

    1. Setting up and building WebAssembly applications.

    2. Comparing WebAssembly and server-side Blazor.

  • Testing and debugging

      Writing unit tests for Blazor components and logic.

    1. Debugging Blazor applications in the browser.

  • Deployment and hosting

      Publishing Blazor applications for deployment.

    1. Hosting options (Azure, AWS, GitHub Pages, etc.).

  • Advanced topics and best practices

      Advanced state management with Flux/Redux patterns.

    1. Using Blazor with Progressive Web Apps (PWAs).

    2. Real-time communication with SignalR and Blazor.

    3. Performance optimization and lazy loading.

    4. 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


Dasturlash
Roadmap for .NET developers