HyperCore uses a number of specific technologies that were not used in the ancestor code-base or were used in less modern ways. This section intends to show the technical base of HyperCore at a platform and framework dependency level.
Frameworks
NET/NETCORE
Most HyperCore components run in NET hosted processes, and some have run and been deployed as NETCORE 3.1 and .NET 5 for various clients. Some components run as .NET Framework 4.7 and 4.8 to support various automation equipment integration libraries that have not been ported yet.
Entity Framework
HyperCore mostly uses EF for data access. Entity models are defined over tables and views. Table value-function return types are also mapped as entities as needed.
SQL Server
HyperCore has run on SQL Servers 2014 through 2019 as its back-end. In addition to being landing “spots” for EF queries and updates; HC uses table-valued functions to perform certain broad aggregates across schemas and stored procedures to perform certain cross-entity summarizations.
Overall HyperCore runs with snapshot isolation, and uses committer catches to rerun commits on collisions while trying to generally avoid data-concurrent updates via a variety of C# other concurrency mechanisms, topological isolation, and performing aggregate math via stored procedures. Additionally, the ability to clear an interaction’s scoped objects and retry without client involvement (thus requerying data that may have changed) has been slated for a future version, though has been implemented on some customer integrations in specific instances, thus proving the concept.
Android/Xamarin
For mobile solutions, HyperCore targets Android running under Xamarin or MAUI. While Android is preferred due to the availability of industrial device support, the Xamarin/MAUI base allows relatively simple transitions to other device platforms in hardware or emulation.
ASPNET
Several large HyperCore implementation have used some degree of web-based user interfaces. These are built with a combination of ASPNET, NodeJS and Angular.
Development, Build and Deployment Technologies
Azure DevOps
All projects, artifacts and deployments are built with AzureDevOps pipelines.
TFS/Git
While TFS source control was used before, the transfer to Git-style repositories has enabled better branch, fork and merge management.
NuGet
Previously. Pre-HyperCore systems used shared DLL folders. In HyperCore, we make and publish NuGet packages to our internal repositories and reference them from there, greatly improving and stabilizing version management.
Docker/Linux
Since the technology stack is .NET, HyperCore’s service infrastructure can run as Windows Services, directly as Linux processes, and within Docker containers (Windows or Linux as host and/or client), and any combinations within a solution build-out. Builds and deployment models can vary by targeted deployment model (QA, integration testing, simulation, production, etc.) within a given customer solution space.
Pre-Production Environments
Most HyperCore functional interfaces are exposed via Http and gRPC, making them amenable to automated functional testing.
Testability
Various testing harnesses can and have been used to validate new, and regressively confirm, functionality.
Swagger
“Roll-up the sleeves” endpoint testability provided by Swagger, integrating capabilities to use the various authentication systems.