1 架构肯定要在多年的基础上做好了的, 适用自己所在行业任何实际项目中.
2 有新项目,如果与以前的功能不同, 用自己的架构基础上开发功能.
架构 包括内容:
一般java项目是:
a 集成连接池(apache的就行),
b 日志(apache的就行)
c 导出excel(apache的就行)
d spring,
e (不要hibernate,可以考虑ibatis,一般jdbc自己在spring基础上做,性能最好,扩展最方便)
d axis(apache,webserivce包)
e mima(apache的网络通信包)
f 中小项目要集成内存数据库,如果缓存 200万以内的记录, 直接自己用map缓存性能最强,最方便.
g 使用者表,功能表,使用者机构
h 登录过程,
i 在g,h的基础上做 公共授权核心处理,提供所以用户与功能的授权api
j 如果有流程,则在 g,h,i的基础上再开发工作流核心处理: 流程定义,流程实例产生,流程ID产生,流程控制(下一步,回退,暂停等功能)
以上就是一个软件的基础要素,
-----------------------------
下面是一个软件结构的核心层次定义,就是任何功能开发,都要用这种试,新手,老新一用就通,维护过程统一.
1 dao层接口,jdbc方式实现,net网络方式实现,用来查询,增加,修改数据最底层操作,
定义以下几个接口 insert, delete, update, findData(带where条件半通用查询), 批insert,批update,批delte, 7个基本接口.
2 service层接口,pojo实现, 基本接口也如上,
serivce一般用来封装 dao层给外面的程序用, dao层只能是serivce调用,其它功能中最多只能到serivce层.
3 business,业务层, 复杂的业务处理,if判断,授权决断,数据转换.....所有业务内容,处理完就给 action.
4 action层, 调用business处理业务,封装数据...拿到结果
4 webserivce层 也是第四层, 调用business处理业务,封装数据...拿到结果
5 异常层 1,2,3,如果不是业务需要,则都不控制异常, 如果业务有需要则自己处理异常,同时产生自己的定制异常,全部在这一层接信,处理...保证系统不出问题:这种异常隔离层 内置到action, webserivce层.全部定义完成之后, 开发功能过程:
1 开发dao-->serivce-->business--->action(或webserivce),并内置异常隔离层.
一般来说,一开始大家一起把dao,serivce 全部开发完成(实际基本的7个方法,也可以扩展更多),
然后分配功能给大家做, 各做各的business, action, jsp(项目一般用work等开源框架就行),
2 开发完成后,通过公用的授权,把功能分开登录者使用....
3 重复 1,2项目开发完成......
4 总结项目经验----->变成通用产品(集成部分基本行业中最基本的功能), 然后其它项目从这个上面再开发.....
5 最后变成 taobao 这样强大的软件...哈哈
2 有新项目,如果与以前的功能不同, 用自己的架构基础上开发功能.
架构 包括内容:
一般java项目是:
a 集成连接池(apache的就行),
b 日志(apache的就行)
c 导出excel(apache的就行)
d spring,
e (不要hibernate,可以考虑ibatis,一般jdbc自己在spring基础上做,性能最好,扩展最方便)
d axis(apache,webserivce包)
e mima(apache的网络通信包)
f 中小项目要集成内存数据库,如果缓存 200万以内的记录, 直接自己用map缓存性能最强,最方便.
g 使用者表,功能表,使用者机构
h 登录过程,
i 在g,h的基础上做 公共授权核心处理,提供所以用户与功能的授权api
j 如果有流程,则在 g,h,i的基础上再开发工作流核心处理: 流程定义,流程实例产生,流程ID产生,流程控制(下一步,回退,暂停等功能)
以上就是一个软件的基础要素,
-----------------------------
下面是一个软件结构的核心层次定义,就是任何功能开发,都要用这种试,新手,老新一用就通,维护过程统一.
1 dao层接口,jdbc方式实现,net网络方式实现,用来查询,增加,修改数据最底层操作,
定义以下几个接口 insert, delete, update, findData(带where条件半通用查询), 批insert,批update,批delte, 7个基本接口.
2 service层接口,pojo实现, 基本接口也如上,
serivce一般用来封装 dao层给外面的程序用, dao层只能是serivce调用,其它功能中最多只能到serivce层.
3 business,业务层, 复杂的业务处理,if判断,授权决断,数据转换.....所有业务内容,处理完就给 action.
4 action层, 调用business处理业务,封装数据...拿到结果
4 webserivce层 也是第四层, 调用business处理业务,封装数据...拿到结果
5 异常层 1,2,3,如果不是业务需要,则都不控制异常, 如果业务有需要则自己处理异常,同时产生自己的定制异常,全部在这一层接信,处理...保证系统不出问题:这种异常隔离层 内置到action, webserivce层.全部定义完成之后, 开发功能过程:
1 开发dao-->serivce-->business--->action(或webserivce),并内置异常隔离层.
一般来说,一开始大家一起把dao,serivce 全部开发完成(实际基本的7个方法,也可以扩展更多),
然后分配功能给大家做, 各做各的business, action, jsp(项目一般用work等开源框架就行),
2 开发完成后,通过公用的授权,把功能分开登录者使用....
3 重复 1,2项目开发完成......
4 总结项目经验----->变成通用产品(集成部分基本行业中最基本的功能), 然后其它项目从这个上面再开发.....
5 最后变成 taobao 这样强大的软件...哈哈
大数据量关键是dao这层api的开发,分页操作最为复杂(baobao网这一层能操控多个数据库).
(spring支持多数据源配置,要多少就可以多少,一般最少配置2个数据源以备用)
只要输入表名自动生成 bean, dao, serivce 所有接口,实现类 1秒搞定...:)
特别是dao, update手写真麻烦 肯定是做个通用工具自动生成啊.
兄台你的bussiness层可不可以详解一下? 饥渴求学中
因为很多做平台的公司,他们从来不公开产品结构, 大家无从学习, 也可以说我是引进国内二次开发平台的体系.
为了便于功能独立性,维护性一个功能包括以下几部分:
1层 dao 这个不用说了都知道.
2层 service 原则上dao不能随意给别人调用,所以用service封装成原子服务如 delete(long id),没有业务.
3层 bussiness ,由于dao,serivce是原子性的, 所以bussiness可以调任何service,如登录业务:
a) 调用用户serivce,检查用户,检查密码.
b) 处理用户 session等其它内容
c) 如果正常用户,则处理功能,调用权限serivce,得到菜单权限,进入系统后只显示授权菜单.
......这就是业务,这些要独立出来,以后别人也能共用这块逻辑..
4层 action, 接收bussiness处理好的结果, 处理页面,验证页面数据有效性,验证完后交给bussiness.
4层 webserivce (有时要提供webservice服务,调用bussiness发布数据,不需要action,jsp了).另外还有,辅助包,不能算层:
dto, 普通bean,可以在entity上组合,继承,扩展而成,也可以是随更搞的.
entity, 严格与数据库对应的实体bean
helpers, 在这个功能中大量重复的代码片段, 抽出来做个一个个helpers叫协助类,
这样bussiness逻辑更清楚, 有时bussiness代码非常大的.bussiness 叫业务逻辑,处理项目中业务相关的东西, 业务随意变,只改逻辑就行,
每一个功能都有自己的 bussiness, 从各serivce中拿到数据进行业务处理.
serivce 由于只用来公开dao, 不做处理或只做少量的参数拆分工作, 没有业务代码, 这样一来独立性强.
由于没有业务,所以能被任何需要数据的 bussiness 调用, 代码重用性非常高.
action本身应当只处理页面来的东西,校验数据,整理参数, 处理session,
如果这些不通过,根本不要调 bussiness 来处理, 这样以来action层任务明确, 简单明了.action + 页面 只有一个任务: 做好用户的交互漂亮的显示数据, 严格校验提交用户参数.