Use CouchDB com .NET
Pergunta
Can .NET (código gerenciado) ler e escrever para CouchDB?
Gostaria de construir uma parte do meu projeto que faz a gestão de documentos usando CouchDB
Solução
Dê uma olhada na SharpCouch classe de utilitário.
É uma classe wrapper simples para o CouchDB HTTP API.
Outras dicas
É uma resposta final, mas fazer check-out Hammock . É ativo e entrar em uso em produção em vários projetos em breve e está recebendo atualizações regulares e correções. Além persistência objeto básico, Hammock dá-lhe:
- A verdadeira POCO. Você não precisa mesmo de uma propriedade 'id'; faixas Hammock que internamente.
- Suporte robusto para pontos de vista, incluindo um fácil de usar API fluente que tanto gera e vistas executado, e suporte para a criação de mapas personalizados / reduzir a vista.
- Suporte Anexos.
- Uma classe
Repository<>
genérico que ajuda a trazer suas consultas / views (ou seja _Design doc), juntamente com seu código C # aplicação. Repositórios são responsáveis ??por manter docs _design, e isso ajuda a manter visualizações do CouchDB do sentimento como procedimentos armazenados . - A unidade de teste completo. Este não é um software protótipo.
Sim.
aqui para obter instruções sobre como instalar o CouchDB no Windows.
Aqui está um link para o começando com o artigo C # wiki. Há um link para um .Net invólucro nesse artigo. Seria muito fácil para rolar o seu próprio bem.
Uma vez que você se comunica normalmente com CouchDB sobre REST e JSON, eu imagino que não seria muito difícil de usar JSON.NET e as normais WebClient / HttpWebRequest classes para fazê-lo. Eu não tentei isso sozinho, lembre-se ...
Um pouco tarde para o jogo, mas há um projeto de código aberto para um novo driver escrito em C # sobre o cliente HTTP assíncrono e, por padrão JSON.Net de Newtonsoft para serialização (comutável). MyCouch -. Simples cliente assíncrono CouchDB para .Net
pós Uma Introdução existe aqui: http://danielwertheim.se/get-up-and-running-with-couchdb-and-c-using-mycouch-on-windows/
Fique de olho no projeto Otomano um open-source escrito em C #. Ele ainda está em desenvolvimento pesado, mas eu queria indicá-lo como uma opção para projetos em fase de planejamento. Vou atualizar este post como ele fica mais perto da conclusão. Você pode ver a fonte em github . Leia o README para ver exemplos e que é possível com a versão atual.
- Ao contrário SharpCouch, que utiliza cordas pesadamente, Otomano usa os genéricos para serialização automática e desrialization para mapear um objecto a partir de uma sequência JSON e vice-versa. Tudo isso sem seus objetos que necessitam herdar off uma interface ou base classe.
- Ele usa Json.Net por baixo para lidar com a serialização JSON e desserialização.
- Mapas os códigos de erro RESTFul que CouchDB retornos em Exceções.
- Planejada Feature: Id geradores para gerar para o Id os objetos que estão sendo persistiu
- Característica planejada: Implícita offline bloqueio otimista via Documento Revisões, Otomano irá utilizar um Identidade Mapa para manter o controle de você e irá lançar uma exceção quando um conflito ocorre. Característica
- Planned:. Será Mono compatíveis Característica
- Planned: Esta é a estrada, mas eu faço plano em ter expressões LINQ para Mapa / Reduzir funções que você expressar a CouchDB usando JavaScript.
Ele é um relativamente novo projeto, mas muito ativa. Claro, eu sou um pouco tendencioso também. ; -)
também dar uma olhada em divã - um invólucro leve para a api cdb
Eu tenho usado JSON.NET em conjunto com classe do cliente http do starter kit MS REST para integrar a CouchDB e ele funciona muito bem.
wiki do CouchDB tem uma lista de API para C # (com as suas características) se quiser que o status mais recente: http://wiki.apache.org/couchdb/Getting_started_with_C%23
Muito fácil de usar API .NET para CouchDB incluída em WDK10 que você pode pegar de http: // code.google.com/p/skitsanoswdk/ é muito flexível e permite-lhe lidar com os seus dados sobre objetos e nível JSON puro.
As opções ( ordenados por mais recente update ):
- Skitsanos Webware Development Kit http://code.google.com/p/skitsanoswdk/source/browse/trunk/WDK10/WDK.API.CouchDb/ última setembro atualização. 2012
- Relax-net / Hammock http://code.google .com / p / relaxar-net / última novembro atualização. 2011
- CouchDB.Net http://couchdbnet.codeplex.com/ mais recente atualização dezembro 2010
- Otomano https://github.com/sinesignal/ottoman mais recente atualização dezembro 2010
- Divan https://github.com/foretagsplatsen/Divan mais recente atualização jul 2010
- SharpCouch http: //code.google.com/p/couchbrowse/source/browse/trunk/SharpCouch/SharpCouch.cs última agosto atualização. 2008
Verifique para fora Relaxe http://www.sharplearningcurve.com/wiki/Symbiote- Relax.ashx. Relax é um
"Net API abstração do (excelente) API RESTful. Ele inclui uma interface baseada em repositório para interação com documentos e um controlador de servidor para as tarefas de tipo administrativo. Do CouchDB"Uma mais - CouchDBClient: https://github.com/ttutisani/CouchDBClient
Disclaimer:. Eu sou o autor
Eu tentei fazer CouchDBClient mais amigável para o trabalho com objetos personalizados. - Isso é o que geralmente aplicativos armazenar no banco de dados
Quando eu comecei a escrever este quadro, todos os outros que eu encontrei e tentaram estavam fazendo uma impressão de assinaturas de método não-padronizados (nomeado usando várias convenções e mais difícil de adivinhar o que eles fizeram), e não as interfaces unificadas (algumas operações ao redor corda docs, enquanto outros ao redor docs JSON), não muito flexível (alguns trabalhavam apenas com cordas, outros apenas com objetos), ou não muito abstrato (tinha que saber CouchDB API REST primeiro a usá-los corretamente). Estou assumindo e esperando que eles têm amadurecido desde então, mas pelo menos este é projetado para o meu gosto.
Eu estou esperando que CouchDBClient pode criar um sentimento de abstração confortável sem se preocupar com subjacente API demais, e apenas se concentrar em sua aplicação, e como ele armazena e recupera objetos que ele precisa.