ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب Software Architecture with C++ - Design modern systems using effective architecture concepts, design patterns, and techniques with C++20

دانلود کتاب معماری نرم افزار با C ++ - سیستم های مدرن را با استفاده از مفاهیم موثر معماری ، الگوهای طراحی و تکنیک ها با C ++ 20 طراحی کنید

Software Architecture with C++ - Design modern systems using effective architecture concepts, design patterns, and techniques with C++20

مشخصات کتاب

Software Architecture with C++ - Design modern systems using effective architecture concepts, design patterns, and techniques with C++20

دسته بندی: برنامه نویسی: زبان های برنامه نویسی
ویرایش: 1 
نویسندگان:   
سری:  
ISBN (شابک) : 9781838554590 
ناشر: Packt 
سال نشر: 2021 
تعداد صفحات: 522 
زبان: English 
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 5 مگابایت 

قیمت کتاب (تومان) : 41,000



کلمات کلیدی مربوط به کتاب معماری نرم افزار با C ++ - سیستم های مدرن را با استفاده از مفاهیم موثر معماری ، الگوهای طراحی و تکنیک ها با C ++ 20 طراحی کنید: است



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 11


در صورت تبدیل فایل کتاب Software Architecture with C++ - Design modern systems using effective architecture concepts, design patterns, and techniques with C++20 به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب معماری نرم افزار با C ++ - سیستم های مدرن را با استفاده از مفاهیم موثر معماری ، الگوهای طراحی و تکنیک ها با C ++ 20 طراحی کنید نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی در مورد کتاب معماری نرم افزار با C ++ - سیستم های مدرن را با استفاده از مفاهیم موثر معماری ، الگوهای طراحی و تکنیک ها با C ++ 20 طراحی کنید

با درک معماری‌هایی مانند میکروسرویس‌ها، DevOps و Cloud-native با استفاده از استانداردها و ویژگی‌های مدرن C++، الزامات تجاری را در زیرساخت‌های فناوری اطلاعات اعمال کنید و محصولی با کیفیت بالا ارائه دهید. ------------------ ویژگی های کلیدی برنامه های کاربردی مقیاس پذیر در مقیاس بزرگ را با زبان برنامه نویسی C++ طراحی کنید راه حل های نرم افزاری معمار در یک محیط مبتنی بر ابر با یکپارچه سازی مداوم و تحویل مداوم (CI/CD) با استفاده از الگوهای طراحی، ویژگی های زبان و ابزارهای مفید به اهداف معماری دست یابید --------------------------- توضیحات کتاب معماری نرم افزار به طراحی سطح بالا برنامه های پیچیده اشاره دارد. درست مانند زبان هایی که ما استفاده می کنیم در حال تکامل است. C++ مدرن به توسعه دهندگان اجازه می دهد تا برنامه های با کارایی بالا را به زبانی سطح بالا بنویسند بدون اینکه خوانایی و قابلیت نگهداری را به خطر بیندازند. اگر با C++ مدرن کار می‌کنید، این راهنمای عملی به شما کمک می‌کند تا دانش خود را به کار ببندید و برنامه‌های توزیع‌شده و در مقیاس بزرگ طراحی کنید. شما با سرعت بخشیدن به مفاهیم معماری، از جمله الگوهای تثبیت شده و روندهای رو به رشد، شروع خواهید کرد. سپس این کتاب توضیح می دهد که معماری نرم افزار چیست و به شما کمک می کند تا اجزای آن را کشف کنید. در مرحله بعد، مفاهیم طراحی مربوط به معماری برنامه ها و الگوهای توسعه نرم افزار را کشف خواهید کرد، قبل از اینکه به یادگیری نحوه ساخت، بسته بندی، ادغام و استقرار اجزای خود بپردازید. در فصل های پایانی، کیفیت های مختلف معماری مانند قابلیت نگهداری، قابلیت استفاده مجدد، آزمایش پذیری، عملکرد، مقیاس پذیری و امنیت را بررسی خواهید کرد. در نهایت، یک نمای کلی از سیستم‌های توزیع‌شده، مانند معماری سرویس‌محور، میکروسرویس‌ها، و Cloud-native دریافت خواهید کرد و نحوه استفاده از آنها را در توسعه برنامه‌ها درک خواهید کرد. تا پایان این کتاب، می‌توانید خدمات توزیع‌شده را با استفاده از C++ مدرن و ابزارهای مرتبط برای ارائه راه‌حل‌هایی مطابق با نیاز مشتریان خود بسازید. ---------------------------- آنچه خواهید آموخت آشنایی با نحوه اعمال اصول معماری نرم افزار الگوهای طراحی و بهترین شیوه ها را برای رسیدن به اهداف معماری خود به کار ببرید با استفاده از آخرین ویژگی های C++ کدی زیبا، ایمن و کارآمد بنویسید برنامه هایی بسازید که نگهداری و استقرار آنها آسان باشد رویکردهای مختلف معماری را کاوش کنید و یاد بگیرید که طبق نیاز خود از آنها استفاده کنید توسعه و عملیات را با استفاده از کانتینرهای برنامه ساده کنید کشف تکنیک های مختلف برای حل مشکلات رایج در طراحی و توسعه نرم افزار -------------------------------- این کتاب برای چه کسی است این کتاب برنامه نویسی C++ معماری نرم افزار برای توسعه دهندگان باتجربه C++ است که به دنبال تبدیل شدن به معمار نرم افزار هستند یا علاقه مند به توسعه برنامه های کاربردی درجه یک سازمانی هستند.


