2009-06-26 20 views
51

¿Puede .NET (código administrado) leer y escribir en CouchDB?Usar CouchDB con .NET

me gustaría construir una parte de mi proyecto que hace la gestión de documentos usando CouchDB

Respuesta

19

Eche un vistazo a la clase de utilidad SharpCouch.

Es una clase de contenedor simple para la API HTTP de CouchDB.

+0

'usando LitJson; //? ' –

+0

Parece que SharpCouch usa LitJson para tareas Json en lugar de reescribir la rueda ... – ChrisFletcher

+1

Parece que la respuesta está desactualizada. SharpCouch: _último cambio 5 de agosto de 2008_ - es posible que el código esté desactualizado. A la respuesta a continuación sobre Hamaca: _último compromiso, marzo de 2011. Estado del proyecto: archivado_. Parece que ambos proyectos están muertos. Hay otro mencionado por @Daniel https://github.com/danielwertheim/mycouch que está bastante vivo e incluso tiene una implementación de Aspnet.Identity CoachDB. – Kuncevic

9

Dado que por lo general se comunica con CouchDB sobre REST y JSON, me imagino que no sería demasiado difícil de usar JSON.NET y las clases normales de WebClient/HttpWebRequest para hacerlo. No lo he intentado yo mismo, cuenta ...

+0

Comentando un poco sobre el tema aquí: ¿cómo ha sido tu experiencia con JSON.NET? ¿.net 3.5 sp1 tiene métodos para serializar datos a JSON? – Developer

+0

No he usado el serializador integrado, y solo he usado JSON.NET un poco, pero este último ha funcionado bien con StackOverflow JSON. –

+1

El soporte LINQ de JSON.NET es muy útil si quiere analizar JSON sin deserializarlo en una clase C# fija, es bastante similar al uso de LINQ-to-XML. –

10

Sí.

Consulte here para obtener instrucciones sobre la instalación de CouchDB en Windows.

Aquí hay un enlace al artículo de wiki getting started with C#. Hay un enlace a un contenedor .Net en ese artículo. Sería muy fácil hacer lo propio también.

+1

Quiero hacer una pequeña actualización aquí: instalé couchDb en mi laptop windwos, y fue muy fácil. Solo para ir al sitio couchbase, descárgalo e instálalo. Estarás jugando con el futón en el momento – NicoGranelli

+0

@NicoGranelli, gracias por la actualización. Couchdb en Windows ha recorrido un largo camino en los últimos dos años. – ScottS

+0

Encontré esta pregunta en una búsqueda, usé el enlace del artículo de la wiki y terminé usando [LoveSeat] (https://github.com/soitgoes/LoveSeat) – Chris

3

He usado JSON.NET junto con la clase de cliente http del kit de inicio MS REST para integrarlo a CouchDB y funciona muy bien.

6

Mantenga un ojo en Ottoman un proyecto de código abierto escrito en C#. Todavía está en desarrollo, pero quería señalarlo como una opción para proyectos en las etapas de planificación. Actualizaré esta publicación a medida que se acerque a su finalización. Puede ver la fuente en github. Lea el archivo README para ver ejemplos y lo que es posible con la versión actual.

  • A diferencia SharpCouch, que utiliza cadenas en gran medida, otomana utiliza genéricos para serialización automática y desrialization para mapear un objeto de una cadena JSON y viceversa. Todo esto sin que sus objetos necesiten para heredar de una interfaz o base clase.
  • Utiliza Json.Net debajo de maneja la serialización JSON y la deserialización .
  • Registra los códigos de error RESTFul que CouchDB devuelve en Excepciones.
  • funciones previstas: Id generadores para la generación de ID para los objetos que persistió
  • funciones previstas: Implícito Offline Optimistic Lock a través de documentos Revisiones, otomana utilizará un Identity Map para realizar un seguimiento de usted y será una excepción cuando un conflicto ocurre.
  • Función planificada: Será compatible con Mono.
  • funciones previstas: Este es el camino, pero lo hago plan de en tener expresiones LINQ para Map/Reduce functions que Express para CouchDB uso de JavaScript.

Es un proyecto bastante nuevo, pero muy activo. Por supuesto, también soy un poco parcial.;-)

4

también echar un vistazo a divan - un contenedor de peso ligero para la API CDB

+0

Necesito almacenar POCO en couchDB. Probé Divan, DreamSeat, LoveSeat, Relax. Tuve problemas con aquellos excepto Divan. Estoy en VS 2010 + .NET 4. –

21

Su una respuesta tardía, pero se echa un vistazo Hammock. Está activo y entrará en uso de producción en varios proyectos pronto y recibe actualizaciones y correcciones periódicas. Además de la persistencia básica de objetos, Hammock le ofrece:

  • True POCO. Ni siquiera necesitas una propiedad 'id'; Hammock rastrea eso internamente.
  • Compatibilidad robusta para vistas, incluida una API fluida y fácil de usar que genera Y ejecuta vistas y admite la creación de vistas personalizadas de mapa/reducción.
  • Soporte de archivos adjuntos.
  • Repositorio genérico <> clase que ayuda a traer sus consultas/vistas (es decir, _Doc de diseño) junto con su código de aplicación C#. Los repositorios son responsables de mantener los documentos de diseño, y esto ayuda a evitar que las vistas de CouchDB se sientan como 'procesos almacenados'.
  • Un conjunto de pruebas de unidades completas. Esto no es un software prototipo.
+1

Gracias, relax-net parece prometedor. – Developer

+0

Esto se ve increíble o.O – SvenFinke

0

Echa un vistazo a Relax http://www.sharplearningcurve.com/wiki/Symbiote-Relax.ashx. Relax es una abstracción de la API .Net de la API RESTful de CouchDB (excelente). Incluye una interfaz basada en repositorio para interacción de documentos y un controlador de servidor para tareas de tipo administrativo.

2

Las opciones (ordenado por última actualización):

0

Uno más - CouchDBClient: https://github.com/ttutisani/CouchDBClient

Descargo de responsabilidad: soy el autor.

Intenté hacer que CouchDBClient fuera más amigable para trabajar con objetos personalizados; eso es lo que generalmente las aplicaciones almacenan en la base de datos.

Cuando comencé a escribir este framework, todos los demás que encontré e intenté fueron una impresión de firmas de métodos no estandarizados (nombrados usando varias convenciones y más difíciles de adivinar), interfaces no unificadas (algunas operaciones alrededor string docs, mientras que otros alrededor de json docs), no muy flexible (algunos solo funcionaban con cadenas, otros solo con objetos), o no muy abstractos (tenía que saber CouchDB REST API primero para usarlos correctamente). Estoy asumiendo y esperando que hayan madurado desde entonces, pero al menos este está diseñado a mi gusto.

Espero que CouchDBClient pueda crear una sensación de abstracción cómoda sin preocuparse demasiado por la API subyacente, y simplemente centrándose en su aplicación y en cómo almacena y recupera los objetos que necesita.