NHibernate还是EF,分片还是手动分片?

6
我想知道我是否做出了正确的决定。我正在开发一个应用程序,允许用户从本地数据库(可能是SQL CE或SQLite)和远程共享数据库(最可能是MySQL)混合数据库条目。理想情况下,它必须灵活,并且与几种数据库服务器类型兼容(根据初始配置静态设置,不会动态混合几种类型),但这不是关键问题。
代码是C#,.NET 4。
自然而然,我考虑使用NHibernate,因为它在3.0版本中具有LINQ,这对于代码可读性和效率来说是一个优点,而且模型优先方法比Entity Framework更自然。它还具有Shards以进行混合数据库部分,这应该更容易处理。另一个选择是EF 4,否则我会更喜欢它,因为它在.NET上下文和Visual Studio中得到完全支持,并且在那里有一个有前途的未来。
Shards成熟了吗?它已经陷入了3 beta很长时间了,看起来像是一个死项目,人们是否部署了基于这个扩展的专业应用程序?它有未来吗?还是有其他选择?
NHibernate 3在Mono上运行吗?我认为是的,但实际确认会很好。如果必须开发替代接口的Web服务器,那将是另一个优势。
感谢您提前提供任何信息或反馈!
更新1
显然,.NET 4是一个问题,为了使用NHibernate,.NET 3.5更明智。此外,SQLite和SQL CE或其他框架部分(如WPF)显然存在问题。
NHibernate是否允许在不同的数据库类型之间进行分片(例如MySQL和SQLite)?
所以我开始相信,对于客户端来说,EF 4更安全,而对于可能的ASP.NET接口,NHibernate更好。

来吧,自2010年以来就没有人回答这个问题了吗?哈哈。 - 7wp
“Shards是否足够成熟?”你是指NHibernate.Shards,即Hibernate.Shards的dotnet端口吗?还是你指的是数据库分片的概念? - k3b
我本来是想用NHibernate.Shards的,但在尝试了一下NHibernate之后,我已经得到了答案:NHibernate本身还远未成熟,所以我使用了EF。不幸的是,连接器还不太完善,特别是对于MySQL而言,但没有什么是完美的;-) - RedGlyph
我在几个项目中使用了NHibernate和.NET 4.0,没有遇到任何问题。 - Daniel Schilling
2
NHibernate本身远未成熟? - Tahbaza
1个回答

0

Sharding旨在(针对已知模式)将调用重定向到已知服务器,即以a、b、c、d开头的名称重定向到服务器a,以e、f、g、h开头的名称重定向到服务器b等。

我没有听说过它被用于跨数据库服务器制作。我怀疑这是否有效。

Sharding有其优点,但我可以想象如果不同的分片具有不同的性能配置文件,则可能会出现难以解决的间歇性问题。

有这个链接表明可以在mono下运行NH3... https://nhibernate.jira.com/browse/NH-2312

远程共享数据库我倾向于通过已知API使用WCF或REST进行抽象处理。


谢谢,这与我的印象相符,也许我一开始有点过于乐观了。 - RedGlyph
我不记得使用过IP地址,但感谢您的更正@Daniel Schilling。 - JTew
没问题。看起来在2010年末和2011年初有几个月IP地址是正确的URL。 - Daniel Schilling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接