توضیحاتی درمورد کتاب به خارجی

Apply business requirements to IT infrastructure and deliver a high-quality product by understanding architectures such as microservices, DevOps, and cloud-native using modern C++ standards and features ------------------ Key Features Design scalable large-scale applications with the C++ programming language Architect software solutions in a cloud-based environment with continuous integration and continuous delivery (CI/CD) Achieve architectural goals by leveraging design patterns, language features, and useful tools --------------------------- Book Description Software architecture refers to the high-level design of complex applications. It is evolving just like the languages we use. Modern C++ allows developers to write high-performance apps in a high-level language without sacrificing readability and maintainability. If you're working with modern C++, this practical guide will help you put your knowledge to work and design distributed, large-scale apps. You'll start by getting up to speed with architectural concepts, including established patterns and rising trends. The book will then explain what software architecture is and help you explore its components. Next, you'll discover the design concepts involved in application architecture and the patterns in software development, before going on to learn how to build, package, integrate, and deploy your components. In the concluding chapters, you'll explore different architectural qualities, such as maintainability, reusability, testability, performance, scalability, and security. Finally, you will get an overview of distributed systems, such as service-oriented architecture, microservices, and cloud-native, and understand how to apply them in application development. By the end of this book, you'll be able to build distributed services using modern C++ and associated tools to deliver solutions as per your clients' requirements. ---------------------------- What you will learn Understand how to apply the principles of software architecture Apply design patterns and best practices to meet your architectural goals Write elegant, safe, and performant code using the latest C++ features Build applications that are easy to maintain and deploy Explore the different architectural approaches and learn to apply them as per your requirement Simplify development and operations using application containers Discover various techniques to solve common problems in software design and development --------------------------------- Who this book is for This software architecture C++ programming book is for experienced C++ developers who are looking to become software architects or are interested in developing enterprise-grade applications.



فهرست مطالب

