...

/

Reviewing the Implementation Details

Reviewing the Implementation Details

Discuss the implementation details of the app, including solution structure, identity management, event schema, etc.

After looking at the patterns that will support the business use cases for the application, we can now move on to more specific implementation details. While some of the implementation constructs used in this solution will seem familiar, there are some technical details that might be new to us. We’ll be exploring several topics in this section, which are intended to prepare us for the journey ahead.

The Visual Studio solution topology

The solutions within the source folder are divided domain wise, with a separate solution for each. Additionally, there’s a solution for core platform needs, such as marker interfaces to identify value objects, entities, aggregates, and other objects. The intent is to allow for each of the services to be run as an independent solution, which are eventually moved into their own repositories if so desired. Here are the src directory files:

Bud1  (odelg1Sco @� @� @� @(.vscodelg1Scomp	.vscodemoDDblob=��A.vscodemodDblob=��A.vscodeph1ScompMTAEDA.Corelg1Scomp�MTAEDA.CoremoDDblob2p�=��AMTAEDA.CoremodDblob2p�=��AMTAEDA.Coreph1ScomppMTAEDA.Equipmentlg1Scomp4�MTAEDA.EquipmentmoDDblobgj�=��AMTAEDA.EquipmentmodDblobgj�=��AMTAEDA.Equipmentph1Scomp�MTAEDA.Identificationlg1Scompb�MTAEDA.IdentificationmoDDblobۆ�=��AMTAEDA.IdentificationmodDblobۆ�=��AMTAEDA.Identificationph1Scomp�MTAEDA.Maintenancelg1Scomp��MTAEDA.MaintenancemoDDblob��=��AMTAEDA.MaintenancemodDblob��=��AMTAEDA.Maintenanceph1Scomp�MTAEDA.Notificationlg1ScompTLMTAEDA.NotificationmoDDblob���=��AMTAEDA.NotificationmodDblob���=��AMTAEDA.Notificationph1Scomp�MTAEDA.Passengerlg1ScompMOMTAEDA.PassengermoDDblob��=��AMTAEDA.PassengermodDblob��=��AMTAEDA.Passengerph1ScomppMTAEDA.Schedulinglg1Scompe�MTAEDA.SchedulingmoDDblob��=��AMTAEDA.SchedulingmodDblob��=��AMTAEDA.Schedulingph1Scomp@MTAEDA.Stationlg1ScompSlMTAEDA.StationmoDDbloba��=��AMTAEDA.StationmodDbloba��=��AMTAEDA.Stationph1Scomp�	terraformlg1Scomp�	terraformmoDDblob=��A	terraformmodDblob=��A	terraformph1Scomp` EDSDB `�(0@� @� @MTAEDA.Passengerlg1ScompMOMTAEDA.PassengermoDDblob��=��AMTAEDA.PassengermodDblob��=��AMTAEDA.Passengerph1ScomppMTAEDA.Schedulinglg1Scompe�MTAEDA.SchedulingmoDDblob��=��AMTAEDA.SchedulingmodDblob��=��AMTAEDA.Schedulingph1Scomp@MTAEDA.Stationlg1ScompSlMTAEDA.StationmoDDbloba��=��AMTAEDA.StationmodDbloba��=��AMTAEDA.Stationph1Scomp�	terraformlg1Scomp�	terraformmoDDblob=��A	terraformmodDblob=��A	terra
The src directory view

Each domain will have API services that can be communicated with. These projects in Visual Studio are not overly complex or even far from the general project template that’s created when we create a new .NET Core API app. There are separate project types for queries, which read data, and commands, which affect data. Each domain will have a domain library, an infrastructure library, and test projects where applicable. Also, each domain will have a persistent consumer, in the form of an executable, that will run to enable ...