- What is it?
- Why should I learn about it?
- Official documentation
- Prerequirements?
- Building the E List Solution
- Basic TODO app
- Handling Background Jobs
- Creating an API
- RESTful - Web API
- Schedule Background Jobs
- Hangfire
- Building a Front-End to consume your API
- MVC
- Security
- Microservices
- Recommended libraries
.NET is a powerful, versatile developer platform that enables the creation of a wide range of applications. It is a free, cross-platform, open-source framework that can be used to build web, mobile, desktop, gaming, and IoT applications. One of the best ways to get started with .NET is through the .NET Incubator, which is designed to provide hands-on experience and real-world application development skills to aspiring developers. This training course covers the essential concepts of .NET programming, including C# language syntax, debugging techniques, and the use of .NET Core libraries. With the .NET Incubator training course, you can become proficient in creating high-quality, scalable applications using the .NET platform.
- What is .NET? - Read more...
.NET is a cross-platform framework, which means that developers can build applications for Windows, Linux, and macOS using the same codebase. This allows developers to target a wider range of platforms and reach a larger audience with their applications.
.NET has a large and active community of developers, which means that there are plenty of resources, tools, and libraries available for developers to use. This also means that developers can get help and support from the community when they run into problems or have questions.
.NET is designed to be fast and efficient, which makes it ideal for building high-performance applications. It also provides scalability features such as load balancing, which can help applications handle large amounts of traffic.
.NET is a relatively easy framework to learn and use, especially for developers who are already familiar with object-oriented programming languages such as Java or C++. The syntax is straightforward, and there are plenty of tutorials and resources available to help developers get started.
.NET can be used to build a wide range of applications, including web applications, desktop applications, mobile applications, games, and IoT applications. This makes it a versatile framework that can be used for almost any type of project.
Overall, developers love .NET because it is a powerful, flexible, and easy-to-use framework that allows them to build high-quality applications for a wide range of platforms and use cases.
Links to the official documentation:
- Fundamentals overview
- Learn C#
- .NET documentation - Learn to use .NET to create applications on any platform using C#, F#, and Visual Basic. Browse API reference, sample code, tutorials, and more..
- Microsoft learn for .NET - Learn how to build apps across multiple platforms with programming languages like C#, F#, and Visual Basic. Supported on Windows, Linux, and macOS, get started developing your next project with .NET today.
- .NET foundation - The .NET Foundation is an independent, non-profit organization established to support an innovative, commercially friendly, open-source ecosystem around the .NET platform.
- .NET Youtube
- .NET Prerequirements - Read more...
- Setup Read more...
In this section, we will begin developing projects to manage the new E List Solution.
The Entelectuals family, known for their focus on organization and efficiency, has launched a comprehensive training initiative alongside their venture into the digital world. This program is open to all family members who wish to contribute to the success of the family’s new project.
In the field of software engineering, a solid grasp of fundamental principles is crucial. To that end, the training program covers a wide range of topics, from core concepts to advanced techniques. It is designed to address real-world challenges faced by developers and to provide strategies for overcoming recurring issues, while promoting best practices across all teams.
To address the business requirements, we will begin by implementing the following:
- Expose your TODO items through a .NET Web API, which will be consumed by the front-end application. This API will manage a "tasks" entity.
- Create a simple front-end system using .NET MVC to allow users to manage their TODO list.
- Enable email notifications when a task is overdue.
flowchart TD;
A[Client] -->|Add Task| B(E List Website);
B --> C[E List Web API];
C -->|Email Notification| D[Notification Console];
C -->|DB| E[E List DB - MSSQL];
We will be starting with how to make a basic project and refactoring it into a solution following the single responsibility principle and how to set up a basic clean code architecture / layered architecture. This setup format will be used throughout the incubator.
Overview
In Phase 2, we will expand the foundational system to support operations for all entities. To improve scalability and maintainability, we will adopt the CQRS (Command Query Responsibility Segregation) pattern. Additionally, we will integrate the MediatR NuGet Package to simplify and decouple command and query responsibilities, allowing for better separation of concerns and more efficient processing across the system.
Overview
With Phase 2 successfully deployed, we are now ready to introduce several enhancements. In this phase, we will focus on improving the overall usability of the system by implementing advanced search and filtering capabilities.
Overview
Improve how data is displayed and validated
- Fluent Validation
- Filtering
- Searching
- Pagination
- Entity Framework Core
- Migrations
- Change Tracker API
- Lazy Loading, Eager Loading, Explicit Loading
- TPH, TPC, TPT
In Phase 4, we will focus on ensuring code quality by enforcing basic coding standards across the team. Adhering to these standards helps maintain consistency, readability, and long-term maintainability. Additionally, we will implement robust error handling throughout the system to improve reliability and make debugging easier.
Overview
-
Coding Standards
In Phase 5, we will enhance system performance by introducing caching and response compression. Caching will be implemented for scenarios where data retrieval involves content that does not change frequently, reducing redundant operations and improving load times. Additionally, response compression will be added to increase app responsiveness by reducing the size of data transferred between the server and clients that support it.
Increasing Performance
- Caching
- Compression
In Phase 6, we will implement an email notification system to alert users when they are late in completing a task on their TODO list. This feature ensures that users are promptly informed about overdue tasks, helping them stay on top of their responsibilities.
Increasing Performance
- Domain Events
- Simple Email Notification
- Schedule Background Jobs
- Hangfire
In Phase 7, we will integrate an API client, a set of tools and protocols that help streamline the development of web applications. By using an API client, we can avoid reinventing the wheel for common operations, significantly speeding up the development process and improving efficiency.
- Intro
- API Client
In Phase 8, we will develop a simple website using the MVC (Model-View-Controller) pattern. This site will interact with the API built in the previous phases to manage TODO items. By leveraging MVC, we can separate concerns effectively, providing a clean structure for the application while allowing users to interact with their tasks seamlessly.
Overview
We will be building a basic E List website for clients. To help us do this you can use E List Theme Template.
E List Website
With improved performance and a growing customer base, it’s crucial to secure the website to protect sensitive data and ensure user privacy. In Phase 9, we will implement key security measures, such as data encryption, secure authentication, and protection against common vulnerabilities, ensuring the system is robust and safeguarded against potential threats.
Overview
-
Mapperly: is a .NET source generator for generating object mappings.
Because Mapperly creates the mapping code at build time, there is minimal overhead at runtime. Even better, the generated code is perfectly readable, allowing you to verify the generated mapping code easily.
- RestSharp: REST stands for Representational State Transfer. RestSharp is the most popular HTTP client library for .NET. Using this library, C# developers can easily call remote resources over HTTP. It handles serializing the request body to JSON or XML and deserializing responses.
- Json.NET: Json.NET is a free and open-source library in .NET with over 1 billion NuGet downloads. Key features include:
- Serilog: Serilog message templates are a simple DSL extending .NET format strings. Parameters can be named, and their values are serialized as properties on the event for incredible searching and sorting flexibility.
- MediatR: A simple mediator implementation in .NET for in-process messaging with no dependencies.
- NUnit: Testing plays a major role in software development to ensure the correctness of the code.
- NSubstitute: Designed as a friendly substitute for .NET mocking libraries.
- Entity Framework Core: EF Core is a lightweight, extensible, open-source, and cross-platform version of the popular Entity Framework data access technology.
- FluentValidation: A .NET library for building strongly typed validation rules. It uses a Fluent interface and lambda expressions to define validation rules, maintaining clean domain code and integrating validation logic.
- FluentEmail: An open-source .NET library that integrates email-sending functionality into your .NET application in 10 minutes. It supports Razor for designing email templates and can send emails using SendGrid, MailGun, SMTP, and more.
- Hangfire: An open-source framework for creating, processing, and managing background work. It allows background jobs to run within the main process of your application without needing a dedicated service.
- QuestPDF: A modern open-source .NET library for PDF document generation, featuring a comprehensive layout engine powered by a concise and discoverable C# Fluent API.