Cover
Title Page
Copyrights
Dedication
Contributors
Table of Contents
Preface
Section 1: Concepts and Components of Software Architecture
Chapter 1: Importance of Software Architecture and Principles of Great Design
	Technical requirements
	Understanding software architecture
		Different ways to look at architecture
	Learning the importance of proper architecture
		Software decay
		Accidental architecture
	Exploring the fundamentals of good architecture
		Architecture context
		Stakeholders
		Business and technical environments
	Developing architecture using Agile principles
		Domain-driven design
	The philosophy of C++
	Following the SOLID and DRY principles
		Single responsibility principle
		Open-closed principle
		Liskov substitution principle
		Interface segregation principle
		Dependency inversion principle
		The DRY rule
	Coupling and cohesion
		Coupling
		Cohesion
	Summary
	Questions
	Further reading
Chapter 2: Architectural Styles
	Technical requirements
	Deciding between stateful and stateless approaches
		Stateless and stateful services
	Understanding monoliths—why they should be avoided, and recognizing exceptions
	Understanding services and microservices
		Microservices
			Benefits and disadvantages of microservices
			Characteristics of microservices
			Microservices and other architectural styles
			Scaling microservices
			Transitioning to microservices
	Exploring event-based architecture
		Common event-based topologies
		Event sourcing
	Understanding layered architecture
		Backends for Frontends
	Learning module-based architecture
	Summary
	Questions
	Further reading
Chapter 3: Functional and Nonfunctional Requirements
	Technical requirements documentation from sources, you must have
	Understanding the types of requirements
		Functional requirements
		Nonfunctional requirements
			Quality attributes
			Constraints
	Recognizing architecturally significant requirements
		Indicators of architectural significance
		Hindrances in recognizing ASRs and how to deal with them
	Gathering requirements from various sources
		Knowing the context
		Knowing existing documentation
		Knowing your stakeholders
		Gathering requirements from stakeholders
	Documenting requirements
		Documenting the context
		Documenting the scope
		Documenting functional requirements
		Documenting nonfunctional requirements
		Managing the version history of your documentation
		Documenting requirements in Agile projects 
		Other sections
	Documenting architecture
		Understanding the 4+1 model
		Understanding the C4 model
		Documenting architecture in Agile projects
	Choosing the right views to document
		Functional view
		Information view
		Concurrency view
		Development view
		Deployment and operational views
	Generating documentation
		Generating requirements documentation
		Generating diagrams from code
		Generating (API) documentation from code
	Summary
	Questions
	Further reading
Section 2: The Design and Development of C++ Software
Chapter 4: Architectural and System Design
	Technical requirements
	Understanding the peculiarities of distributed systems
		Different service models and when to use them
			On-premises model
			Infrastructure as a Service (IaaS) model
			Platform as a Service (PaaS) model
			Software as a Service (SaaS) model
			Function as a Service (FaaS) model and serverless architecture 
		Avoiding the fallacies of distributed computing
			The network is reliable
			Latency is zero
			Bandwidth is infinite
			The network is secure
			Topology doesn't change
			There is one administrator
			Transport cost is zero
			The network is homogeneous
		CAP theorem and eventual consistency
			Sagas and compensating transactions
				Choreography-based sagas
				Orchestration-based sagas
	Making your system fault tolerant and available
		Calculating your system's availability
		Building fault-tolerant systems
			Redundancy
				Leader election
				Consensus
			Replication
				Master-slave replication
				Multi-master replication
			Queue-based load leveling
			Back pressure
		Detecting faults
			Sidecar design pattern
			Heartbeat mechanism
			Leaky bucket counter
		Minimizing the impact of faults
			Retrying the call
			Avoiding cascading failures
				Circuit breaker
				Bulkhead
			Geodes
	Integrating your system
		Pipes and filters pattern
		Competing consumers
		Transitioning from legacy systems
			Anti-corruption layer
			Strangler pattern
	Achieving performance at scale
		CQRS and event sourcing
			Command-query responsibility segregation
			Command-query separation
			Event sourcing
		Caching
			Updating caches
				Write-through approach
				Write-behind approach
				Cache-aside
	Deploying your system
		The sidecar pattern
			Deploying a service with tracing and a reverse proxy using Envoy
		Zero-downtime deployments
			Blue-green deployments
			Canary releases
		External configuration store
	Managing your APIs
		API gateways
	Summary
	Questions
	Further reading
