Messaging Conceptual Fundamentals
Message-centric systems are naturally flexible, since they focus on the communication patterns of a system instead of concrete behaviors, they are loosely coupled, and they expose the information needed to trace data flows and replace or enrich behavioral components of the system. Building well-designed message-driven systems requires a strong understanding of general messaging patterns and message types. What are the messaging fundamentals?
Elegant Event Triggers
Often as you are working on a project, you will receive a request that incidentally impacts a large portion of your API. Maybe an email needs to be sent every time a customer takes certain actions. How can you implement this kind of feature without making changes to a large portion of your codebase?
Using ORMs and DTOs Elegantly
There has been a lot of backlash against Data Transfer structures and using Data Mapping libraries in recent years. Many have argued that neither of these have any place in a modern, elegantly-designed application. Having worked extensively with many different approaches of external data intergrations, I find that it is rather easy to use these tools correctly, while avoiding many of the downsides. I will show you how to use ORMs and DTOs elegantly.
Indirection Is Not Abstraction
The concept of abstraction in software development is frequently misunderstood and confused with indirection. This is partially because of the keywords
interface in statically-typed languages such as Java and C#. The confusion often leads to design changes that leave the code worse than before it was touched. Let’s look at how abstraction and indirection relate, and how to correctly connect components.