Differences between revisions 10 and 11
Revision 10 as of 2014-02-05 10:16:30
Size: 5150
Editor: 82
Comment: Add MyCouch to C# tooling documentation
Revision 11 as of 2018-12-19 23:41:27
Size: 0
Editor: JoanTouzet
Comment: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=97555303
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
There are six known public C# libraries for using CouchDB:
 1. [[http://github.com/soitgoes/LoveSeat|LoveSeat]]
 2. [[http://github.com/arobson/Relax|Relax]]
 3. [[http://github.com/foretagsplatsen/Divan|Divan]]
 4. [[http://code.google.com/p/couchbrowse|SharpCouch]] (inactive)
 5. [[http://github.com/vdaron/DreamSeat|DreamSeat]]
 6. [[https://github.com/danielwertheim/mycouch|MyCouch]]

== LoveSeat ==
!LoveSeat - "Bringing Couchdb and .Net a little closer". Works well with Generics for populating Domain objects. (Even when nested!). IoC and TDD friendly.

* Features
   *Support for ETags!
   *Support for Streaming attachments
   *Generic support for translating view results to Domain objects.

[[https://github.com/soitgoes/LoveSeat/downloads|download now]]

For more information see the [[http://github.com/soitgoes/LoveSeat|README]].
git clone git://github.com/soitgoes/LoveSeat.git

== Relax ==
The Relax library (http://github.com/arobson/Relax) provides interfaces for both server control (administrative tasks, replication, etc.) and a repository model for working with CouchDB. As the author of Relax, I can say that you should definitely take a look at Relax as it provides an extensible, IoC friendly, repository pattern for working with domain model persistence against my favorite document store.

* Features
  * Convention based mapping for saving POCOs
  * Base document types or interfaces for more control
  * Support for caching (Symbiote integration will provide memcached support)
  * Attachment support
  * Bulk-document API
  * Views
  * Real-time database change stream

Documentation is currently found at the Symbiote wiki: http://www.sharplearningcurve.com/wiki/Symbiote-Relax.ashx. There is also a comprehensive demo that's part of the source on github which shows some of Relax's more interesting capabilities, such as the ability to subscribe to changes in a database as they happen.

git clone git://github.com/arobson/Relax.git

Relax does not currently provide Lucene support. Congrats to Henrik for supporting that in Divan!

== Divan ==
The git repository at http://github.com/foretagsplatsen/Divan has a relatively complete C# library for CouchDB using Newtonsoft.JSON and NUnit as its only external dependencies. Divan is actively maintained and in use at Foretagsplatsen (a swedish company using it in their core system). Being the author of Divan I claim it to be much more complete than !SharpCouch :)

For more information see the [[http://github.com/foretagsplatsen/Divan|README]].
git clone git://github.com/foretagsplatsen/Divan.git

== SharpCouch ==
The project at http://code.google.com/p/couchbrowse contains a simple wrapper library for CouchDB, called !SharpCouch, and a GUI client which makes use of the library. The GUI client code should serve as a good usage example, although the wrapper class is documented and fairly self-explanatory anyway.

You can get the source by issuing the following SVN command:

svn checkout http://couchbrowse.googlecode.com/svn/trunk/ couchbrowse

The project was built with !SharpDevelop 2.2, but should work out of the box with Visual Studio 2005. Getting it to work with !MonoDevelop should be reasonably easy, but has not been tried yet.

== DreamSeat ==

!DreamSeat is a CouchDB client for the .NET plateform. It is based on [[http://github.com/soitgoes/LoveSeat|LoveSeat]] from Martin Murphy.
Thanks to [[https://github.com/MindTouch/DReAM|Mindtouch Dream]], all the API calls can be executed asychronously or sychronously.

=== Main Features ===
 * Asynchronous or synchronous API
 * JSON serialisation powered by [[http://json.codeplex.com/|Newtonsoft.Json]]
 * Continuous Update Support
 * Replication Management (using _replicator database for CouchDB 1.1)
 * Tested with Mono on Linux
 * ...

[[https://github.com/vdaron/DreamSeat/archives/master|Download here]] or clone it

git clone git://github.com/vdaron/DreamSeat.git

== MyCouch ==

[[https://github.com/danielwertheim/mycouch|MyCouch]] asynchronous !CouchDb client for .Net - builds on top of the asynchronous HTTP client and uses JSON.Net to provide flexible serialization behaviour. It tries to keep the domain language of CouchDb instead of bringing in generic repositories and other confusing stuff. MyCouch lets you work with raw JSON and/or entities/POCOS without requiring any implementation of interfaces, base classes etc. MyCouch provides you with some model conventions like injection of $doctype to the document. It is pluggable. If you don't like some piece, then hook in your implementation instead.

MyCouch is distributed via NuGet. You can find the CouchDb package [[https://nuget.org/packages/MyCouch|here]].

=== Main Features ===
 * Supports Net4.0, .Net4.5, Windows Store
 * Asynchronous API (using C# 5 async / await)
 * Pluggable JSON serialisation (default is [[http://json.codeplex.com/|Json.NET]])
 * Changes feed listener
 * An [[https://github.com/danielwertheim/mycouch.aspnet.identity ASP.NET Identity Provider]]