Memstate is a complete redesign of OrigoDB with major improvements in key areas such as performance, availability, licensing, cross-platform, docker and cloud support.
Performance - OrigoDB can process up to 3K write transactions per second, Memstate can process up to 100K, a 33x improvement!
High Availability - An OrigoDB cluster has a single primary and one or more read-only replicas. If the primary fails one of the replicas can be promoted to new primary but this requires manual intervention. Nodes in a Memstate cluster are all read/write.
Licensing - OrigoDB Server is a commercial offering while Memstate server is OSS and free for commercial use.
Cross platform - Memstate targets .NET Standard 2.0 which means it runs on both .NET Framework >= 4.6.1 and .NET Core >=2.0, Mono, Xamarin, UWP.
Never store passwords or move them across the wire in plaintext. In OrigoDB this means
Don’t put passwords in the model
Don’t put passwords in any commands
Don’t pass passwords to command methods when using proxy
Passwords in the model will be included in snapshots while commands, both explicit and implicit in the case of proxying, will be written to the journal.
Password hashing
The common way to ‘remember’ passwords is by computing and storing a hash, preferably using some salt. The following example class will help you achieve this while encapsulating all the details. To learn more check out Hash and salt passwords in c# on Stack Overflow. Feel free to copy and use the code.
Using the HashedPassword class in an OrigoDB data model
Here’s some code showing how to use the HashedPassword class.
Calling from the service/application layer
Here’s an example ASP.NET MVC Controller method calling into Origo. The plain text password is transmitted using http POST from the web page, make sure you are using SSL. It only exists in memory for the duration of the request.