Chapter 5: Leveraging C++ Language Features
	Technical requirements
	Designing great APIs
		Leveraging RAII
		Specifying the interfaces of containers in C++
		Using pointers in interfaces
		Specifying preconditions and postconditions
		Leveraging inline namespaces
		Leveraging std::optional
			Optional function parameters
			Optional function return values
			Optional class members
	Writing declarative code
		Showcasing a featured items gallery
		Introducing standard ranges
			Reducing memory overhead and increasing performance using ranges
	Moving computations at compile time
		Helping the compiler help you by using const
	Leveraging the power of safe types
		Constraining template parameters
	Writing modular C++
	Summary
	Questions
	Further reading
Chapter 6: Design Patterns and C++
	Technical requirements
	Writing idiomatic C++
		Automating scope exit actions using RAII guards
		Managing copyability and movability
			Implementing non-copyable types
			Adhering to the rules of three and five
			Adhering to the rule of zero
		Using hidden friends
		Providing exception safety using the copy-and-swap idiom
		Writing niebloids
		Policy-based design idiom
	Curiously recurring template pattern
		Knowing when to use dynamic versus static polymorphism
		Implementing static polymorphism
		Interlude – using type erasure
	Creating objects
		Using factories
			Using factory methods
			Using factory functions
			Choosing the return type of a factory
			Using factory classes
		Using builders
			Building with composites and prototypes
	Tracking state and visiting objects in C++
	Dealing with memory efficiently
		Reducing dynamic allocations using SSO/SOO
		Saving memory by herding COWs
		Leveraging polymorphic allocators
			Using memory arenas
			Using the monotonic memory resource
			Using pool resources
			Writing your own memory resource
			Ensuring there are no unexpected allocations
			Winking out memory
	Summary
	Questions
	Further reading
Chapter 7: Building and Packaging
	Technical requirements
	Getting the most out of compilers
		Using multiple compilers
		Reducing build times
			Using a fast compiler
			Rethinking templates
			Leveraging tools
		Finding potential code issues
		Using compiler-centric tools
	Abstracting the build process
		Introducing CMake
			Creating CMake projects
			Distinguishing between CMake directory variables
			Specifying CMake targets
			Specifying the output directories
		Using generator expressions
	Using external modules
		Fetching dependencies
		Using find scripts
		Writing find scripts
		Using the Conan package manager
			Preparing Conan profiles
			Specifying Conan dependencies
			Installing Conan dependencies
			Using Conan targets from CMake
		Adding tests
	Reusing quality code
		Installing
		Exporting
		Using CPack
	Packaging using Conan
		Creating the conanfile.py script
		Testing our Conan package
		Adding Conan packaging code to our CMakeLists
	Summary
	Questions
	Further reading
Section 3: Architectural Quality Attributes
Chapter 8: Writing Testable Code
	Technical requirements
	Why do you test code?
		The testing pyramid
		Non-functional testing
		Regression testing
		Root cause analysis
		The groundwork for further improvement
	Introducing testing frameworks
		GTest examples
		Catch2 examples
		CppUnit examples
		Doctest examples
		Testing compile-time code
	Understanding mocks and fakes
		Different test doubles
		Other uses for test doubles
		Writing test doubles
			GoogleMock example
			Trompeloeil example
	Test-driven class design
		When tests and class design clash
		Defensive programming
		The boring refrain – write your tests first
	Automating tests for continuous integration/continuous deployment
		Testing the infrastructure
		Testing with Serverspec
		Testing with Testinfra
		Testing with Goss
	Summary
	Questions
	Further reading
