客户端和数据库就不用说啦。我将中间层又分为三层:
第一层面向客户端,根据需求分为三个接口
Iagent:座席
Imonitor:班长
Iadmin:管理员
班长接口继承自座席,管理员接口继承自班长(类也如此继承,需求如此)
第二层是业务逻辑层,按模块划分了几个相对独立的接口,暂时有六个,以后肯定还会增加。
第三层面向数据库,为了统一数据库的存取,所有业务逻辑层的接口要访问数据库都要通过这层。定义了几个函数
要讨论的是:
1.这样做是否合理?
2.各位在做实际应用时,是给客户端一个接口还是给一批接口。其实我的第一层只是将业务逻辑层包了一下,暂时出于权限的考虑。
3.各位在传输数据时是用什么方法做的,不知MIDAS怎么用在ASP中?开始我想直接用_RecordSet传数据,可是客户端提交数据怎么传给服务器呢?OleVariant数组可以做到,可是那样要定死顺序,想活一些。
4.COM的组装性体现在哪里?Delphi不支持多继承,如果我想加一个模块,要在面向接口层的接口内声明所有新模块的函数,还要实现,有什么好办法简化一下。
4.做过实际应用的兄弟有什么经验教训,不妨说说,以免大家走弯路。另外,李维说事务很费资源,要我们尽量把对数据库修改的函数写在一个组件内,然后需要事务;对数据库读的函数写在一个组件内,然后支持事务,可是我要是这样做,业务逻辑层的组件要增加一倍啊,各位有这样做的吗?
第一层面向客户端,根据需求分为三个接口
Iagent:座席
Imonitor:班长
Iadmin:管理员
班长接口继承自座席,管理员接口继承自班长(类也如此继承,需求如此)
第二层是业务逻辑层,按模块划分了几个相对独立的接口,暂时有六个,以后肯定还会增加。
第三层面向数据库,为了统一数据库的存取,所有业务逻辑层的接口要访问数据库都要通过这层。定义了几个函数
要讨论的是:
1.这样做是否合理?
2.各位在做实际应用时,是给客户端一个接口还是给一批接口。其实我的第一层只是将业务逻辑层包了一下,暂时出于权限的考虑。
3.各位在传输数据时是用什么方法做的,不知MIDAS怎么用在ASP中?开始我想直接用_RecordSet传数据,可是客户端提交数据怎么传给服务器呢?OleVariant数组可以做到,可是那样要定死顺序,想活一些。
4.COM的组装性体现在哪里?Delphi不支持多继承,如果我想加一个模块,要在面向接口层的接口内声明所有新模块的函数,还要实现,有什么好办法简化一下。
4.做过实际应用的兄弟有什么经验教训,不妨说说,以免大家走弯路。另外,李维说事务很费资源,要我们尽量把对数据库修改的函数写在一个组件内,然后需要事务;对数据库读的函数写在一个组件内,然后支持事务,可是我要是这样做,业务逻辑层的组件要增加一倍啊,各位有这样做的吗?
解决方案 »
- delphi读取xml?
- 一个非常刺手的问题,高手能解决,立刻给100分,在把excel导入sqlserver,中有些列值出现为空.好几天了,没办法,急急急!
- 请问如何将adoquery查询到的内容添加进报表里面打印出来呀?
- 哈哈 新DIY了一台机器AMD Athlon 64 2800+
- 《Borland传奇》部份文章节选,感谢网友bluelf的收集和整理!
- 请教关于使用idFTP控件的问题
- 本人现在有QQ号码n个(n>1000),现在放在我的信箱中,而且每天都在增加!!!
- delphi动态生成text
- 如何判断一个DLL中的窗口已经打开?
- delphi与网站连接的问题
- 很急的问题? 断点无效??
- RichEdit中显示中文时,在行末,中文被拆分,所以显示的是乱码,该如何解决?请高手指教
2、肯定是一批了,一个那够。
3、用TClientDataset提交和获取数据呀。
看《Delphi5.x分布式多层应用系统篇》吧
http://www.codestudy.net/ 上面的书都是最新的,还有(Delphi7.0de)
http://www.mycnknow.com/srindex.htm
http://kingron.myetang.com/
4、不用多继承,而用接口其实是很好的办法,
用通俗一点的说法就是“不要到处拜老爸“,现在构件技术中强调的是
先建构架(建立继承关系),在构件复用(一般是对象组合,通常用接口来实现)
接口是对象之间的通信协议,可以达到良好的设计,建议采用。用DCOMConnection吧。
2.暴露给客户端N个接口?我想用一个接口包起来,比如客户端没有看报表的权限,我就不把报表接口包进去,客户端用一个接口,不知这样有什么缺点?
3.请问一下在ASP中如何用TClientDataset呢?有没有个简单的例子。
那么在这个接口中包含的多个接口的创建方式就会有两种:
1、在客户接口创建时创建所有内部接口;2、在客户接口调用相关功能(如报表)的接口时创建内部接口(报表接口),然后执行相关操作。
第一种方式要考虑在创建客户接口时较慢和服务器资源的占用(因为所有内部接口都创建了);第二种方式要考虑客户调用相关功能时较慢。
我的做法是将不同模块做为不同的接口暴露给客户端。“开始我想直接用_RecordSet传数据,可是客户端提交数据怎么传给服务器呢?”
我没有看到有_Recordset类型的参数,你是想把ADO的查询结果_Recordset做为Variant类型的参数输出,在ASP中再用ADORecordSet打开吧。这种方式我没有试过(我在做C/S的程序)。
Iagent下有
procedure aaa;
procedure bbb;第二层中有两个接口Iaaa和Ibbb,分别有Iaaa.aaa和Ibbb.bbb。
procedure Iagent.aaa
begin
Iaaa.aaa;
end;
procedure Iagent.bbb
begin
Ibbb.bbb;
end;
只是简单包装第二层的函数。至于在ASP中再用ADORecordSet打开_RecordSet,没问题,我试过,只是提交时不知怎么办。
┏━★━━◆━━★━┓
♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip
“客户端用一个接口”
那么在这个接口中包含的多个接口的创建方式就会有两种:
1、在客户接口创建时创建所有内部接口;2、在客户接口调用相关功能(如报表)的接口时创建内部接口(报表接口),然后执行相关操作。
第一种方式要考虑在创建客户接口时较慢和服务器资源的占用(因为所有内部接口都创建了);第二种方式要考虑客户调用相关功能时较慢。
再者,我驿接口的继承也不是很赞同,也不知道你在这一点是如何做的,当一个工程变的很复杂的时候,每一个改动都会影响到整个组件,问:你是如何做到的组件无关性?模块分离性?用继承吗?
那么你的面向对像性提体在那儿?组件的特性又会提体在那儿?
传递数据的方法,Midas的传递方式或许让我们无法再做选择,那么此时,可能就要在传输过程中进处理; COM组件的特性提会在那儿?这个问题,如何说呢?呵呵,这要看你对COM的应用如何,不过,我知道青苹果对COM也是有研究的,在这儿也就不好意思在 指手画脚的误导别人了:)头有些婚,先休息一下
至于其余的全部可以由代理对象,也就是第一层进行组织.比如可能要调用:
入库单对象.修改审核标志,库存对象.增加库存等等.
而如果将来的审核流程改变的话,我们只需要给改变代理对象的一些业务逻辑.
而不需要修改客户端的任何东西.不知道有什么不妥.以上只是我个人结合书上,以及别人论点的一点想法,不知道对不对,清各为指正.可是因为我用的是oracle,在事务的控制上出了点问题,不知道有没有人碰到过cannot connect to the trasaction manager or the transaction manager is unavailable
的问题?
摩托,你的烤肉还没吃完么?
大家继续讨论,苹果去看看事务:)
Proxy/Stub;
NO.2:
一切都用IAppServer有些勉强:)
NO.3:
MarshallIng;
BTW,多看点OO分析和设计的资料没什么坏处。
祝大家新年快乐!!!
欢迎一起探讨
那个asta是什么?楼上的兄弟给讲讲。
//************************
//*天行健,男人以自强不息*
//************************