Asp.Net大型项目实践-关键技术方案选择理由及思路
阅读: 728 评论: 18 作者: 传说中的弦哥 发表于 2009-12-30 10:23 原文链接
虽然我不喜欢讨论太多理论概念上的东西,但各位“砖家”还是提出了很多非常有针对性的意见,望此帖不要成为口水战才好....现答疑如下(有很多个人理解,不一定正确):
砖家意见请参见:Asp.Net大型项目实践系列导航
为什么选择NHibernate
理由1:对象关系映射技术(ORM)的最主要目的是为了解决关系型数据库与面向对象编程技术不匹配的阻抗问题,何为阻抗?通俗的说面向对象的类往往都存在继承和类间关系与数据库的表不是一一对应的,ORM技术可能主要是想解决这个问题。这里需要说一下好多同学和砖家在用ORM的时候还是喜欢先建表,再工具生成和表字段一一对应的所谓实体,个人认为这不是O->R M,而是R->O M,实际上这种做法完全没有体现ORM的最关键思想,还是以前的“表驱动”(通俗解释:先设计表)而非“业务领域驱动”(通俗解释:先设计真正面向对象的业务实体)。因为我的系统业务比较复杂多变,我希望我能尽可能的随心所欲的按照面向对象的思想去设计我的业务实体,充分发挥面向对象思想的作用,不用关心这些设计是否能被持久化,显然NHibernate让我做到了这点,这是我在项目中选择使用ORM技术和NHibernate的最主要目的。
理由2:通过NHibernate和我们的合理设计,实现了对团队人员在开发的时候屏蔽掉数据库访问的技术细节,让我们更专注于业务和UI实现,在绝大多数情况下(复杂的报表查询和大批量操作依然可能需要存储过程实现)不必去关心SQL语句之类的,这对于一个绝大多数都是数据库操作的信息管理系统来说无疑具有很重要的意义。任何一个技术解决方案都不可能覆盖100%的需求,能用20%的精力,解决90%的问题就算是很成功了。
理由3:因为这个系统并不是只给一家医院使用,不同医院所使用的数据库产品是不一样的。从工程角度不能强制要求客户使用固定的数据库产品,NHibernate很大程度上屏蔽了不同数据库产品之间差异,使我不必对不同数据库产品分别写具体实现。
关于效率:“效率YY砖家”说:NHibernate效率低;“大型系统砖家”说:如果并发1W,NHibernate玩不转;弦哥说:
NHibernate这个技术本来长项就不在效率,而在以上3个理由(也许还有一些..),拿NHibernate和直接Ado.Net比效率就像拿c#和汇编比效率一样可笑。
Hibernate+Spring在J2EE里长期作为教科书式的解决方案,无论在国内还是国外都有非常多的大型系统成功案例,从这个意义来说也许Hibernate在效率上并非如此不堪,怎么到了.Net这边就成了效率低下的代名词,貌似说到Hibernate,各位砖家就以效率低一棒子打死,嗤之以鼻。
对于NHibernate的效率弦哥也整了些典型的场景和模拟数据用LoadRunner测了下,并非有各位砖家说的那么夸张,请问各位砖家测过没?
效率问题是一个复杂而综合的问题,如果忽略项目背景,实际业务需求,技术实现方式,以及多种软硬件因素的影响,片面的YY效率无疑是非常不严谨且非常可笑的。弦哥做所谓大并发,大数据量的电信,银行项目也有一些,对于这类项目上线运行的效率瓶颈几乎都在IO,往往都是通过Oracle优化专家和硬件方式解决。比如像上面那位“大型系统砖家”所说的1W并发的项目,同时并发1W是啥概念?没有用小机跑,整啥也白瞎,是吧....也不知道这位砖家见过小机没有....
为什么选择EXTJS
理由1:客户对UI交互要求非常高,又要求用B/S结构应用程序,Ext超强的UI组件交互能力正是我需要的
理由2:面向对象的Javacript编程,组件化编程,相比用以前的第三方服务器控件来说,可维护性,可读性和编码体验不知道要好多少...
理由3:由于客户对UI交互要求非常高,不用第三方UI组件是不可能的了,用第三方最大的风险是遇到Bug和自带功能不能满足的需求,ExtJs的开源和良好的面向对象能让我方便的重写源码实现任何我想要的功能。
理由4:我是内网系统,无需理会苛刻的网速问题
理由5:不可否认,在竞标或推销的时候美观的界面和交互对客户的好感度有相当大的影响。用EXT大多数情况下,我无需关系任何美工,Css,Html等烦人的细节
理由6:对于非常复杂的页面以及大表单页面,Ext在IE下确实有点延迟(这个效率问题的瓶颈是在客户端),所以我们在实施的时候都给客户用Google浏览器,涉及到医保的ActieX用除外(用google浏览器的IETab插件即可),Google浏览器下Ext的表现让人非常非常满意(V8引擎真强悍呀)...就算是很复杂的交互和大量组件存在于一个页,交互操作基本都是瞬时的
任何技术解决方案都不是银弹,ExtJs也不是UI解决方案的银弹,没有最好的技术,只有最适合你项目的技术,不知道各位“砖家”还有啥理由让我不用Ext....
为什么选择Asp.Net MVC+ExtJs
待续...
更多技术方案选择理由及思路待续...
推荐链接:Windows 7专题发布