WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content
Rex Morgan edited this page Sep 25, 2017 · 9 revisions

Goals

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

Roadmap

Version 3 (Upcoming)

  • Full async/await/Task<T> support, alongside synchronous versions for backwards-compatibility
  • Conversion to/from any POCO to ISimpleDbItem based on property name-matching
  • dynamic support for attributes (e.g. myItem.MyAttribute as well as myItem["MyAttribute"])

We totally accept pull requests. Check out the (minimal!) contribution guidelines to see how.

How to Contribute

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.

Coding Guidelines

Leave Unit Tests Better Than You Found Them

Any time functionality is changed or added, make sure the before and after are unit-tested:

  1. Identify the code to change
  2. Write tests for the code as-is (if possible)
  3. Change the code
  • Update tests if necessary

Follow The Existing Style

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.

Public API Design Considerations

The public API is very carefully curated. When adding anything new, it should generally be private or internal.

public (and protected) 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.

History

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.

Clone this wiki locally