Current RealityMost software relies on the security and reliability provided by an underlying computer and OS. A software system provides better reliability by distributing work across many computers and automatically reassigning work when a part of the system fails. Past attempts to create such a software system were difficult and often costly.
A middleware is generally used to connect software components or enterprise applications in a loose aggregation of services. Access to a service crosses both space and time. A type of middleware, used within the telecommunication, defense, and aerospace industries, runs in machine time as part of a system. This type of middleware provides high availability at a similarly high cost.
An approach is needed that: provides failure recovery; uses standard hardware; and is relatively inexpensive for new software.
A New Approach: SoftEcoSDK
Our new system, softecosdk, provides a method for new software to easily recover after failure while using standard hardware. A software system, using the SoftEcoSDK infrastructure, has the following characteristics:
1) Software is organized to run as a server. A server can use a service provided by a remote server. Communication between servers occurs on a recoverable client to server session.
2) A server, providing a service, ensures that a client only performs allowed actions.
3) The data exchanged between a client and server is held within the SoftEcoSDK data technology. Software defines the data class or structure and initializes Meta data per value used for format conversion. The SoftEcoSDK infrastructure uses Meta data to convert in memory data to and from serial format. Conversion between in memory and XML is also supported.
4) The SoftEcoSDK infrastructure performs much of the work needed for a software system.
A recoverable client to server session is a new innovation described by a pending patent. A recoverable session works in the following manner:
a1) Software is organized into many servers distributed across multiple computers. A server uses a client to server session, provided by the software environment, to communicate with another server.
a2) Data needed to recover a session is identified to the software environment with every client to server message exchange.
a3) The software environment sends recovery data and client to server messages to an infrastructure manager program. The manager program saves recovery data within itself as well as backup manager instances. It forwards messages to the other side of a client to server session.
a4) The manager program detects communication failure to a session client or server instance. A failed side of a session is assigned to a backup client or server.
a5) A backup client or server uses session recovery data to recreate the full session state that it needs to continue work. The session continues at the same point of message exchange, while the other side of a session only detects a time delay due to the failure, recovery, and re-computation of lost work.
Spreading work across computers, where the work of a failed computer can be reassigned and recovered by another computer, is an improvement of reliability versus a single computer. This approach can also be used to improve the security of data and software system actions. A server can limit client actions in the following manner:
b1) The software environment uses configuration to start each server such that it knows the identify of every server.
b2) A server initializes a service interface and then calls the service to request the client side of a client to server session.
b3) A manager program assigns a server to provide a service and sets up a client to server session.
b4) A server, providing a service, is requested to create the server side of a client to server session. The request includes what a client and end user invoking a client are allowed to make happen.
b5) A server, upon each subsequent request for service, checks that a client is allowed to perform the requested action as limited by administrator configuration.
Data exchanged on a recoverable client to server session is represented by a SoftEcoSDK technology described by a pending patent. This data representation technology works in the following manner:
c1) Software defines data classes (or structures) with the ssisdk data technology. Meta data, used for format conversion, is initialized when a new class instance is created. Data content is set, changed, held, etc. within the SoftEcoSDK data technology.
c2) Software requests the SoftEcoSDK infrastructure to convert data between two formats.
c3) The SoftEcoSDK infrastructure uses Meta data to convert in memory data to and from serial format. Conversion between in memory and XML is also supported.
The SoftEcoSDK software environment is provided by an infrastructure with a middleware. The SoftEcoSDK middleware supports several styles for how a program can exchange a message with another program. The styles are:
- point to point message channel.
- publisher to subscriber event notification.
- interface to a service as called from within a client program. The interface exchanges messages with a remote server via a recoverable client to server session.
- user added style.
- some combination of above styles.
The SoftEcoSDK infrastructure and middleware supports these communication styles with the following components and features:
d1) data representation with user defined structure and infrastructure provided transformation between a class instance and XML or a class instance and serial.
d2) system version concept to coordinate software across computers.
d3) middleware point to point and near real time publisher to subscriber message service. A unique event id is configured for each type of event occurrence that can be sent via a publisher to subscriber message.
d4) embedded message transformation between a class instance and serial format.
d5) embedded monitoring, event reporting, and active state assignment of program copy instances.
d6) a starting subscriber program is provided the content of the last published event occurrence.
d7) a multiple server environment that supports a recoverable client to server session between two servers.
Our SoftEcoSDK software is ready for you to try out (kick the tires), suggest improvements, add complimentary software, and perhaps devise alternatives. The world is waiting for better software. Are you ready to create it?