با کمک کتاب Software Architecture by Example (معماری نرم افزار با مثال)، راهکارهای سیستمی را با استفاده از الگوها و شیوههای معماری مدرن طراحی کنید. این کتاب، روشهایی برای پاسخگو نگه داشتن یک سیستم، حتی زمانی که دائماً بهروزرسانی میشود، گسترش عملکرد سیستم بدون تغییر کد اصلی، روشهای نگهداری تاریخچه دادهها و طراحی یک سیستم تراکنشی توزیعشده را مورد بحث قرار میدهد.
این کتاب شما را در درک چگونگی طراحی یک راهکار نرم افزاری با استفاده از فرآیندها و سناریوهای مختلف معماری راهنمایی میکند. هر سناریو توضیح میدهد که چرا یک راهکار نرمافزاری برای حل یک مسئله معین مورد نیاز است یا خیر، و رویکردهای ممکن معماری برای حل مسئله را مورد بحث قرار میدهد. شما پیاده سازیهای خاص معماری نرم افزار را برای هر مورد همراه با رویکردهای مختلف برای دستیابی به راه حلها خواهید آموخت. هر فصل به عنوان یک نیازمندی دنیای واقعی از یک مشتری ساختار یافته است و فرآیندی را برای برآورده کردن آن نیازمندی توصیف میکند.
پس از مطالعه این کتاب، باید درک سطح بالایی از الگوهای معماری به کار رفته در کتاب داشته باشید و باید روشی برای نزدیک طراحی سیستم شدن داشته باشید.
مطالبی که در کتاب Software Architecture by Example: Using C# and .NET (معماری نرم افزار با مثال: با استفاده از سی شارپ و دات نت) یاد خواهید گرفت:
- درک اصول طراحی و ملاحضات برای مراحل مختلف توسعه نرم افزار
- ترجمه الگوها به نمونه کد ها
- ایجاد یک طرح برای نزدیک طراح سیستم شدن
- درک الگوهای معماری: CQRS، event sourcing، سیستمهای توزیع شده، تراکنشهای توزیع شده و معماری افزونه پذیر
این کتاب برای چه کسانی است؟
توسعه دهندگانی که مایل به ورود به معماری هستند و معماران نرم افزار جوان نیز این کتاب را مفید خواهند یافت.
Table of Contents:
- 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