Verwenden Sie CouchDB mit .NET
Frage
Kann (verwalteten Code) .NET lesen und schreiben CouchDB?
Ich mag einen Teil von meinem Projekt erstellen, die Dokumenten-Management funktioniert mit CouchDB
Lösung
Werfen Sie einen Blick auf die SharpCouch Utility-Klasse.
Es ist eine einfache Wrapper-Klasse für den CouchDB HTTP API.
Andere Tipps
Die eine späte Antwort, aber Besuche Hammock . Es ist aktiv und gehen in den produktiven Einsatz an mehreren Projekten schnell und regelmäßige Aktualisierungen und Korrekturen empfängt. Neben den grundlegenden Objekt-Persistenz, Hängematte gibt Ihnen:
- True POCO. Sie haben nicht einmal eine ‚id‘ Eigenschaft benötigen; Hammock Spuren, die intern.
- Robuste Unterstützung für Ansichten, eine einfache einschließlich fließend API zu verwenden, die beide erzeugt und ausführt Ansichten und die Unterstützung für das Erstellen von benutzerdefinierten Karte / reduzieren Ansichten.
- Anhänge Unterstützung.
- Eine generische
Repository<>
Klasse, die bringen Sie Ihre Anfragen / Ansichten (das heißt _Design doc) zusammen mit Ihrem c # Anwendungscode hilft. Repositorys sind verantwortlich für _Design docs beibehalten, und dies trägt dazu bei, das Gefühl, wie CouchDB Ansichten halten gespeicherte Procs . - Eine vollständige Unit-Test-Suite. Dies ist nicht Software-Prototypen.
Da Sie in der Regel mit CouchDB über REST und JSON kommunizieren, würde ich vorstellen, dass es nicht zu schwer wäre, ein href zu verwenden <= "http://james.newtonking.com/pages/json-net.aspx "rel =" nofollow noreferrer "> JSON.NET und die normale WebClient / HttpWebRequest Klassen, es zu tun. Ich habe es selbst nicht versucht, wohlgemerkt ...
Little spät, um das Spiel, aber es ist ein Open-Source-Projekt für einen neuen Treiber in C # geschrieben über das async HTTP-Client und standardmäßig Newtonsoft des JSON.Net für die Serialisierung (umschaltbar). MyCouch -. Einfache async CouchDB-Client für .Net
A Erste Schritte Post existiert hier: http://danielwertheim.se/get-up-and-running-with-couchdb-and-c-using-mycouch-on-windows/
Halten Sie ein Auge auf Ottoman ein Open-Source-Projekt in C # geschrieben. Es ist immer noch stark in der Entwicklung, aber ich wollte es für Projekte in der Planungsphase als Option hinzuweisen. Ich werde diesen Beitrag aktualisieren, da es näher an Abschluss bekommt. Sie können den Quelltext sehen auf Github . Lesen Sie die Readme zu sehen, Beispiele und was möglich ist mit der aktuellen Version.
- Im Gegensatz zu SharpCouch, die Zeichenketten verwendet stark, verwendet Ottoman Generika für automatische Serialisierung und desrialization zum Abbilden eines Objekts aus einem JSON String und vice versa. All dies ohne Ihre Objekte benötigen eine Schnittstelle oder Base zu erben off Klasse.
- Es nutzt Json.Net darunter zu Griff der JSON Serialisierung und Deserialisierung.
- Karten des RESTful-Fehlercodes, die CouchDB kehrt in Ausnahmen.
- Geplante Eigenschaft: Id Generatoren für IDs zur Erzeugung die Objekte beibehalten werden
- Geplante Feature: Implizite offline Optimistische Sperre über Document Revisionen werden Ottoman ein verwenden Identity Map Kurs zu halten für Sie und eine Exception aus, wenn ein Konflikt auftritt.
- Geplante Feature:. Es wird Mono kompatibel
- Geplantes Feature: Dies ist auf dem Weg, aber ich Plan zu tun auf mit LINQ Ausdrücke für Map / Reduce-Funktionen die Sie express CouchDB mit Hilfe von JavaScript.
Es ist ein relativ neues Projekt, aber sehr aktiv. Natürlich, ich bin auch ein bisschen voreingenommen. ; -)
nehmen auch einen Blick auf Diwan - ein leichtgewichtiger Wrapper für die cdb api
ich verwendet habe JSON.NET in Verbindung mit der MS REST Starter-Kit http-Client-Klasse zu CouchDB integrieren und es funktioniert wirklich gut.
CouchDBs Wiki hat eine Liste von API für C # (mit ihren Funktionen), wenn Sie den aktuellen Status mögen: http://wiki.apache.org/couchdb/Getting_started_with_C%23
Sehr einfache .NET-API verwenden, um CouchDB in WDK10 enthalten, die Sie von http: // code.google.com/p/skitsanoswdk/ es ist sehr flexibel und ermöglicht es Ihnen, mit Ihren Daten auf Objekte und reine json Ebene zu behandeln.
Die Optionen ( durch neuestes Update bestellt ):
- Skitsanos Webware Development Kit http://code.google.com/p/skitsanoswdk/source/browse/trunk/WDK10/WDK.API.CouchDb/ neueste Update September 2012
- Relax-net / Hammock http://code.google .com / p / relax-net / neueste Update November 2011
- CouchDB.Net http://couchdbnet.codeplex.com/ neueste Update Dezember 2010
- Ottoman https://github.com/sinesignal/ottoman neueste Update Dezember 2010
- Divan https://github.com/foretagsplatsen/Divan neueste Update Juli 2010
- SharpCouch http: //code.google.com/p/couchbrowse/source/browse/trunk/SharpCouch/SharpCouch.cs neueste Update August 2008
Überprüfen Relax out http://www.sharplearningcurve.com/wiki/Symbiote- Relax.ashx . Relax ist eine „Net-API Abstraktion von der CouchDB (ausgezeichnet) RESTful API. Es enthält eine Repository-basierte Schnittstelle für die Dokumente Interaktion und ein Server-Controller für administrative Aufgaben Art.“
Ein weiterer - CouchDBClient: https://github.com/ttutisani/CouchDBClient
Disclaimer: Ich bin der Autor
.Ich habe versucht, CouchDBClient freundlicher zu machen mit benutzerdefinierten Objekten zu arbeiten -. Das ist, was in der Regel Anwendungen speichern in der Datenbank
Als ich diesen Rahmen zu schreiben begann, alle anderen, die ich gefunden und ausprobiert wurden einen Eindruck von nicht-standardisierten Methode Signaturen zu machen (mit dem Namen verschiedene Konventionen und schwieriger zu erraten, was sie taten), nicht einheitliche Schnittstellen (einige Operationen um String docs, während andere um json docs), nicht sehr flexibel (einige nur mit Streichern gearbeitet, andere nur mit Objekten) oder nicht sehr abstrakt (hatte CouchDB REST API zuerst sie richtig verwenden) zu kennen. Ich gehe davon aus und hoffen, dass sie seither gereift sind, aber zumindest dieses ist bis zu meinem Geschmack gestaltet.
Ich hoffe, dass CouchDBClient zu viel ein Gefühl der komfortablen Abstraktion ohne sich Gedanken über zugrunde liegende API erstellen und auf Ihre Anwendung nur konzentriert, und wie es speichert und abruft Objekte, die es braucht.