Chapter 4. Handling Cross-cutting Concerns
A good application design uses layers to separate areas of responsibility. If done right, each layer has a single responsibility and it interconnects with the other layers using a well-defined interface.
The most popular layers you'll see included in an application are data, business logic, and the user interface. However, there are services that cut across all of the other layers; those that handle cross-cutting concerns such as messaging, logging, data validation, caching, internationalization, and security.
Communicating with your service's consumers using patterns
Communicating with your service's consumers becomes very important when you have methods that are long running or frontend asynchronous AJAX ...