Skip to content

.NET based framework to quickly build three-tier applications.

License

Notifications You must be signed in to change notification settings

andreniggemann/MORYX-Core

 
 

Repository files navigation

MORYX Logo

CI Coverage License Gitter

MORYX Core

The MORYX Core is a .NET based framework to quickly build three-tier applications. It aims to reduce boilerplate code as much as possible and provides modularity, flexibility and easy configuration with very little effort. It is also the foundation for the Phoenix Contact IoT Framework MORYX Abstraction Layer

Links

Getting started

If you want to start developing with or for MORYX, the easiest way is our template repository. It comes with two empty solutions, the necessary package feeds and preinstalled empty MORYX runtime. Add projects and packages to backend and frontend solutions depending on your specific requirements. Install stable releases via Nuget; development releases are available via MyGet.

Package Name Release (NuGet) CI (MyGet) Future (MyGet)
Moryx NuGet MyGet MyGet-Release
Moryx.Model NuGet MyGet MyGet-Release
Moryx.Model.InMemory NuGet MyGet MyGet-Release
Moryx.Model.PostgreSQL NuGet MyGet MyGet-Release
Moryx.Container NuGet MyGet MyGet-Release
Moryx.Communication.Serial NuGet MyGet MyGet-Release
Moryx.Tools.Wcf NuGet MyGet MyGet-Release
Moryx.Runtime.Wcf NuGet MyGet MyGet-Release
Moryx.Runtime NuGet MyGet MyGet-Release
Moryx.Runtime.DbUpdate NuGet MyGet MyGet-Release
Moryx.Runtime.Kernel NuGet MyGet MyGet-Release
Moryx.Runtime.Kestrel NuGet MyGet MyGet-Release
Moryx.Runtime.Maintenance NuGet MyGet MyGet-Release
Moryx.Runtime.SmokeTest NuGet MyGet MyGet-Release
Moryx.Runtime.WinService NuGet MyGet MyGet-Release
Moryx.TestTools.SystemTest NuGet MyGet MyGet-Release

If you wish to contribute to this project, you simply need to clone the repository and open the solution with Visual Studio 2017 or above. The Debug target should be StartProject.

To build and run from the command line you need powershell and msbuild.

.\Build.ps1 -Build
.\src\StartProject\bin\Debug\StartProject.exe

Architecture

The MORYX Core is a .NET based framework to quickly build three-tier applications. The core architecture is a modular monolith using the service and facade pattern to isolate and decouple functionality. It uses a 2-level Dependency Injection structure to isolate a modules composition and offer a per-module life-cycle with all instances hidden behind the previously mentioned facades. It also offers a range of tools and components to speed up development, increase stability and drastically reduce boilerplate code. To improve flexibility of modules and applications the core has built in support for configuration management as well as plugin loading.

Each modules composition is constructed by its own DI-container instance. This makes it possible to dispose the container in order to restart the module and reconstruct the composition with a different configuration or to recover from a fatal error. The ModuleController and Facade instances are preserved through the lifecycle of the application as part of the level 1 composition. The Components (always present) and plugins (configurable) are created when a module is started and disposed when the module stops. For each lifecycle the references of the facade are updated.

Maintenance

Part of the Core is also the Maintenance module, which hosts a HTTP REST service and optionally a graphic web interface to control and configure a MORYX application. The Maintenance itself does not define that logic, but simply provides easy external access to APIs and features of the runtime kernel.

History

Starting with version 3.0 of the core we decided to open source it as a foundation for Industrial IoT (IIoT) applications. For this public version, the framework received an overhaul to replace commercial libraries and tools, remove specialized Phoenix Contact code and better comply with the .NET open source community. Because of these changes the public version is still Work-in-Progress, but we will stabilize and release it soon.

But even though this version is still under construction, its in-house predecessor has been used in production for years. Just a few examples of solutions build on MORYX are listed below:

  • Manufacturing Control System
  • Plastic Mold Tracking
  • Intralogistics
  • Home Automation

About

.NET based framework to quickly build three-tier applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 88.8%
  • TypeScript 9.5%
  • PowerShell 1.1%
  • Other 0.6%