github/Akavache — pull request #16 by xpaulbettsx (2012-12-31 23:16:21+00:00)
Title: Add SQLite3 implementation

This PR adds an improved version of `IBlobCache` based on SQLite3 - using SQLite3 instead of the current implementation has a number of benefits:

* Only one file, easy to ship across to other people
* Insert => immediate GetAsync no longer fails
* Serialization now uses BSON instead of JSON, making it way more compact
* Type information is now stored in the record, meaning that operations involving groups of objects (`InvalidateAllObjects, `GetAllObjects`) can now be much faster
* Operations now never hold locks (i.e. hold up background threads), they are serialized asynchronously via `KeyedOperationQueue`
* Code is vastly more simple (~200 lines vs ~500 lines)

```
TODO:

[ ] - Fix Dispose behavior so test passes
[ ] - Honor Serialization settings (`IObjectFactory`, `SerializerSettings`)
[ ] - Enable Encryption
[ ] - Create projects for WP8, WinRT
```