ebook img

An Atypical ASP.NET Core 6 Design Patterns Guide: A SOLID adventure into architectural principles and design patterns using .NET 6 and C# 10, 2nd Edition PDF

679 Pages·2022·16.09 MB·english
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview An Atypical ASP.NET Core 6 Design Patterns Guide: A SOLID adventure into architectural principles and design patterns using .NET 6 and C# 10, 2nd Edition

An Atypical ASP.NET Core 6 Design Patterns Guide Second Edition A SOLID adventure into architectural principles and design patterns using .NET 6 and C# 10 Carl-Hugo Marcotte BIRMINGHAM—MUMBAI An Atypical ASP.NET Core 6 Design Patterns Guide Second Edition Copyright © 2022 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Senior Publishing Product Manager: Suman Sen Acquisition Editor – Peer Reviews: Gaurav Gavas Project Editor: Amisha Vathare Content Development Editor: Edward Doxey Copy Editor: Safis Editing Technical Editor: Tejas Mhasvekar Proofreader: Safis Editing Indexer: Hemangini Bari Presentation Designer: Ganesh Bhadwalkar First published: December 2020 Second edition: March 2022 Production reference: 1220322 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-80324-984-1 www.packt.com Foreword After 10 years of abiding partnership with Carl-Hugo, I still remember the production support project that ushered this partnership in—the application’s accuracy and reliability were the overriding factors, providing the final product’s competitive edge. This project brought to light Carl-Hugo’s talent and his solid grasp of the .NET programming platform, which spurred me on to entrust him with more sensitive and crucial projects, laying the groundwork for our extended partnership. We started tackling projects that had been on hold for a long time, requiring deep analysis, and more importantly, acute imagination to put them across using .NET programs. Once again, Carl-Hugo’s knowledge and skills stood out, leading to robust and flexible .NET application designs. Carl-Hugo has consolidated his expertise by spending several years teaching programming. His book An Atypical ASP.NET Core 6 Design Patterns Guide, Second Edition unites that experience with his long- term expertise in the field. I highly recommend reading the book and putting it into practice as I’ve already had the opportunity to attend some of his training sessions and bear witness to this manual’s consistency and practical features. Abdelhamid Zebdi IT Director at Nortek Air Solutions (2007-2017), IT OPS Management at House of Commons of Canada (2017-present). Contributors About the author Carl-Hugo Marcotte has been developing, designing, and architecting web applications professionally since 2005, wrote his first line of code at about eight years old, and holds a bachelor’s degree in computer science. After working at a firm for a few years, he became an independent consultant, and developed projects of different sizes for SMEs and educational institutions. He is now a Senior Solutions Architect at Export Development Canada and is passionate about software architecture, C#, ASP.NET Core, and the Cloud. He loves to share his knowledge, which led him to teach programming, write a blog, and create, maintain, and contribute to multiple open-source projects. I want to thank everyone who supported me during my journey into the world of authoring, especially my other half and partner in life, Cathie, who is always there no matter the idea I pursue. About the reviewer Damir Arh has many years of experience with software development and maintenance; from complex enterprise software projects to modern consumer-oriented mobile applications. Although he has worked with a wide spectrum of different languages, his favorite language remains C#. In his drive towards better development processes, he is a proponent of test-driven development, continuous integration, and continuous deployment. He shares his knowledge by speaking at local user groups and conferences, blogging, and writing articles. He has received the prestigious Microsoft MVP award for developer technologies 10 times in a row. In his spare time, he’s always on the move: hiking, geocaching, running, and rock climbing. Table of Contents Preface xxiii Section 1: Principles and Methodologies Chapter 1: Introduction 1 What is a design pattern? ���������������������������������������������������������������������������������������������������������� 2 Anti-patterns and code smells ��������������������������������������������������������������������������������������������������� 3 Anti-patterns • 3 Anti-pattern – God Class • 3 Code smells • 4 Code smell – Control Freak • 4 Code smell – Long Methods • 4 Understanding the web – request/response ������������������������������������������������������������������������������� 5 Getting started with �NET ���������������������������������������������������������������������������������������������������������� 9 .NET SDK versus runtime • 9 .NET 5+ versus .NET Standard • 9 Visual Studio Code versus Visual Studio versus the command-line interface • 10 An overview of project templates • 11 Running and building your program • 12 Technical requirements • 12 Summary ������������������������������������������������������������������������������������������������������������������������������� 13 Questions ������������������������������������������������������������������������������������������������������������������������������� 13 Further reading ���������������������������������������������������������������������������������������������������������������������� 13 Chapter 2: Automated Testing 15 An overview of automated testing ������������������������������������������������������������������������������������������� 15 Unit testing • 16 Integration testing • 16 End-to-end testing • 17 Other types of tests • 17 Picking the right test style • 18 viii Table of Contents Testing approaches • 19 Refactoring • 20 Technical debt • 20 Testing �NET applications ������������������������������������������������������������������������������������������������������� 21 Creating an xUnit test project • 21 Getting started with xUnit • 21 Facts • 21 Assertions • 23 Theories • 25 Closing words • 30 Arrange, Act, Assert • 31 Organizing your tests • 31 Unit tests • 32 Integration tests • 34 ASP.NET Core integration testing • 35 Classic web application • 35 Minimal hosting • 37 Important testing principles ��������������������������������������������������������������������������������������������������� 39 Summary ������������������������������������������������������������������������������������������������������������������������������� 40 Questions ������������������������������������������������������������������������������������������������������������������������������� 40 Further reading ���������������������������������������������������������������������������������������������������������������������� 40 Chapter 3: Architectural Principles 41 The SOLID principles ������������������������������������������������������������������������������������������������������������� 41 Single responsibility principle (SRP) • 42 Project – BookStore • 42 What is an interface? • 52 Open/Closed principle (OCP) • 53 Project – IAttacker • 53 Liskov substitution principle (LSP) • 62 Project – HallOfFame • 64 Conclusion • 73 Interface segregation principle (ISP) • 73 Project – Ninja versus Pirate • 74 Project – Bookstore update • 77 Conclusion • 80 Dependency inversion principle (DIP) • 81 Table of Contents ix Direct dependency • 81 Inverted dependency • 81 Inverting subsystems using DIP • 82 Project – Dependency inversion • 83 Conclusion • 86 What’s next? • 86 Other important principles ����������������������������������������������������������������������������������������������������� 87 Separation of concerns • 87 Don’t repeat yourself (DRY) • 88 Keep it simple, stupid (KISS) • 89 Summary ������������������������������������������������������������������������������������������������������������������������������� 89 Questions ������������������������������������������������������������������������������������������������������������������������������� 90 Further reading ���������������������������������������������������������������������������������������������������������������������� 90 Section 2: Designing for ASP.NET Core Chapter 4: The MVC Pattern Using Razor 93 The Model View Controller design pattern ������������������������������������������������������������������������������� 93 Goal • 94 Design • 94 Anatomy of ASP.NET Core MVC • 95 Directory structure • 96 Controller • 97 Model • 98 View • 99 Default routing • 100 Conclusion • 101 The View Model design pattern ��������������������������������������������������������������������������������������������� 101 Goal • 101 Design • 102 Project – View models (a list of students) • 103 Conclusion • 105 Summary ����������������������������������������������������������������������������������������������������������������������������� 106 Questions ����������������������������������������������������������������������������������������������������������������������������� 106 Further reading �������������������������������������������������������������������������������������������������������������������� 106

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.