Advanced Web Application Architecture
In this book, "Advanced Web Application Architecture", I explain how these objects are the result of a quest to decouple core application logic from infrastructural concerns. The first part of the book describes in detail the refactoring strategies you can use to decouple your code from the web, the database, and the service container. The second part continues to show how the resulting objects (reusable use cases, unit testable domain models, and delivery mechanism-specific services) find their place in a layered architecture. An additional dimension gets added to this picture by discussing hexagonal architecture. We also touch on the concept of a bounded context and how it can help divide your application into manageable parts. In the last part we discuss testing, and find out how a layered, hexagonal architecture gives you a wide variety of more efficient and more effective testing options, way beyond functional tests.