三层架构开发中遇到的问题!请高手帮忙解答,谢谢!(30分)

  • 主题发起人 主题发起人 arraiy
  • 开始时间 开始时间
A

arraiy

Unregistered / Unconfirmed
GUEST, unregistred user!
因为首次接触三层,好多技术细节不明白,也没有经验,在实作过程中,参照了李维的《Delphi 5.x 分布式多层应用系统篇》一书,但还是遇到了一些问题,想向大家求教: <br>&nbsp; &nbsp; 1、中间层中Type Library的使用还是不太清楚,上面那些快捷按扭各自新建相关的对象,具体怎么用呢 <br>&nbsp; &nbsp; 2、关于接口的说明也还是很糊涂。比如,在接口下面新建一个方法之后,这些代码在哪里去实现; <br>&nbsp; &nbsp; 3、我看到别人的程序,在中间层除了数据模块之外,还有很多PAS文件,里面也有相关逻辑运算,客户端是怎么于这些单个的PAS文件中的方法联系起来的? <br>&nbsp; &nbsp; 4、我想建多一些远程数据模块,把每个业务功能模块中要用的数据集放在各自的远程数据模块中,在客户端用SharedConnection来连接,这样统一管理维护。但是不知道怎么来实现,要怎么配置不清楚。 <br>&nbsp; &nbsp; 5、在建第一个远程数据模块的时候,系统自动生成了一个PAS文件,一个接口,可以在里面加入自己的方法,这个方法有参数,类型、返回值等,那些类型是针对于Windows的吧,和Pascall的不一样,这个我明白,因为中间层是一个COM组件,要想通用肯定类型也要和平台统一。但是如果我要返回自定义类型,可不可以呢?哪些自定义类型可以返回? <br>&nbsp; &nbsp; 6、为了实现上面第4点中的想法,我又新建一个远程数据模块,想实现多个数据模块让客户端连接,可是我发现在DCOMCNFG中多出了我另外新建的这个数据模块的名字,这是为什么?一个EXE文件运行过后,在DCOMCNFG中出现了两个。我看到别人的程序里面有多个数据模块,但中间层运行过后在DCOMCNFG中只有一个组件服务器呀。 <br><br>&nbsp; &nbsp; 三层架构的书太少了,好多知识都没有讲到,网上搜也都只是做一个三层的简单的程序做示范,好多深入的内容都不提,但是在实作的时候就很棘手了。李维的书上有讲,但像这些细节也没提。所以在这里把问题散出来,希望大家帮帮我,谢谢!
 
问题太多太笼统了,不好回答
 
啊?还太笼统啊,我说的很详细了哦
 
我也在做三层的。可以加我QQ:66455150<br>你的问题确实太多了,不好回答。
 
1、中间层中Type Library的使用还是不太清楚,上面那些快捷按扭各自新建相关的对象,具体怎么用呢 <br>答:比如你打开了Type Library编辑器,你应该有了一个接口,选中它,可以在工具栏上看到一个绿色的按钮,也就是New Method,点后可以添加新的方法,参数可以在右面的窗口中点add按钮设置。返回类型一般就是HResult型,不用改。比如加个Show方法,方法参数设置为:nAge,long,[in];sName,LPSTR,[in],点Refresh implementation按钮,那么在你程序里面就会多出一个空函数体,这里面可以实现这个方法。<br>function Ttest.Show(nAge: Integer; sName: PChar): HResult;<br>begin<br>&nbsp; //Add your code...<br>end;<br>&nbsp; &nbsp; 2、关于接口的说明也还是很糊涂。比如,在接口下面新建一个方法之后,这些代码在哪里去实现; <br>答:已在上面说了。<br>&nbsp; &nbsp; 3、我看到别人的程序,在中间层除了数据模块之外,还有很多PAS文件,里面也有相关逻辑运算,客户端是怎么于这些单个的PAS文件中的方法联系起来的? <br>答:客户端不直接调用这些方法,是通过应用服务器调用这些方法,比如刚才创建的Show这个方法在客户端这么调用:<br>&nbsp; DataModule1.ClientDataSet1.RemoteServer.AppServer.ShowText(34, '帅哥');<br>&nbsp; &nbsp; 4、我想建多一些远程数据模块,把每个业务功能模块中要用的数据集放在各自的远程数据模块中,在客户端用SharedConnection来连接,这样统一管理维护。但是不知道怎么来实现,要怎么配置不清楚。<br>答:不需要怎么配置,只要远程数据模块上放上你的Table,Query等数据库组建,然后用TProvider,TDatasetProvider等的DataSet属性设置为你的Table,Query等数据集组建就可以了。 <br>&nbsp; &nbsp; 5、在建第一个远程数据模块的时候,系统自动生成了一个PAS文件,一个接口,可以在里面加入自己的方法,这个方法有参数,类型、返回值等,那些类型是针对于Windows的吧,和Pascall的不一样,这个我明白,因为中间层是一个COM组件,要想通用肯定类型也要和平台统一。但是如果我要返回自定义类型,可不可以呢?哪些自定义类型可以返回? <br>答:常用的有long,LPSTR等,long就是咱的integer类型,LPSTR就是咱的PChar类型,好像没法定义自定义类型,只能定义枚举、记录类型、属性等,建议用属性返回,多建几个呗。<br>&nbsp; &nbsp; 6、为了实现上面第4点中的想法,我又新建一个远程数据模块,想实现多个数据模块让客户端连接,可是我发现在DCOMCNFG中多出了我另外新建的这个数据模块的名字,这是为什么?一个EXE文件运行过后,在DCOMCNFG中出现了两个。我看到别人的程序里面有多个数据模块,但中间层运行过后在DCOMCNFG中只有一个组件服务器呀。 <br>答:你建多个应用远程数据模块是没必要的,一个远程数据模块上放多个TDataSetProvider即可实现。
 
谢谢各位
 
多人接受答案了。
 
后退
顶部