Software architecture by example using C# and .NET
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 d...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
New York, NY :
Apress
[2022]
|
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009661634206719 |
Tabla de Contenidos:
- Intro
- 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 1
- Index.