Thursday, March 18, 2010

Introducing Comfy.Couch, a CouchDB API for .NET

WARNING : The work is still in progress.

From the past few days, I have been working on coming up with a nice little .NET Library that one could use with CouchDB. My goal was to stick with the CouchDB API documentation as much as I can so that it would be easier to work with the driver. The library has dependencies on Log4Net and Json.NET libraries.

I tried to be over-smart when picking that name – Comfy.Couch (I meant a comfortable couch to use :)). At the moment, the database API is functionally complete, but you cannot really use it unless you have the Document API which would be coming soon. The reference is at

I made sure I wrote unit tests to cover most part of my code, but I did miss some pieces here and there.


So I ended up having 94% of code coverage so far and I will be adding tests soon.

My idea is to first get the complete API in place and then worry about where it has to be tuned. So far, I have not focused on any kind of tuning, which I think could be done. I have thrown in a few asynchronous requests here and there but they are yet to be tested.

1. Creating a database.

CouchDatabaseOperations.Create("databasename"); //validation on database names is pending.

2. Getting database information from the server

ICouchDatabase db = CouchDatabaseOperations.Get("databasename");
CouchDatabaseInfo info = db.Metadata;

3. Deleting the database

//Delete operation uses MaxRetries as 2 since most of the times the first delete request fails on Windows.

While I have successfully completed the rest of the API that is described in the Database API reference at CouchDB website, I just showed how the library could be used in here. The unit tests might be more helpful for you to get started, if you are interested.

Next steps:

  • Upload the sourcecode to
  • Improvize logging information
  • Work on the Document API
  • Work on the View API
  • Work on the Bulk Document API
  • Run some performance tests and identify the bottlenecks in the driver.
  • Sample Scrum Management tool in Silverlight 4 that uses CouchDB for data backend.