向左看,最左边是客户端;向右看,最右端是数据库;剩下的就是中间层。
我的中间层设计为二层:业务逻辑层和数据库服务层。客户端只与业务逻辑层联系;业务逻辑层保存业务逻辑,最后将数据库操作请求发往数据服务层;数据服务层中保存的都是数据库的相关操作,也只有数据服务层可以连接数据库,别的层有数据库操作都必须通过数据库服务层去执行。
业务逻辑层设计:目前,我的想法是:每一个客户端的窗体对应一个业务逻辑层中的一个接口。这样,查找,修改起来比较方便。这里有一个问题是:将业务逻辑层中每个窗体对应的业务逻辑作为一个接口,是一个dll中包含多个接口这种方式?还是每一个接口一个dll(也就是一个窗体的业务逻辑对应一个dll文件,这样业务逻辑层就会有数十个dll文件.这样做的好处是没有打开的窗体对应的dll不会运行)???
数据库服务层设计:因为一个数据库也就是一二十个表,所以也就是对这一二十个表的操作。所以,我想将这些操作集中起来写成一个或两三个接口,每个接口包含若干方法。 先放100分,欢迎大家讨论!!
我的中间层设计为二层:业务逻辑层和数据库服务层。客户端只与业务逻辑层联系;业务逻辑层保存业务逻辑,最后将数据库操作请求发往数据服务层;数据服务层中保存的都是数据库的相关操作,也只有数据服务层可以连接数据库,别的层有数据库操作都必须通过数据库服务层去执行。
业务逻辑层设计:目前,我的想法是:每一个客户端的窗体对应一个业务逻辑层中的一个接口。这样,查找,修改起来比较方便。这里有一个问题是:将业务逻辑层中每个窗体对应的业务逻辑作为一个接口,是一个dll中包含多个接口这种方式?还是每一个接口一个dll(也就是一个窗体的业务逻辑对应一个dll文件,这样业务逻辑层就会有数十个dll文件.这样做的好处是没有打开的窗体对应的dll不会运行)???
数据库服务层设计:因为一个数据库也就是一二十个表,所以也就是对这一二十个表的操作。所以,我想将这些操作集中起来写成一个或两三个接口,每个接口包含若干方法。 先放100分,欢迎大家讨论!!
解决方案 »
- 下载installshield DELPHI7用的 给 个 准确点的网址 查的 那些都打不开
- 还是个关于数值类型转换的问题!
- (fastReport)怎样求出GroupFooter中一memo最大值,并赋值给Footer中的memo
- 青岛海信网络科技面试经历!可笑透顶!
- 急!!!!!我想在一个文件中写入一些东西,以回车结尾,该怎么fileseek啊
- 请问怎么得到指针的地址?
- 请问怎么停止整个procedure的执行?
- 在用Delphi7制作ActiveForm后选了Make Control Licensed....
- SpeedButton1问题
- 与Power Builder相比,Delphi的优越性在哪?
- Stringgrid隔行换颜色
- fastreport语法问题
必要的话再加上线程池!!
客户端每调用一次应用服务器的接口方法后,中间层都会产生一个实现该接口的对象实例!高性能服务器必须作一些处理,使用对象池来存储部分或全部的接口实现对象!对于连接的管理,我的经验是为各用途分类建立多个Connection,如查询一个、无返回数据的SQL命令一个、执行时间长的一个(使用异步方式)。这需要自己在实践中摸索实验!
按现行的真3层结构去做,borland有datasnap/webservice/eco, java有ejb/corba
客户端<->应用层<->数据库
borland系列的应用层都是可以合并到客户端里的三层的一般做法是
按实体对像建立接口, IUser,IxxFile,IxxReport
按功能划分模块(dll或中间层DataModule), 把n个接口封装在这个模块里
客户端代码界面为主,就不必划得太细了,以方便/简洁/实用为第一性
因为我的客户端只有界面。中间层(目前包含二层:业务逻辑层和数据库服务层)全部是COM+组件,它们可分布到网络中的不同机器。
中间层的业务逻辑层仅含有业务逻辑,没有其它成份。它是一个独立的COM+服务器。
中间层中的数据库服务层仅含有数据库操作逻辑,没有任何其它成份。它也是是一个独立的COM+服务器。 楼上的怎么能说它是C/S结构呢?
--------------------------------谈一下目前做的项目~,说得不一定对,请大家指教~
中间层我又细分了3层
1.靠近UI的层,因为UI层分为ASP.NET与Delphi客户端,加上此层可从一定程度上解藕UI与业务层的关联,在该层
生成线程队列,在UI申请工作时分配JobNum
2.核心业务层,在业务层有N个子模块,用Facade模式来建立UI与子模块的关联
3.对象层,..........
4.数据库层:做为持久化层,用Proxy模式中介一下UI层的对象与业务层的对象
每个层均用一个COM+完成,向外公布几个Interface,供客户端使用
工作时一级一级地调用~
--------------------------------------
这和多层没有必然的联系,也可以是一台机器,业务逻辑与数据服务器在一起,你的只不过是空间上将各层分开而已~
用4台机器测试只是我针对上面有人说我这个是c/s结构说的。
我知道这和多层没有必然的联系,因为我现在开发的时候就是用1台机器。C/S结构在我的印象里是二层的,而我这个真的是多层的,所以我举了上边用4台机器测试的例子。希望不要误导了大家。 大家上面说的很好,欢迎大家继续讨论!
我是楼主。
Proxy模式--代理模式。我的这个数据服务层应该就是采用的你说的Proxy模式。我怎么就不知不觉用了代理模式,这下可以向别人吹一下了。
好,终于有人支持我的这个中间业务逻辑层设计,这样升级时方便了。 不过,这样做也有负作用。其一,业务逻辑层会有一、二十个DLL文件。其二,界面中的相关窗体需要引用业务逻辑层相关的接口文件,也是有点不便。 真是鱼和熊掌不可兼得。
对象会保存在客户端内存中,如果客户同时打开某记录时,而保存记录的时间不一样,这样就会产生更新不一致~,会产生一致幻影数据,
也就是说,数据库以最后的用户修改为准!而实际业务也不能将其做成单例模式,故要在中间层的Update方法来更新数据库时,应主动发消息给在线客户端,避免出错~我认为这是做3层需要注意的地方
-------------------------------------------------------
不太明白~
一个业务规则对应于一个类,对应窗体做什么?