我想知道我是否做出了正确的决定。我正在开发一个应用程序,允许用户混合来自本地数据库(可能是SQL CE或SQLite)和远程共享数据库(很可能是MySQL)的数据库条目。理想情况下,它必须是灵活的并且与几种数据库服务器类型兼容(静态地按照初始配置,而不是动态地混合几种类型)但这不是一个显示阻止。
代码是C#,.NET 4。
当然,我正在考虑NHibernate,因为它在版本3.0中具有LINQ功能,这是代码可读性和效率的优势,而模型优先方法比实体框架更自然。它还有混合数据库部分的Shards,这应该更容易处理。另一个选项是EF 4,我不喜欢它,因为它在.NET上下文和Visual Studio中完全支持,并且在那里有一个充满希望的未来。
碎片是否足够成熟?它已经坚持3 beta了很长一段时间,看起来像一个死的项目,让人们基于这个扩展部署专业应用程序?它有未来吗?或者还有其他选择吗?
NHibernate 3在Mono上运行吗?我想是的,但实际的确认会很棒。如果必须将Web服务器开发为替代接口,那将是EF的另一个优势。
提前感谢您提供任何信息或反馈!
更新1
显然.NET 4是一个问题,为了使用NHibernate,.NET 3.5更加明智。 此外,SQLite和SQL CE或WPF等框架的其他部分也存在明显的问题。
NHibernate是否允许跨不同数据库类型(例如MySQL和SQLite)进行分片?
所以我开始相信EF 4对于客户端更安全,而NHibernate对于可能的ASP.NET接口更安全。
答案 0 :(得分:0)
设计Sharding(对于已知模式)将调用重定向到已知服务器,即以a,b,c,d开头的名称到服务器a和e,f,g,h到服务器b等。
我还没有听说过它正在使用跨数据库服务器make。我怀疑这是否有效。
Sharding有它的位置,但我可以想象,如果不同的分片具有不同的性能配置文件,可能会出现难以解决的间歇性问题。
此链接表示可以在mono ... https://nhibernate.jira.com/browse/NH-2312
下运行NH3远程共享数据库我倾向于使用WCF或REST通过已知的API抽象出来。