OZDS project structure
The C# solution of the OZDS repository contains several projects each serving a different purpose. Here is an outline of every project
Ozds.Data
This project contains the database schema and queries and nothing else. The
DataDbContext
class contains all database tables and the OzdsDbClient
contains all the queries needed for the OZDS server. All the entities (tables)
are situated in the Ozds.Data.Entities
namespace.
Ozds.Business
This project is the layer that sits between the Ozds.Server
and Ozds.Data
.
Any logic that has to sit between the server actions and queries goes here and
is organized in services that are added to the DI container. Every function
defined in this project is tested by the unit tests in the Ozds.Business.Test
project.
Ozds.Server
This project is the startup project and contains all API controllers and the
entry point for the Ozds.Client
project. The complexity in this project should
come only from the UI and any backend logic should be kept in the
Ozds.Business
project.
Ozds.Client
This project contains all the UI Razor files that will present data to the end
users. The complexity in this project should be kept at a minimum and any
extraneous logic should be kept in the Ozds.Business
project.
Ozds.Business.Test
This project tests everything in the Ozds.Business
project and mimics its
structure.
Ozds.Fake
This project is treated as a script that generates fake measurements for the
server. The complexity in this project should be kept at a minimum and this
project should use the Ozds.Server
project to mimic the measurement structure.