Software Architecture by Example: Using C# and .NET
- Length: 229 pages
- Edition: 1
- Language: English
- Publisher: Apress
- Publication Date: 2022-05-13
- ISBN-10: 1484279891
- ISBN-13: 9781484279892
- Sales Rank: #7244358 (See Top 100 Books)
Design system solutions using modern architectural patterns and practices. This book discusses methods to keep a system responsive, even when it is being constantly updated, extending a system’s functionality without changing the core code, methods of maintaining data history, and designing a distributed transactional system.
This book will guide you in understanding how a software solution is designed using different architectural processes and scenarios. Each scenario explains if and why a software solution is required to resolve a given issue, and discusses possible architectural approaches to solve the problem. You will learn specific implementations of software architecture for each case along with different approaches to achieve the solutions. Each chapter is structured as a real-world requirement from a client and describes a process to meet that requirement.
After reading this book, you should have a high-level understanding of the architectural patterns used in the book, and you should have a methodology for approaching system design.
What You Will Learn
- Understand design principles and considerations for various stages of software development
- Translate patterns into code samples
- Create a blueprint for approaching system design
- Understand architectural patterns: CQRS, event sourcing, distributed systems, distributed transactions, and plug-in architecture
Who This Book Is For
Developers who wish to move into architecture, and junior software architects also will find the book useful
Table of Contents About the Author About the Technical Reviewer Acknowledgments Introduction Foreword Chapter 1: The Ticket Sales Problem Background Requirements Options Manual Process Existing System Existing System Considerations Minimum Viable Product Target Architecture How to Deal with High Throughput Widening the Funnel Server Service Multiple Funnels Message Queues Message Brokers Separation of Concerns Target Architecture Diagram Proxy A Note on Cloud Vendors Why Cloud? Examples External APIs Getting Ticket Availability Ordering a Ticket Adding a Message to a Queue Getting a Response from the Queue Summary Chapter 2: The Cash Desk Problem Background Requirements Options Manual Process Target Architecture Audit Event Sourcing Immutable Events How to Change Immutable Events Projections and Snapshots Aggregates CQRS Target Architecture Diagram Examples Persisting Events to Memory Persisting Events to Disk Save Load Writing to Files Summary Chapter 3: The Travel Agent Problem Background Requirements Options Manual Process Transactions ACID Atomic Consistent Isolation Durable Distributed Transactions Possible Scenarios The hospital has no available appointments on that day The space flight provider’s system crashes after receiving a prepare message but before responding The hotel’s system crashes after receiving a commit message and committing the transaction but before acknowledging The transaction coordinator crashes after sending all the prepare messages but before receiving any confirmations Distributed Transaction with Timeout Book and Cancel Hold a Booking Advanced Purchase Business Decision Target Architecture Stateful Service Distributed Service Target Architecture Diagram Examples Project Structure Service Bus Configuration Coordinator Summary Chapter 4: The Social Media Problem Background Requirements Options Manual Process CQRS Benefits Drawbacks Consistency Models Strong or Strict Consistency Sequential or Causal Consistency Weak or Eventual Consistency Target Architecture Examples Schema Creation Updating the Database Update a Local Version of the Database Directly Call a Web Service to Update the Database Checking the Data Web Service Accessing MongoDB The Client Process Data Service Summary Chapter 5: The Admin Application Problem Background Requirements Options Manual Process SOLID Single Responsibility Testability Code Churn Software Resilience A Better Way Open-Closed Inheritance Polymorphism Liskov Substitution Interface Segregation Principle Dependency Inversion Principle Inversion of Control Methods of Extending Software Hooks Messages Mediator Injection Security Target Architecture Examples Basic Functionality Extensibility Custom Functionality Summary Chapter 6: The Travel Rep Problem Background Requirements Options Manual Process Caching Sidecar Pattern Ambassador Pattern Microservices and Containers Target Architecture Containers Examples Project Structure TravelRep.CentralApi Chaos Monkey TravelRep.App TravelRep.Ambassador Hangfire Enqueue and Schedule Persistence and Configuration Hangfire Dashboard Containers Docker Compose Displaying a UI Contacting the Host Machine from a Container host.docker.internal Configuring SSL/TLS mkcert Step 1. Install mkcert Step 2. Install the Trusted Root Certificate Step 3. Create a Certificate Step 4. Copy the Certificate into the Central Service API Step 5. Copy the Certificates to the Ambassador API Durability Summary Appendix A: Technical Appendix Chapter Index
Donate to keep this site alive
How to download source code?
1. Go to: https://github.com/Apress
2. In the Find a repository… box, search the book title: Software Architecture by Example: Using C# and .NET
, sometime you may not get the results, please search the main title.
3. Click the book title in the search results.
3. Click Code to download.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.