Thank you for attending my CodeRage 2019 sessions on RAD Server.
The Key Value storage created, deployed and used in the sessions is very simple to build, but also very versatile in its use. Hopefully you will find as many, or even more, uses as I have for the Key Value server code in your own projects with RAD Server.
If you want to replay the sessions, please visit the CodeRage 2019 playlist on YouTube here.
Please find the download with Delphi sources and a partial emsserver.ini here:
Download source and emsserver.ini
The download has been compressed with RAR with password coderage2019
and has the following SHA-256 checksum
26c45c2079e4fa359541c78f444ebfd8e8a2f43005a0d6c1038040a82ed3c8f1
David Intersimone (DavidI) has created an excellent handbook on RAD Server which can be found here.
Have fun creating your own RAD Server solutions!
Some after session thoughts
In an attempt to shorten the RADServerKeyValue Client video a part of the video at the end was removed that should not have been removed. This involves using a key/value pair with uploading a larger or more complex text. The source code in the rar file you can download has the correct source code.
This Key Value store code has special handling for any key with a value ‘body’. In response to this keyword the RAD Server Key Value package assumes the body of the Request contains a UTF8 encoded text to be placed in the value for the dictionary. This makes it possible to put text in the Key Value storage that would be difficult to put as a URL parameter, either due to size constraints for URL segments, or due to special characters not allowed in URL parameters.
By setting the recycle time of the IIS ISAPI to 24 hours, the in-memory Key Value pairs will remain available for that period. If you want you can add persistency for this dictionary by storing the data in a database in the RAD Server backend.
You may want to add manual support for different MIME types with EndPointProduce and EndpointConsume and use EMSFileResource and EMSDBResource to feed files or database tables back to the client.