Utiliser CouchDB avec .NET

Est-ce que .NET (code géré) peut lire et écrire sur CouchDB?

Je voudrais construire une partie de mon projet qui gère les documents avec CouchDB

Jetez un coup d’œil à la classe d’utilitaires SharpCouch .

C’est une classe wrapper simple pour l’API HTTP CouchDB.

C’est une réponse tardive, mais consultez Hamac . Il est bientôt actif et en production sur plusieurs projets et reçoit régulièrement des mises à jour et des correctifs. Outre la persistance des objects de base, Hammock vous donne:

  • True POCO. Vous n’avez même pas besoin d’une propriété ‘id’; Hamac retrace cela en interne.
  • Prise en charge robuste des vues, y compris une API facile à utiliser qui génère à la fois des vues ET exécute des vues et prend en charge la création de vues de carte / de réduction personnalisées.
  • Les pièces jointes prennent en charge.
  • Une classe générique de référentiel <> qui aide à rassembler vos requêtes / vues (c.-à-d. _Design doc) avec votre code d’application c #. Les référentiels sont responsables de la maintenance des documents _design, ce qui évite que les vues CouchDB ne ressemblent à des «processus stockés».
  • Une suite de tests complète. Ce n’est pas un logiciel prototype.

Oui.

Voir ici pour des instructions sur l’installation de CouchDB sur Windows.

Voici un lien vers le lancement avec l’ article wiki C # . Il existe un lien vers un wrapper .Net dans cet article. Il serait assez facile de rouler vous-même.

Étant donné que vous communiquez généralement avec CouchDB sur REST et JSON, j’imagine qu’il ne serait pas trop difficile d’utiliser JSON.NET et les classes WebClient / HttpWebRequest normales pour le faire. Je n’ai pas essayé moi-même, remarquez …

Peu de temps après le début du jeu, il existe un projet open source pour un nouveau pilote écrit en C # sur le client HTTP asynchrone et, par défaut, JSON.Net de Newtonsoft pour la sérialisation (commutable). MyCouch – Simple client CouchDb asynchrone pour .Net.

Un post de démarrage existe ici: http://danielwertheim.se/get-up-and-running-with-couchdb-and-c-using-mycouch-on-windows/

Gardez un oeil sur Ottoman, un projet open-source écrit en C #. Il est encore en plein développement, mais je voulais le signaler comme une option pour les projets en cours de planification. Je mettrai à jour ce message au fur et à mesure de son achèvement. Vous pouvez voir la source sur github . Lisez le README pour voir des exemples et ce qui est possible avec la version actuelle.

  • Contrairement à SharpCouch, qui utilise beaucoup de chaînes, Ottoman utilise des génériques pour la sérialisation et la désrialisation automatiques afin de mapper un object à partir d’une chaîne JSON et inversement. Tout cela sans que vos objects aient besoin d’hériter d’une interface ou d’une classe de base.
  • Il utilise Json.Net ci-dessous pour gérer la sérialisation et la désérialisation JSON.
  • Mappe les codes d’erreur RESTFul renvoyés par CouchDB dans les exceptions.
  • Fonctionnalité prévue: Générateurs d’identifiants pour générer des identifiants pour les objects en cours de conservation
  • Fonctionnalité prévue: Verrou optimiste implicite hors ligne via des révisions de document, Ottoman utilisera une carte d’identité pour garder une trace pour vous et lancera une exception en cas de conflit.
  • Caractéristique prévue: Ce sera compatible Mono.
  • Fonctionnalité prévue: Ceci est sur la route, mais j’ai l’intention d’avoir des expressions LINQ pour les fonctions Map / Reduce que vous exprimez à CouchDB en utilisant JavaScript.

C’est un projet assez nouveau, mais très actif. Bien sûr, je suis aussi un peu partial. 😉

jetez également un coup d’oeil au divan – un emballage léger pour l’api de cdb

J’ai utilisé JSON.NET en conjonction avec la classe de client http du kit de démarrage MS REST pour l’intégrer à CouchDB et cela fonctionne très bien.

Le wiki de CouchDB a une liste d’API pour C # (avec leurs fonctionnalités) si vous voulez le dernier statut: http://wiki.apache.org/couchdb/Getting_started_with_C%23

Très facile à utiliser .NET API pour CouchDB inclus dans WDK10 que vous pouvez récupérer depuis http://code.google.com/p/skitsanoswdk/

Les options ( commandées par la dernière mise à jour ):

Découvrez Relax http://www.sharplearningcurve.com/wiki/Symbiote-Relax.ashx . Relax est une “abstraction d’API .Net de l’excellente API RESTful de CouchDB. Elle comprend une interface basée sur un référentiel pour l’interaction de documents et un contrôleur de serveur pour les tâches de type administratif.”

Un de plus – CouchDBClient: https://github.com/ttutisani/CouchDBClient

Disclaimer: je suis l’auteur.

J’ai essayé de rendre CouchDBClient plus convivial pour travailler avec des objects personnalisés – c’est généralement ce que les applications stockent dans la firebase database.

Quand j’ai commencé à écrire ce framework, tous les autres que je trouvais et essayais faisaient une impression de signatures de méthodes non standardisées (nommées en utilisant différentes conventions et plus difficiles à deviner), pas d’interfaces unifiées d’autres autour de json docs), pas très flexibles (certains ne fonctionnaient qu’avec des chaînes, d’autres uniquement avec des objects), ou pas très abstraits (il fallait d’abord connaître l’API REST de CouchDB pour les utiliser correctement). Je suppose et espère qu’ils ont mûri depuis, mais au moins celui-ci est conçu à mon goût.

J’espère que CouchDBClient peut créer un sentiment d’abstraction confortable sans se soucier de l’API sous-jacente, et se concentrer uniquement sur votre application et sur la manière dont elle stocke et récupère les objects dont elle a besoin.