As I’ve been going through this educational experience, I’ve tried to come up with a naming convention that makes a little sense. In other projects, I’ve usually started with a ProjectName.Core
which held the main business logic for the system being authored. From there, I usually wind up with a ProjectName.Api
, a ProjectName.Portal
, maybe a ProjectName.Api
and a few ProjectName.[Something]Service
for backend tasks.
With this exploration, after 3 efforts of kicking something real off, I’ve discovered one change that I’m looking at making ongoing to the system. Logically, ProjectName."Core"
holds the logic used throughout the Api
, Portal
, and [Something]Service
s, so ongoing, the plan will be to structure as:
ProjectName.Portal.[Area of Concern]
Portals
, if there is the need for having multiple APIs within the solution, again, the naming convention will most likely be ProjectName.Api.[Area of Concern]
ProjectName.Client
nomenclature should solidify this concept.Aggregates are things that describe something represented within the context of a system, such as a BankAccount, GiftCard, Shopping Cart, etc.
Commands are the instructions of things to do within the system (e.g. CompleteTransaction
).
Nomenclature for commands are to describe them as a task that must be done. “Do This”, “Add That”. Describe what you want done as-if you were doing so in the real world.
Events are things that have happened in the system (e.g. TransactionCompleted
).
Nomenclature for events are to describe them as the result of a task. “Transaction Completed”, “Item Added”, etc. These are the items within the “ledger” that are immutable in nature.