2009-06-26 115 views

回答

9

既然你通常使用CouchDB通过REST和JSON沟通,我想这不会是太难用了JSON.NET和普通的WebClient/HttpWebRequest类来完成它。我没有自己尝试过,介意你...

+0

在这里评论一个小题目 - 你的经验与JSON.NET有什么关系? .net 3.5 sp1是否有方法将数据序列化为JSON? – Developer 2009-06-26 17:07:58

+0

我没有使用内置的序列化程序,而且我只使用了JSON.NET - 但后者在StackOverflow JSON中运行良好。 – 2009-06-26 17:16:55

+1

如果您想解析JSON而不将其反序列化为固定的C#类,那么JSON.NET的LINQ支持非常方便 - 它与使用LINQ-to-XML非常相似。 – 2009-06-26 17:47:03

10

是的。

有关在Windows上安装CouchDB的说明,请参阅here

这里是getting started with C# wiki文章的链接。在那篇文章中有一个到.net包装的链接。推出自己的产品也很容易。

+1

我想在这里做一个小小的更新:我在我的windwos笔记本电脑上安装了couchDb,这非常简单。只要去couchbase网站,下载并安装。您将在日记中与蒲团玩 – NicoGranelli 2011-07-11 02:55:51

+0

@NicoGranelli,感谢您的更新。窗户上的Couchdb在过去的两年里已经走过了很长一段路。 – ScottS 2011-07-11 16:20:08

3

我已经使用JSON.NET与 MS REST入门套件的http客户端类集成到CouchDB ,它工作得很好。

6

请关注Ottoman用C#编写的开源项目。它仍处于严重的发展阶段,但我想在计划阶段将其作为项目的一个选项。随着它接近完成,我会更新这篇文章。您可以在github上查看源代码。阅读自述文件以查看示例以及当前版本的可能性。

  • 不同于SharpCouch,它使用 重,奥斯曼用来 自动序列化和 desrialization用于从JSON字符串映射对象 反之亦然泛型字符串。 所有这些没有您的对象需要 继承关闭类或基地 类。
  • 它使用Json.Net下面的 来处理JSON序列化和 反序列化。
  • 将CouchDB 返回的RESTFul错误代码映射到异常。
  • 计划的特点:通过文件隐Offline Optimistic Lock 修订,奥斯曼将使用 Identity Map保持为 您的轨道,并会抛出异常时 :身份证 发电机生成ID,用于 对象被持久化
  • 计划功能发生冲突。
  • 计划功能:它将是单声道兼容的。
  • 计划中的功能:这是在路上,但我确实计划 有LINQ表达式 Map/Reduce functions您 使用JavaScript表示到CouchDB。

这是一个相当新的项目,但非常活跃。当然,我也有点偏颇。;-)

21

它是一种迟到的回答重量轻的包装,但检查出Hammock。它很活跃,很快就会投入到几个项目的生产使用中,并且会定期接受更新和修复。除了基本的对象持久性,Hammock给你:

  • 真正的POCO。你甚至不需要'id'属性;吊床跟踪内部。
  • 强大的支持视图,包括一个易于使用的流利的API,既生成AND执行视图,并支持创建自定义地图/减少视图。
  • 附件支持。
  • 一个通用的存储库<>类,它有助于将查询/视图(即_Design doc)与您的c#应用程序代码一起使用。仓库负责维护_design文档,这有助于保持CouchDB视图不像“存储过程”那样。
  • 完整的单元测试套件。这不是原型软件。
2

的选项(通过最新更新订购):

0

另外一个问题 - CouchDBClient:https://github.com/ttutisani/CouchDBClient

声明:我是作者。

我试图让CouchDBClient更加友好,可以使用自定义对象 - 这就是通常应用程序存储在数据库中的东西。

当我开始编写这个框架时,我发现和尝试的所有其他人都会对非标准化方法签名(使用各种约定进行命名,难以猜测他们做了什么)产生印象,而不是统一接口(某些操作字符串docs,而其他人则围绕着json docs),不是很灵活(有些只使用字符串,有些只使用对象),或者不是很抽象(必须先了解CouchDB REST API才能正确使用它们)。我假设并希望从那时起他们已经成熟了,但至少这个是根据我的口味设计的。

我希望CouchDBClient可以创建一个舒适的抽象感,而不用担心底层API太多,只关注你的应用程序,以及它如何存储和检索它需要的对象。