按我的想法,从物理视图来看,b/s结构分为客户端browse,web服务器,数据库三个层次。由于b/s系统的物理视图通常都是这样,所以分层一般指的是UI层、业务规则层、数据访问层、数据存储层,而现在像.net与j2ee这样的架构中对每一层都提供了大量的框架与类库,像.net中的asp.net,ado.net就分别了UI层与数据访问层提供了框架,而j2ee中,struts/spring等为UI层提供了框架,jdo/ejb为数据访问层提供了框架。
虽然在j2ee与.net都提供了相关的构架参考的示例,用j2ee与.net中的人都知道这个构架是怎么样的,但是这些构架的实际应用情况是什么呢,我有以下疑问:
1. 像asp这样,或是在asp.net或是jsp直接通过ado.net或是jdbc在UI层访问数据库的,也是感觉最混乱的一种方式,就是简单的二层结构,现在到底有多少人现在有这个结构,你们觉得有什么好处与问题,你的系统的规模大吗?
2.如果你使用UI层、业务规则层、数据访问层这样的多层构架,你在数据访问层使用专业的数据映射构架(如jdo,EntityBean,Hibernate)吗,你觉得带来的效果好吗?如果没有使用这些构架,你们公司有没有专门的API或是架构来解决这个问题?
3.你在UI层、业务规则层、数据访问层是使用什么来传数据的,dataset还是ResultSet,或是根据数据库结构自动生成的数据对象?
4.事务处理是数据库、业务规则层、或是直接在UI层来完成?
5.你觉得这样的参考构架有实际意义吗?你们公司有没有按这个参考构架来做项目?如果对参考构架进行了修改、裁减、完善、细划,请谈谈是怎么做的,带来了什么好处?
6.按一个架构来实现的系统能不能很好的支持分布式布置与负栽均衡?
7.你使用了数据缓存了吗?数据缓存一般放在哪一层?数据缓存一般缓存什么样的数据,更新策略是什么?它带来了性能上显著的提升吗?
8.关于像报表、工作流这样的中间件,你使用的是第三方提供的还是自己写的,你是如何把根据这样的中间件提供的构架来扩展你的系统,还是把中间件融合到你的系统中?
9.你的系统在开发过程中注重复用吗?像UI层控件、特殊的业务处理的API这样的比较容易实现复用,但是像组织机构、权限管理,审批工作流这样关系到多层的功能上的复用,你保留的只是设计思想,还是把代码设计得比较通用呢?
10.你的项目注重软件工程吗?都使用了什么开发过程,使用了什么case工具,项目管理、配置与变量管理工具,BUG追踪工具?这样的工具与过程带来了显著的效果吗,还是把你的团队带入了文档与工具使用的泥潭?
11.你的项目是按功能还是接层来进行模块划分?有没有针对模块进行专门的单元测试?如果进行单元测试,你们使用什么样的单元测试架构(如xUnit),如果单元测试时本模块要调用的模块还没有完成,你一般是怎么做?
12.你的项目在客户端使用了activeX控件了吗?一般用来实现什么功能?
在这里我并不是想讨论什么要的构架是最合理的。事实上,根据项目的规模、应用领域、商业环境、技术优势的不同,有各种不同的构架供大家选,而有关如何先这些构架的资料,在msdn,dotnet社区等地方都有很多文章供参考,而每一个版本的vs.net发布时都会带几个多层构架的应用例子。所以我在这里提出的这个问题,是希望大家能够根据你的项目的实际应用情况,把你在应用中得到的经验与遇到的问题与大家一起分享。
架构的选择没有定式,应该结合实现情况来进行选择。但是具体该怎么选择,事实上大家都在摸索,所以我希望大家能够把你的经验分享出来。
http://community.csdn.net/Expert/topic/3880/3880135.xml?temp=.3406793
http://community.csdn.net/Expert/topic/3909/3909315.xml?temp=.6522333