Skip to main content

Architecture Requirements

RA1 Modern Application Architecture

Requirement
Design a modern application architecture with the latest software development principles, patterns and practices using the best of breed open source projects.
Background
Production Ready® is routinely asked to help develop, enhance or fix existing applications for our customers. Many of these applications are poorly written with no clear separation of concerns, have security issues, use older technology that is outdated, or not upgradeable.
Our goal is to produce a modern application architecture and framework template that can be used as a starting point to produce high quality software for the community. This software platform will additionally become the application infrastructure for the company and the basis for new applications developed in the future.
Solution
ELEFLEX® is an open source software platform for building modular, domain-driven, service-oriented applications and services. ELEFLEX® is intended to be used as a foundation to rapidly build and integrate multiple applications together using a services-based approach utilizing code generation, standards and governance to form a robust and scalable infrastructure.
To promote community collaboration, NuGet was selected to be used as the primary method to publish and integrate with the platform. NuGet allows installation of open source projects, source code, assemblies, files and custom logic to help configure with a project while the ELEFLEX® platform provides the framework code foundation to quickly develop modules.
Several open source components have been selected to provide structure to the application for dependency injection, inversion of control, object mapping, service location, auditing, user interface and more. These will be discussed in later sections.

RA2 Service Oriented Architecture

Requirement
Design a service oriented architecture with a standardized framework of services that can be easily expanded upon for new application modules.
Background
A service oriented architecture helps building large scale software easier. An application can be divided up into domains, with each domain exposing self-contained business activities. These stateless operations are easy to invoke over a network and are easily testable. The ELEFLEX® platform’s governance has ensured that modules developed have a solid foundation to build from. Furthermore, these can be customized to realize other organizational requirements, processes and goals.
Solution
The ELEFLEX® software platform was developed utilizing Windows Communication Foundation (WCF) to provide the primary communication and security. Services exposed from the platform will operate on a request/response paradigm, with each method exposing a unique request object and a response object. The request object will be used to route to a configured service containing the business logic to process it. This allows new modules to be developed and integrated within the service pipeline.

RA3 Code Generation

Requirement
Design must incorporate code generation to quickly develop modules in the platform.
Background
The platform must be easy to integrate with and be able to quickly get new functionality up and running. Code generation is used to quickly create code files required by the platform’s architectural layers. Using template-based techniques, templates can be customized and code re-generated to add or remove functionality. Templates can change to reflect coding guidelines and standards, reduce remediation, common coding mistakes and increases intrinsic interoperability.
Solution
Pre-processing of metadata to create individual code blocks, files or complete solutions will be required to reduce the burden of developing the number of code files needed to support the platforms architectural layers. The platforms currently make use of T4 text templates to help produce code files required, although other tools are in development as well.

RA4 End to End Solution

Requirement
Design a templated solution that encompasses all layers of the platform to create a working application with minimal metadata.
Background
In order for the platform to be useful, developers must be able to build applications and application modules quickly. Code generation will be used to create a standardized, templated approach to building code files needed for the platform’s architectural layers.
Solution
The ELEFLEX® platform has been developed to provide interfaces, objects and business logic functionality that are used in the various layers of the n-tiered application design. A complete, end-to-end solution is generated utilizing NuGet, as well as integrating other modules. T4 text templates are used to generate files needed to create a custom module.

RA5 Microsoft .NET C#

Requirement
Implementation of the design must be developed using Microsoft® .NET C#.
Background
The Microsoft® platform is one of the largest software development technologies available and aligns with organizational priorities and personnel.
Solution
The inherent design of the platform is language independent, however each language may use different constructs and techniques to accomplish the same task. Microsoft® .NET C# will be used as the default implementation of the software platform.

RA6 Microsoft SQL Server and Azure

Requirement
Design must support Microsoft SQL Server and Microsoft Azure database engine for data persistence, however it should provide the ability to incorporate other database engines.
Background
Hosting of the platform should be able to be deployed on an internal environment or one in the cloud with minimal changes.
Solution
We provide a clear separation of model and storage interfaces that give us the ability to target applications to differing backend storage databases as needed. By default, the platform supports Microsoft SQL Server as well as Microsoft Azure database engines out of the box.

RA7 Dynamic SOA Data Manipulation

Requirement
Design a standardized way to dynamically query and modify data within the SOA design.
Background
This requirement is to ensure the platform provides a standardized operations that allow for querying and manipulation of model data over service boundaries.
Solution
The ELEFLEX® software platform provides a canonical model that enables dynamic data manipulation over service boundaries. The StorageQueryBuilder object provides the implementation of the foundation data contract operations used for dynamic data manipulation and querying functionality. Additionally, Web API or other RESTful services can be added on top of the SOA model to expose information in their formats.