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.
All software architecture decisions involve some sort of trade off. This books equips you with the means to make the best choices.
presents core DI patterns in plain C#, so you’ll fully understand how DI works, covers integration with standard Microsoft technologies like ASP.NET MVC, and teaches you to use DI frameworks like Structure Map, Castle Windsor, and Unity.
API Design Patterns lays out a set of design principles for building internal and public-facing APIs.
does a great job addressing and providing the relevant information needed to deliver effective web API’s. Spoiler alert, that audience is not exclusively software developers. The information in this book will be of immense value to a number of roles in a project. Business Analyst, Product Owners, Project Managers, Quality Assurance etc.
provide an excellent overview of the various architecture styles providing clear rationale behind the decisions made by each of them and why they are better in certain contexts.
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools.
Domain Driven Design is an excellent book that draws on the experience of Eric Evans, a software architect with over two decades of experience building large scale systems.
This book shows you the patterns that matter, when to use them and why, how to apply them to your own designs, and the object-oriented design principles on which they’re based. Join hundreds of thousands of developers who’ve improved their object-oriented design skills through Head First Design Patterns.
authoritative guide to Dapr, the distributed application runtime that works with new and existing programming languages alike. Written by the modelâ€™s creators, this introduction shows you how Dapr not only unifies stateless, stateful, and actor programming models but also runs everywhereâ€”in the cloud or on the edge.
Takes you through the process of building an event-driven microservice-powered organization. Youâ€™ll reconsider how data is produced, accessed, and propagated across your organization.
Developing Micro-Services is all the rage now, and there is certainly a lot of hype around the key concept. Possibly many teams are engaged in the process of splitting their monolithic applications down and re-implementing them as Microservices. The trouble is there are so many conflicting idea, philosophies, ideologies and misunderstandings of what the hell Microservices even are!
examines what it means to be a modern programmer. Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse
the definitive guide to the Linux and UNIX programming interfaceâ€”the interface employed by nearly every application that runs on a Linux or UNIX system.
Ten practical Essays from industry experts giving specific techniques for effective peer code review.
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.
Java by Comparison leads you step by step to new insights on good coding practice. Instructive examples compare the do’s and dont’s and make it easy for beginners to get the key points.
This is one of the most helpful software engineering books I’ve ever read. It is most useful for people who have some real world experience in .NET development.
This book discusses how to decompose complex software systems into modules that can be implemented relatively independently. The discussion first begins with fundamental problem in software design, managing complexity.