-
Notifications
You must be signed in to change notification settings - Fork 2
About the Project
The goals of SimpleDB.Net are:
- Surface 100% of SimpleDB's capabilities through an easy, "just works" .NET API - no falling back to "low-level" REST for some operations.
- Provide robust LINQ querying and session-based change tracking - similar to Entity Framework.
- Good or better performance, compared to rolling your own AWS calls from your app.
- Zero dependencies on third-party libraries (including the AWS SDK).
- Platform-independence: basically, run anywhere Mono can run. SimpleDb is currently run & tested on:
- Windows
- OS X
- Ubuntu
- Full
async/await/Task<T>support, alongside synchronous versions for backwards-compatibility - Conversion to/from any POCO to
ISimpleDbItembased on property name-matching -
dynamicsupport for attributes (e.g.myItem.MyAttributeas well asmyItem["MyAttribute"])
We totally accept pull requests. Check out the (minimal!) contribution guidelines to see how.
First, open an issue. Someone may already be working on the thing you want to do, and you may be able to help get it done even faster!
Before you submit a PR, make sure you've read the Coding Guidelines.
Any time functionality is changed or added, make sure the before and after are unit-tested:
- Identify the code to change
- Write tests for the code as-is (if possible)
- Change the code
- Update tests if necessary
When in doubt, follow the existing coding style. It might not be the best, but that's OK - consistency is most important. That way when we do decide the best coding style, it'll be easy to switch!
A few notes on coding styles:
- Spaces, not tabs (4 to be exact)
- Unix line breaks (Visual Studio might complain; it'll survive ;) )
- Long, fully descriptive names for variables, methods, etc.
The public API is very carefully curated. When adding anything new, it should generally be private or internal.
public(andprotected) is a contract with every person who will ever use this library, from now until the end of time (or until we decide to break it). It is a promise that the routines will always work as expected. If we're not prepared to make that promise, it shouldn't be public.
Of course, the public API should also be exclusively SimpleDB-centric. So don't expose utilities, supporting classes, etc.
SimpleDB.Net started in 2009 as a personal exercise by @rexm to learn how to build a LINQ-to-something provider. Amazon had just launched SimpleDB and it seemed like a natural fit.
It was absorbed & matured by a short-lived startup called Cucumber, which was using SimpleDB for some products under development - hence the Cucumber project namespace. After Cucumber dissolved, it sat on the shelf until early 2013. A weekend of cleanup and minor refactoring ensued (Amazon had dropped SOAP support by that time, for example), and it landed on GitHub.