当前位置:  开发笔记 > 编程语言 > 正文

什么是使用Castle Active Record和Straight NHibernate的利弊?

如何解决《什么是使用CastleActiveRecord和StraightNHibernate的利弊?》经验,为你挑选了2个好方法。

假设编写nhibernate映射文件不是一个大问题....或者使用属性污染域对象也不是一个大问题....

优缺点都有什么?

有什么基本的技术问题吗?什么往往会影响人们的选择?

不太清楚所有的权衡是什么.



1> Neil Hewitt..:

AR最大的优势在于它为您提供了现成的存储库,并为您提供会话管理.无论是中ActiveRecordBaseActiveRecordMediator的,你会已经结束了NHibernate的下组装自己的礼物.避免XML映射是另一个优点.AR映射属性易于使用,但又足够灵活,甚至可以映射相当"遗留"的数据库.

AR的最大特点是它积极鼓励你错误地思考NHibernate.也就是说,因为默认会话管理是每次调用会话,所以您会习惯于持久化对象已断开连接,并且Save()在发生更改时必须为d.这不是NHibernate应该如何工作的 - 通常你有每个工作单元的会话或请求或线程,并且对象在会话的生命周期中保持连接,因此更改会自动保持.如果你开始使用AR,然后弄清楚你需要切换到每个请求的会话以使延迟加载工作 - 这在文档中没有很好地解释 - 当你没有期待的对象时,你会得到一个令人讨厌的惊喜当会话刷新时保存.

请记住,Castle团队将AR作为Castle Monorail的补充产品,这是一个类似于Rails的.NET框架.它的设计考虑到了这种用途.它不能很好地适应更分层,分离的设计.

使用它是什么,但不要把它当作NHibernate的快捷方式.如果你想使用NH但是避免映射文件,请使用NHibernate Attributes或更好的Fluent NHibernate.



2> tobinharris..:

我发现ActiveRecord是一个很好的工具包,非常适合我用它的小/中项目.像Rails一样,它为您做出了许多重要的决定,这可以让您专注于解决问题.

在我看来,职业和缺点是:

优点

让您专注于手头的问题,因为许多决定都是为您做出的.

包括成熟,非常有用的基础结构类(存储库,验证等)

编写AR属性比编写XML或NHibernate.Mapping.Attributes恕我直言更快.

良好的文档和社区支持

使用其他NHibernate功能相当容易.

一个安全的开始.你有一个get-out子句.如果你用AR撞墙,你可以慢慢回到定制的NHibernate解决方案.

非常适合域优先开发(生成数据库).

您可能还想查找ActiveRecord模式的优缺点

缺点

你不能假装NHibernate不存在 - 你仍然需要学习它.

如果您已经有一个遗留数据库可以使用,那么可能效率不高.

不透明的持久性.

内置映射是全面的,但对于某些项目,您可能需要在某些地方恢复为NHibernate映射.我没有遇到过这个问题,只是一个想法.

总的来说,我真的很喜欢ActiveRecord,它总是节省时间,主要是因为我似乎乐于接受图书馆中的决策和工具,并且随后花更多的时间专注于手头的问题.

我会尝试一些项目,看看你的想法.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有