This was a major release and a complete refactor of the v2.1 platform. This release allowed us to enhance the platform with lessons learned from our previous framework and also integrating with NuGet at the preferred integration point for installs. We were able to cleanly separate the framework into multiple assemblies to lay out our assembly relationships tree for abstractions, open source components used, and to take advantage of Microsoft's new Visual Studio 2015 with .NET v4.6.
We have developed a model to dynamically create startup tasks to load and terminate the system. Previously this had to be done using the Global.asax file with in-line procedural code or with Bootstrapper.
Rather than using StructureMap's and AutoMapper's implementation through all application layers and also requiring a NuGet package reference for each assembly, an ObjectLocator exposing an IObjectLocationService interface and a IMappingService interface have been provided. It is essentially a passthrough to the underlying implementation but built into the platform so no outside reference is required. Use the ObjectLocator.Current to get instances of services as needed.
There are now 3 main repositories and all use the same interface so that coding against each is identical. They are the Storage Repository (data access), the Business Repository (business logic) and the Service Repository (service access). Additionally the MappingRepository adds object mapping to any existing repository to map object data to another and then call the implemented repository.
Business rules are now developed that allow validation and running business logic for object events.
The platform and its many assemblies have been reduced down to a few assemblies. There are now: