Assemblies Architecture
Assemblies Architecture answers a practical and often underestimated question: how should software be physically organized so that functional architecture remains independent, deployable, and evolvable?
This page intentionally avoids technical listings of DLLs, projects, or build scripts. Instead, it explains the architectural meaning of assembly boundaries and why they matter.
In the previous chapters, functional architecture was defined as a composition of independent logical layers:
Each layer has a clear responsibility and communicates through explicit contracts. Assemblies Architecture is the physical reflection of this idea.
Assemblies are not about code reuse. They are about responsibility isolation and deployment freedom.
An assembly represents one responsibility within one use case.
Not:
But:
This distinction is subtle, but critical.
Each logical layer exposes its behavior through handlers:
Assemblies are therefore organized around handlers, not technical concerns.
A simple mental model:
Non-functional architecture must be able to discover handlers and route execution without understanding business meaning.
For this reason, registration is separated from behavior.
Assemblies that contain handlers are paired with assemblies that register those handlers at runtime.
This keeps functional code clean, infrastructure concerns isolated, and runtime composition flexible.
Some elements must be shared across layers:
These elements do not belong to any logical layer. They form a shared semantic vocabulary, not behavior.
Placing them in a dedicated assembly prevents circular dependencies and keeps contracts stable.
Data objects are not part of non-functional architecture. They represent business facts in motion.
Data transfer assemblies exist to:
This idea prepares the ground for the next chapter, where a modern alternative to classical DataSet-style communication is introduced.
This assembly model enables:
All without changing functional code.
Deployment becomes a configuration choice, not an architectural rewrite.
Assemblies Architecture is not about naming conventions or folder layouts. It is about preserving the intent of functional architecture all the way down to binaries.
When assemblies mirror responsibilities instead of technologies, software becomes understandable, evolvable, and deployment-agnostic.
Table of Content Software Architecture Previous: Runtime Handler Discovery Next: Data Architecture
Business Process Programming in .Net
© 2004–2026 Laskarzhevsky Software Inc.
Unless otherwise noted, the content of this website is licensed under the
Creative Commons Attribution 4.0 International License (CC BY 4.0).
Code examples are provided under the MIT License.
You are free to share and adapt the material provided that appropriate
credit is given and any modifications are clearly indicated.
The information provided on this website is for educational purposes only.
The author and publisher make no warranties regarding the completeness
or suitability of the information and are not responsible for any damages
resulting from its use.