Development of a WebAPI software
Ανάπτυξη λογισμικού WebAPI
Master Thesis
Author
Mouzakitis, Theodoros
Μουζακίτης, Θεόδωρος
Date
2023-07Advisor
Alepis, EfthimiosΑλέπης, Ευθύμιος
View/ Open
Keywords
Web API ; Entity Framerwork ; Repository pattern ; Unit of work pattern ; CRUDAbstract
This paper presents the journey of a passionate developer tasked with designing and implementing an API for managing Customers, Orders, and Products. The objective was to create an efficient and robust solution adhering to modern software development principles and best practices. The developer employed a strong foundation in C# and comprehensive software design knowledge to construct the API.
Throughout the implementation process, industry-standard tools and patterns were prioritized to ensure scalability and maintainability. The Entity Framework was chosen as the persistence framework, and the repository pattern was implemented to separate application logic from data persistence concerns. Additionally, the unit of work pattern was incorporated to enhance data integrity and guarantee reliable operations on multiple entities within a single transaction.
The API was designed to fulfill project requirements, enabling CRUD operations for Products and handling scenarios where multiple Customers may share the same name. Comprehensive documentation was meticulously created using XML comments, providing easy access to the API's structure, usage, and available methods. Unit tests using the NUnit framework were integrated to verify the API's behavior, ensuring correctness, reliability, and adherence to specifications.
Modern software development principles, such as Domain-Driven Design (DDD) and Command Query Responsibility Segregation (CQRS) pattern, were embraced to focus on core domain logic and optimize performance and scalability.
Throughout the project, informed decisions based on assumptions and considerations were made to meet the API's objectives. Essential validations, including field length, Customer name requirements, and constraints on price and quantity, were implemented. Crucial aspects such as non-deletion of Products and restricted access to the Products controller for administrators were addressed.
In conclusion, this paper showcases the developer's technical skills, attention to detail, and commitment to delivering a high-quality solution. By incorporating industry-standard practices, patterns, and documentation, the API demonstrates proficiency in designing and implementing reliable and scalable systems for managing Customers, Orders, and Products.