LiNK Simple Services - RadiusDataSystemsLLC/LiNK GitHub Wiki

LiNK

LiNK Simple Services by Radius Data Systems, LLC

LiNK Simple Services is easy to use service-based infrastructure. It consists of simple web and service host controllers designed with modularity in mind to support all levels of customization.

LiNK Simple Services also consists of processing modules designed for various enterprise purposes such as integration services and targeted functionality.

Design Considerations

LiNK Simple Services was designed with the following considerations:

  • MicroService oriented design
    • LiNK Simple Services was designed with MicroService and domain driven system design patterns in mind. That doesn’t mean however, that it’s limited to just those types of architectures. The modularity and customization-friendly design make it a powerful but flexible technology that doesn’t limit the project, development, or conceptual choices.
  • Modularity
    • LiNK Simple Services was designed with modularity in mind. Most features pertaining to common services and networking scenarios are configuration-only. All process and custom logic is delegated to an interface-defined module implementation that allows us to focus on what makes the service unique.
  • Freedom of Infrastructure
    • Already using Kubernetes or Docker? Want the application to run on Azure, AWS, or GoogleCloud? Using Apache, Nginx, or IIS as a web server or reverse proxy? No Problem. Infrastructure and Platform-specific APIs aren’t used in LiNK Simple Services. This allows for a portable system with a freedom of choice without getting locked into a golden cage or tied to a particular platform or infrastructure.
  • Cross-Platform support
    • All components of LiNK Simple Services were designed on the .NET Standard 2.0 specification with the exception of the Light Service Host Container which was developed on PHP7. Specifically, all components and functionality support Windows, Centos, and Ubuntu unless otherwise noted. Solution may also function on MacOS, Red Hat Linux, and other Linux distributions but those are all that we test on a regular basis.
  • XML and JSON support
    • Both XML and JSON are supported. All communication contracts and serializable data structures are required to support both XML and JSON for improved interoperability with other languages and technologies.
  • Commenting Structure
    • The source code of LiNK Simple Services was designed to be easy to read in itself. However, it’s expected that someone who doesn’t know C# or JAVA can easily read the comments and discern operating structure. All that’s required is an understanding of object oriented fundamentals.
  • Doesn’t require a certain database technology or schema
    • While LiNK Simple Services has support for several different kinds of RDMS, document, and distributed databases it doesn’t require one to function. It can be all configuration-file based if desired.
  • No UI required
    • While there is a UI framework (LiNK UI) that may have some cooresponding modules for ease-of-use, LiNK Simple Services doesn’t require a UI to operate. How you use it, is up to you.

Feature Matrix

LiNK Simple Services is split up into several portions. These portions are the following:

  • Web Service Host Container
    • Tired of stringing up a web service every time you want to create one? So were we. LiNK Simple Services's Web Service Host Containers can be configured to support both REST, SOAP, and GraphQL oriented services. XML messaging, JSON messaging, connection and message encryption, and Token-based Authentication are fully supported - leaving one to focus on what truly matters, the service logic.
    • All one has to do is create a module that implements the Web Service Host Container interface, generate a verification signature from the assembly post-compile, and deploy it with the Web Service Host Container itself -> the rest is handled automatically.
    • A single Web Service Host Container can support any number of web service modules but can also be set up in a singleton/grouped for federation, horizontal scaling, and logical separation purposes.
  • Service Host Container
    • Tired of stringing up a Windows service or Linux deamon every time you want to create one? So were we. LiNK Simple Services's Service Host Containers can be deployed on either Windows or Linux and configured with those environments in mind – Leaving one to focus on what truly matters, the service logic.
    • All one has to do is create a module that implements the Service Host Container interface, generate a verification signature from the assembly post-compile, and deploy it with the Service Host Container itself -> the rest is handled automatically.
    • A single Service Host Container can support any number of service modules but can also be set up in a singleton/grouped for federation, horizontal scaling, and logical separation purposes.
  • Light Service Host Container
    • Sometimes the use of a CLR (common language runtime) or a JVM (Java Virtual Machine) requires a level of overhead in cost and resource consumption that is unreasonable for simple data-exchange or otherwise simplistic services. This is why LiNK Simple Services's Light Service Host Container exists. It’s written in PHP7 and is designed to not only simplify and hasten development (in a similar design as that of the other host containers) but is also designed to run on the most basic and standard PHP7 installs with a focus on interoperability.

Available Modules

LiNK Simple Services has several service modules that exist today and are in operation. They are used in the LiNK Distributed Network and other projects.


Click image to Enlarge

Configuration Examples

Simple Web Service Host Configuration Example


Click image to Enlarge

Simple Service Host Configuration Example


Click image to Enlarge

System Design Example (Buy, Sell, Exchange, and Risk Assessment concerning digital assets)

This is an example and not expected to be a functional design. Architecture is overblown to illustrate the configuration possibility and not meant as a workable solution.


Click image to Enlarge
⚠️ **GitHub.com Fallback** ⚠️