aai*_*mnr 9 architecture django asp.net-mvc domain-driven-design ruby-on-rails
我已经习惯了所有典型的领域驱动设计实践,这些实践在大多数与现代.net编程有关的出版物和博客中都很普遍.因此,令我惊讶的是,当我与一些Django人交谈时,他们并不关心持久性无知,视图模型等.
当你在Django或Rails中使用Active Record时,缺乏持久性无知部分似乎是可以理解的,在ASP.NET MVC领域工作了一段时间后,在视图中使用域实体的neverthelsess看起来像纯粹的邪恶(我想与Java mvc框架相同).
这不是一个案例,它涉及绝大多数Django/Rails项目(总是被视为Überagile).
这是为什么?是不是因为动态语言功能使像DI这样的实践变得不必要了?或者也许在一个企业化的.NET/Java世界中有过多的过度工程?
你知道更多的架构差异吗?是否有任何可以从.net/java世界中学到的经验教训,或者相反,是不是rubist和pythonistas通常没有用足够大的项目来理解这些模式的优点?
iai*_*ain 11
很好,已经有很多讨论了.以下是我对此事的看法:
通常,直接访问表单的域模型要容易得多.这是在Rails中编写代码的东西之一(我不知道Django,但我猜它是一样的)提高了生产力.几乎没有任何编码需求:拥有一个数据库表,在中间构建一些html和一个简单的控制器,你就完成了.因为几乎没有涉及任何代码,所以可以更快地进行更改,这就是它在敏捷环境中运行良好的原因.
但是,有一段时间不足.有时,您的应用程序太复杂,无法使其正常工作.那时您可以添加ViewModels,Presenters,Facades或任何您想要调用它们的内容.没有什么能阻止你在Rails或Django中这样做.实际上,Rails 3引入了ActiveModel作为一组mixin,使得每个对象在处理ActiveRecord时都可以轻松使用表单.
所以问题不在于为什么Rails和Django没有这样做,但什么时候应该使用它?呼叫DDD过度工程也不是真的.这是关于做"足够"来解决你所拥有的问题.保持代码量和复杂性尽可能低,您将更容易维护.
我同意从Java/.NET中可以吸取教训.通常他们已经得到了很好的设计模式.但是说Rubyists和Pythonistas没有做足够多的大型项目是不正确的.权力来自于认识到什么时候可以摆脱一个简单的解决方案.
我确实认为Java程序员(我没有.NET程序员经验)倾向于过度设计.也许这是他们使用的框架.它似乎试图迫使程序员做"正确的方式",从而使它过于复杂.
归档时间: |
|
查看次数: |
1443 次 |
最近记录: |