php 可维护,php – 大型,可扩展和可维护的Web应用程序中的ORM或SQL?

Ajsie,

我的投票是针对ORM.我使用NHibernate.它并不完美,并且有一个相当大的学习曲线.但代码更易于维护,更多OOP.除非你喜欢大量的重复代码,否则几乎不可能在没有ORM的情况下使用OOP创建应用程序.它肯定会消除你绝大多数的SQL代码.

而这是另一回事.如果您打算构建一个OOP系统,那么无论如何您最终都会编写自己的O / R Mapper.您需要调用动态SQL或存储过程,将数据作为读取器或数据集,将其转换为对象,将关系连接到其他对象,将对象修改转换为sql插入/更新等.您所写的将是比NHibernate更慢更多的错误或长期在市场上出现的东西.

您唯一的另一个选择是构建一个以数据为中心的程序性应用程序.是的,它可能在某些领域表现更快.我同意表现很重要.但最重要的是它的快速足够.如果你在这里和那里保存几毫秒的程序代码,你的用户将不会注意到性能的提高.但是你会注意到糟糕的代码.

ORM中最大的性能瓶颈是以预取和延迟加载对象的正确方式.这会导致ORM的n查询问题.但是,这些很容易解决.您只需要对对象查询进行性能调优并限制对数据库的调用次数,告诉它何时使用连接等.NHibernate还支持丰富的缓存机制,因此您根本不会访问数据库.

我也不同意那些表示性能与用户有关并且维护是关于编码员的人.如果您的代码不易维护,那么添加功能将会出错并且速度很慢.您的用户会关心这一点.

我不会说每个应用程序都应该有一个ORM,但我认为大多数都会受益.另外,不要害怕在必要时偶尔使用带有ORM的本机SQL或存储过程.如果您必须对数百万条记录进行批量更新或编写非常复杂的报告(希望针对单独的非规范化报告数据库),那么直接SQL就是可行的方法.使用ORM进行OOP,事务,业务逻辑和C.R.U.D.东西,并使用SQL作为异常和边缘情况.

我建议在NHibernate和Onion Architecture上阅读Jeffrey Palermo的内容.另外,参加他的敏捷训练营或其他课程来学习O / R Mapping,NHibernate和OOP.这就是我们使用的:NHibernate,MVC,TDD,依赖注入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值