My Account Log in

2 options

Software Architecture with C# 12 And . NET 8 : Build Enterprise Applications Using Microservices, DevOps, EF Core, and Design Patterns for Azure / Gabriel Baptista and Francesco Abbruzzese.

EBSCOhost Academic eBook Collection (North America) Available online

View online

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Baptista, Gabriel, author.
Abbruzzese, Francesco, author.
Series:
Expert insight.
Expert insight
Language:
English
Subjects (All):
Software architecture.
C# (Computer program language).
Physical Description:
1 online resource (757 pages)
Edition:
Fourth edition.
Place of Publication:
Birmingham : Packt Publishing, [2024]
Biography/History:
Baptista Gabriel: Gabriel Baptista has been working with software development since the beginning of. NET. Today, his main contributions are managing numerous projects for retail and industry. He is an Azure Platform-as-a-Service (PaaS) solution specialist, teaches at Computing Engineering universities, and helps tech startups as a mentor. Abbruzzese Francesco: Francesco Abbruzzese dedicates his life to his two great passions: software and powerlifting. He is the author of the MVC Controls Toolkit and the Blazor Controls Toolkit libraries. He has contributed to the diffusion and evangelization of the Microsoft web stack since the first version of ASP. NET. His company, Mvcct Team, offers web applications, tools, and services for web technologies. He has moved from AI systems, where he implemented one of the first decision support systems for financial institutions, to top-10 video game titles such as Puma Street Soccer.
Summary:
Software Architecture with C# 12 and .NET 8 puts high-level design theory to work in a .NET context, teaching you the key skills, technologies, and best practices required to become an effective .NET software architect. This fourth edition puts emphasis on a case study that will bring your skills to life. You’ll learn how to choose between different architectures and technologies at each level of the stack. You’ll take an even closer look at Blazor and explore OpenTelemetry for observability, as well as a more practical dive into preparing .NET microservices for Kubernetes integration. Divided into three parts, this book starts with the fundamentals of software architecture, covering C# best practices, software domains, design patterns, DevOps principles for CI/CD, and more. The second part focuses on the technologies, from choosing data storage in the cloud to implementing frontend microservices and working with Serverless. You’ll learn about the main communication technologies used in microservices, such as REST API, gRPC, Azure Service Bus, and RabbitMQ. The final part takes you through a real-world case study where you’ll create software architecture for a travel agency. By the end of this book, you will be able to transform user requirements into technical needs and deliver highly scalable enterprise software architectures.
Contents:
Cover
Copyright
Contributots
Table of Contents
Preface
Chapter 1: Understanding the Importance of Software Architecture
What is software architecture?
Creating an Azure account
Software development process models
Reviewing traditional software development process models
Understanding the waterfall model principles
Analyzing the incremental model
Understanding agile software development process models
Scaling agile throughout a company
Gathering the right information to design high-quality software
Understanding the requirements gathering process
Detecting exact user needs
Analyzing requirements
Writing the specifications
Understanding the principles of scalability, robustness, security, and performance
Reviewing the specification
Using design techniques as a helpful tool
Design Thinking
Design Sprint
Common cases where the requirements gathering process impacts system results
Case 1 - my website is too slow to open that page!
Understanding backend caching
Applying asynchronous programming
Dealing with object allocation
Getting better database access
Case 2 - the user's needs are not properly implemented
Case 3 - the usability of the system does not meet the user's needs
Summary
Questions
Further reading
Chapter 2: Non-Functional Requirements
Technical requirements
Enabling scalability, availability, and resiliency with Azure and .NET 8
Creating a scalable web app in Azure
Vertical scaling (scaling up)
Horizontal scaling (scaling out)
Creating a scalable web app with .NET 8
Performance issues that need to be considered when programming in C#
String concatenation
Exceptions
Multithreading environments for better results - dos and don'ts
Software Usability: How to design effective user interfaces.
Designing fast selection logic
Selecting from a huge number of items
Interoperability with .NET 8
Tip - creating a service in Linux
Achieving security by design
List of practices for achieving a safe architecture
Authentication
Sensitive data
Web security
Chapter 3: Managing Requirements
Introducing Azure DevOps
Managing system requirements in Azure DevOps
Epic work items
Feature work items
Product Backlog items/User Story work items
Azure DevOps repository
Package feeds
Test Plans
Pipelines
Usage
Introducing GitHub projects
Chapter 4: Best Practices in Coding C# 12
The simpler your code, the better a programmer you are
Maintainability index
Cyclomatic complexity
Depth of inheritance
Class coupling
Number of lines of code
Using a version control system
Dealing with version control systems in teams
Writing safe code in C#
try-catch
try-finally and using
The IDisposable interface
.NET 8 tips and tricks for coding
Identifying well-written code
Understanding and applying tools that can evaluate C# code
Applying extension tools to analyze code
Applying SonarAnalyzer
Checking the final code after analysis
Chapter 5: Implementing Code Reusability in C# 12
Understanding the principles of code reusability
What code reuse is not
What code reuse is
Reusability in the development life cycle
Using .NET 8 for code reuse
Creating a reusable class library
How does C# deal with code reuse?
Object-oriented analysis
Generics
What if the code is not reusable?
I have my libraries. How do I promote them?.
Documenting .NET libraries using DocFX
Documenting a web API using Swagger
Chapter 6: Design Patterns and .NET 8 Implementation
Understanding design patterns and their purpose
Builder pattern
Factory pattern
Singleton pattern
Proxy pattern
Command pattern
Publisher/Subscriber pattern
Dependency Injection pattern
Understanding the design patterns available in .NET
Chapter 7: Understanding the Different Domains in Software Solutions
What are software domains?
Understanding DDD
Relationships among Bounded Contexts
Entities
Entity-level validation in .NET
DDD entities in .NET
Value objects
Aggregates
Domain events
Common DDD patterns and architectures
Classic layers architecture
Onion architecture
Repository pattern
Unit of work pattern
Classic repository pattern versus DDD aggregates
Command Query Responsibility Segregation (CQRS) pattern
Event sourcing
Command handlers and aggregate events
Chapter 8: Understanding DevOps Principles and CI/CD
Describing DevOps
Understanding DevOps principles
CI
CD
Risks and challenges when using CI/CD
Disabling continuous production deployment
Incomplete features
An unstable solution for testing
Continuous feedback
Tools to facilitate DevOps implementation
Azure DevOps
GitHub
Application Insights
Test and Feedback
Chapter 9: Testing Your Enterprise Application
Understanding unit and integration tests
Automating unit and integration tests
Writing automated (unit and integration) tests.
Acceptance tests: writing functional and performance tests
Understanding the basics of test-driven development
Functional tests
Behavior-Driven Development (BDD)
Defining C# test projects in Visual Studio
Using the xUnit test framework
Advanced test preparation and tear-down scenarios
Mocking interfaces with Moq
Automating functional tests in C#
Testing the staging application
Testing the staging application with Selenium
Testing a controlled application
Recording tests with Selenium IDE
Chapter 10: Deciding on the Best Cloud-Based Solution
Different software deployment models
IaaS and Azure opportunities
Security responsibility in IaaS
PaaS - a world of opportunities for developers
Web apps
SQL databases
Azure Cognitive Services
SaaS - just sign in and get started!
Understanding what serverless means
Comparing IaaS, PaaS, SaaS, and FaaS
Why are hybrid applications so useful in many cases?
Chapter 11: Applying a Microservice Architecture to Your Enterprise Application
What are microservices?
Microservices and the evolution of the concept of modules
Microservice design principles
The independence of design choices
Independence from the deployment environment
Loose coupling
No chained requests/responses
Containers and Docker
When do microservices help?
Layered architectures and microservices
The presentation layer
When is it worth considering microservice architectures?
How does .NET deal with microservices?
.NET communication facilities
Resilient task execution
Using generic hosts
Visual Studio support for Docker
Analyzing the Docker file
Publishing the project.
Azure and Visual Studio support for microservice orchestration
Which tools are needed to manage microservices?
Defining your private Docker registry in Azure
Chapter 12: How to Choose Your Data Storage in the Cloud
Understanding the different repositories for different purposes
Relational databases
NoSQL databases
Document-oriented database
Graph database
Key-value database
Wide-column store database
Redis
Azure storage accounts
Choosing between SQL and NoSQL document-oriented databases
Azure Cosmos DB - an opportunity to manage a multi-continental database
Creating an Azure Cosmos DB account
Creating an Azure Cosmos DB container
Accessing Azure Cosmos DB
Defining database consistency
The Cosmos DB client
The Cosmos DB Entity Framework Core provider
Chapter 13: Interacting with Data in C# - Entity Framework Core
Understanding ORM basics
Configuring Entity Framework Core
Defining DB entities
Defining the mapped collections
Completing the mapping configuration
Entity Framework Core migrations
Understanding stored procedures and direct SQL commands
Compiled models
Querying and updating data with Entity Framework Core
Returning data to the presentation layer
Issuing direct SQL commands
Handling transactions
Deploying your data layer
How data and domain layers communicate with other layers
Understanding Entity Framework Core advanced features
Chapter 14: Implementing Microservices with .NET
Communication and data serialization
Efficient and flexible binary serialization
The ProtoBuf language
ProtoBuf serialization.
Efficient and flexible RPC.
Notes:
Includes index.
Description based on publisher supplied metadata and other sources.
Description based on print version record.
ISBN:
9781805122456
1805122452
OCLC:
1424952059

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account