[ROOT] / doc / toc / ARCCore / Enum / ARConcepts / GettingStarted


AgoRapide 2020 is an open source library for building data-oriented backend applications using .NET.

With AgoRapide the impedance mismatch problem between database tables and in-memory objects is eliminated through the PropertyStream concept.

Data is created, stored and transported at the key-value level.

NOTE: This text is an 'inside-out' approach to documentation best suited for developers of AgoRapide.
NOTE: A better introductory top-down presentation is found at
NOTE:
NOTE: http://bef.no/AgoRapide

The source code, including this documentation, is found at

https://bitbucket.org/BjornErlingFloetten/arcore


AgoRapide 2020 can be used as:

1) A distributed in-memory backend processor of events / listener to events.
The PropertyStream-format lends itself well to distribution of loads. Each processing node subscribes to sub-sets of the entire property stream.
The Subscriptions consists of the events to which the node has to respond, plus other necessary data in order to correctly process the events.
Any output from the node is placed back out in the property stream, either back upstream, or further downstream for other nodes to process.
See ARCCore.

2) A 'single-endpoint' API.
All data is exposed through a standardized API query mechanism (REST or GraphQL) with no need for writing application specific endpoints.
Since APIs should expose well defined DTO's and not entire entities, AgoRapide APIs are therefore normally established as separate nodes.
Each node has a well defined Subscription to a sub-set of your entire database (also reducing the memory footprint).
The API will then in effect offer DTO's with very little coding needed.
See ARCAPI.

3) A reporting tool / query tool ("Express BI").
An API as in 2) combined with the query library.
The query library enables report generation directly from the web-browser (as a single bookmark-able URL).
See ARCQuery.

4) (New from December 2021) An EventSourcing engine offering a unique PropertyStream2D concept where processes (of some business domain) can be expressed in very compact manner through the concept of -IRegHandler-.
See ARCEvent.

For all cases above the following also applies:

A) An in-memory database which is continously updated through the property stream is provided by AgoRapide.
This ensures short response times and significantly reduces network traffic.
See StreamProcessor.

B) The core database storage is either provided directly by AgoRapide, or you can use an established 'key-value' database like Apache Kafka, AWS DynamoDB or Azure Cosmos DB.
See ARCSync.

C) High performance thread-safe "simultaneous" read and writes is supported in all scenarios.

D) AgoRapide works better the more strongly typed schema you specify (see TaggingOfPropertyKeys).
You can however start out without any schema at all. Duck typing is then used instead.
Even relational queries are possible straight out-of-the-box without any schema, as long as some naming conventions are followed
(like Order.CustomerId for instance, in order to relate an Order to a Customer)
Strong typing is used by AgoRapide whenever specified by the schema.

E) Scaling and redundancy is supported by flexible routing of the PropertyStream to multiple nodes.

F) No dependencies to other libraries apart from .NET itself.

See ARCDoc for practical examples for using AgoRapide, especially class Demonstrator.

AgoRapide is the result of a strong wish of AvoidingRepetition.

Three very important concepts in AgoRapide are:

1) PropertyStream: The concept of how all data is broken down into single 'key and value' pairs which are then stored as plain text format lines and then never changed.

2) TaggingOfPropertyKeys: The concept of specifying in a single place all relevant information about a given property (data field).

3) PropertyAccess: The general mechanism for accessing properties of objects in AgoRapide.

AgoRapide is split into different ARComponents. You can have a functional distributed storage mechanism including app-consoles by linking only to ARCCore.
Choose from the other components based on your security needs (ARCSec), the complexity of your data (ARCQuery) or other needs (see ARComponents in general).

See also ARConcepts and AgoRapideHistory.

Some online applications demonstrating AgoRapide are:
http://ARNorthwind.AgoRapide.com and
http://ARAdventureWorksOLAP.AgoRapide.com


Details

Generated 2024-12-22 11:41:09.316 UTC