Chapter 9: Continuous Integration and Continuous Deployment
	Technical requirements
	Understanding CI
		Release early, release often
		Merits of CI
		Gating mechanism
		Implementing the pipeline with GitLab
	Reviewing code changes
		Automated gating mechanisms
		Code review – the manual gating mechanism
		Different approaches to a code review
		Using pull requests (merge requests) for a code review
	Exploring test-driven automation
		Behavior-driven development
		Writing tests for CI
		Continuous testing
	Managing deployment as code
		Using Ansible
		How Ansible fits with the CI/CD pipeline
		Using components to create deployment code
	Building deployment code
	Building a CD pipeline
		Continuous deployment and continuous delivery
		Building an example CD pipeline
	Using immutable infrastructure
		What is immutable infrastructure?
		The benefits of immutable infrastructure
		Building instance images with Packer
		Orchestrating the infrastructure with Terraform
	Summary
	Questions
	Further reading
Chapter 10: Security in Code and Deployment
	Technical requirements
	Checking the code security
		Security-conscious design
			Making interfaces easy to use and hard to misuse
			Enabling automatic resource management
			Drawbacks of concurrency and how to deal with it
		Secure coding, the guidelines, and GSL
		Defensive coding, validating everything
		The most common vulnerabilities
	Checking whether the dependencies are secure
		Common Vulnerabilities and Exposures
		Automated scanners
		Automated dependency upgrade management
	Hardening your code
		Security-oriented memory allocator
		Automated checks
			Compiler warnings
			Static analysis
			Dynamic analysis
				Valgrind and Application Verifier
				Sanitizers
				Fuzz-testing
		Process isolation and sandboxing
	Hardening your environment
		Static versus dynamic linking
		Address space layout randomization
		DevSecOps
	Summary
	Questions
	Further reading
Chapter 11: Performance
	Technical requirements
	Measuring performance
		Performing accurate and meaningful measurements
		Leveraging different types of measuring tools
		Using microbenchmarks
			Setting up Google Benchmark
			Writing your first microbenchmark
			Passing arbitrary arguments to a microbenchmark
			Passing numeric arguments to a microbenchmark
				Generating the passed arguments programmatically
			Choosing what to microbenchmark and optimize
			Creating performance tests using benchmarks
		Profiling
			Choosing the type of profiler to use
			Preparing the profiler and processing the results
			Analyzing the results
		Tracing
			Correlation IDs
	Helping the compiler generate performant code
		Optimizing whole programs
		Optimizing based on real-world usage patterns
		Writing cache-friendly code
		Designing your code with data in mind
	Parallelizing computations
		Understanding the differences between threads and processes
		Using the standard parallel algorithms
		Parallelizing computations using OpenMP and MPI
	Using coroutines
		Distinguishing between cppcoro utilities
		Looking under the hood of awaitables and coroutines
	Summary
	Questions
	Further reading
Section 4: Cloud-Native Design Principles
Chapter 12: Service-Oriented Architecture
	Technical requirements
	Understanding Service-Oriented Arcitecture
		Implementation approaches
			Enterprise Service Bus
			Web services
				Benefits and disadvantages of web services
			Messaging and streaming
				Message queues
				Message brokers
			Cloud computing
			Microservices
		Benefits of Service-Oriented Architecture
		Challenges with SOA
	Adopting messaging principles
		Low-overhead messaging systems
			MQTT
			ZeroMQ
		Brokered messaging systems
	Using web services
		Tools for debugging web services
		XML-based web services
			XML-RPC
				Relationship to SOAP
			SOAP
				WSDL
				UDDI
				SOAP libraries
		JSON-based web services
			JSON-RPC
		REpresentational State Transfer (REST)
			Description languages
				OpenAPI
				RAML
				API Blueprint
				RSDL
			Hypermedia as the Engine of Application State
			REST in C++
		GraphQL
	Leveraging managed services and cloud providers
		Cloud computing as an extension of SOA
			Using API calls directly
			Using API calls through a CLI tool
			Using third-party tools that interact with the Cloud API
			Accessing the cloud API
			Using the cloud CLI
			Using tools that interact with the Cloud API
		Cloud-native architecture
	Summary
	Questions
	Further reading
Chapter 13: Designing Microservices
	Technical requirements
	Diving into microservices
		The benefits of microservices
			Modularity
			Scalability
			Flexibility
			Integration with legacy systems
			Distributed development
		Disadvantages of microservices
			Reliance on a mature DevOps approach
			Harder to debug
			Additional overhead
		Design patterns for microservices
			Decomposition patterns
				Decomposition by business capability
				Decomposition by subdomain
			Database per service pattern
			Deployment strategies
				Single service per host
				Multiple services per host
			Observability patterns
				Log aggregation
				Application metrics
				Distributed tracing
				Health check APIs
	Building microservices
		Outsourcing memory management
			Memcached
			Redis
			Which in-memory cache is better?
		Outsourcing storage
		Outsourcing computing
	Observing microservices
		Logging
			Logging with microservices
			Logging in C++ with spdlog
			Unified logging layer
				Logstash
				Filebeat
				Fluentd
				Fluent Bit
				Vector
			Log aggregation
				Elasticsearch
				Loki
			Log visualization
				Kibana
				Grafana
		Monitoring
		Tracing
			OpenTracing
			Jaeger
			OpenZipkin
		Integrated observability solutions
	Connecting microservices
		Application programming interfaces (APIs)
		Remote procedure calls
			Apache Thrift
			gRPC
	Scaling microservices
		Scaling a single service per host deployment
		Scaling multiple services per host deployment
	Summary
	Questions
	Further reading
Chapter 14: Containers
	Technical requirements
	Reintroducing containers
		Exploring the container types
		The rise of microservices
		Choosing when to use containers
			The benefits of containers
			The disadvantages of containers
	Building containers
		Container images explained
		Using Dockerfiles to build an application
		Naming and distributing images
		Compiled applications and containers
		Targeting multiple architectures with manifests
		Alternative ways to build application containers
			Buildah
			Ansible-bender
			Others
		Integrating containers with CMake
			Configuring the Dockerfile with CMake
			Integrating containers with CMake
	Testing and integrating containers
		Runtime libraries inside containers
		Alternative container runtimes
	Understanding container orchestration
		Self-hosted solutions
			Kubernetes
			Docker Swarm
			Nomad
			OpenShift
		Managed services
			AWS ECS
			AWS Fargate
			Azure Service Fabric
	Summary
	Questions
	Further reading
Chapter 15: Cloud-Native Design
	Technical requirements
	Understanding cloud-native
		Cloud-Native Computing Foundation
		Cloud as an operating system
			Load balancing and service discovery
				Reverse proxies
				Service Discovery
	Using Kubernetes to orchestrate cloud-native workloads
		Kubernetes structure
			Control plane
			Worker nodes
		Possible approaches to deploying Kubernetes
		Understanding the Kubernetes concepts
			Declarative approach
		Kubernetes networking
			Container-to-container communication
			Pod-to-pod communication
			Pod-to-service communication
			External-to-internal communication
		When is using Kubernetes a good idea?
	Observability in distributed systems
		How tracing differs from logging
		Choosing a tracing solution
			Jaeger and OpenTracing
			Zipkin
		Instrumenting an application with OpenTracing
	Connecting services with a service mesh
		Introducing a service mesh
		Service mesh solutions
			Istio
				Envoy
			Linkerd
			Consul service mesh
	Going GitOps
		The principles of GitOps
			Declarative description
			The system's state versioned in Git
			Auditable
			Integrated with established components
			Configuration drift prevention
		The benefits of GitOps
			Increased productivity
			Better developer experience
			Higher stability and reliability
			Improved security
		GitOps tools
			FluxCD
			ArgoCD
			Jenkins X
	Summary
	Questions
	Further reading
Appendix A
Assessments
About Packt
Other Books You May Enjoy
Index




نظرات کاربران