中间层设计,如果DataSetProvider和Query动态创建,整个系统包括客户端开发都要注意哪些问题?大家有什么好的解决方案?阿普有分啊。 (300分)

  • 主题发起人 BlackDragon
  • 开始时间
为什么要动态生成啦??
好处是什么啦??
 
没分了,借地方问个问题。
在SMTP协议在发信的时候对发信者进行身份验证
编程序登录,发信(有登录密码)
 
可以把SQL及要生成接口的属性都放到一数据库表中(这样改起来方便),然后服务器启动时根据记录动态生成
接口,但是对接口的事件处理要比较注意。
 
实在想不出动态生成的作用.
 
可以动态设置,但还要为这些动态空件写好两个过程,建立好空件后赋予其事件,
因为客户端传来的SQL语句,在此赋予给QUery.
 
我谈一下我的做法:
由于中间层(TRemotDataModule)是对应每一个客户连接产生一个,所以可以在
TRemotDataModule中根据用户断的请求动态的生成TQuery和TDatasetProvider ,然后在配置上
TQuery的SQL语句,再和客户断连接,(当然,产生的TQuery和TDatasetProvider可以分别保存在一个列表或数组中,达到下次请求重复使用的目的,
不要每次请求都生成),对于SQL语句,也可以采用保存在数据库中或其他地方。
对于客户使用的功能模块,也可以采取根据功能划分成DLL,保存在服务器上,代用户使用是再下载到用户端,这样还能实现软件版本的自动更新。维护比较方便。
这样,在用户端就只是一个公用的壳程序,具体的业务和所有的程序模块可以根据不同的用户进行自动分配和下载更新。

 
to w2qh:
兄弟,你好像看到了我们的程序一样,再说说.[:D]
 
我不知道您是谁,我上面说的其实是我在做项目是采用的体系结构罢了,当然,我还是觉得我做的系统不是十分的完善!!,能聊一下您的看法吗
 
to w2qh:
我们的客户端是个壳,功能模块用bpl做,中间层datasetprovider,adoquery动态创建,中间层
有个sql表,客户端发送一个id或字符串,中间层创建datasetprovider,adoquery,客户端
fetchparams,执行操作.我们的项目还在策划阶段,所以想向你学学经验.
 
如果是开始做,我建议要先把整个框架先做完善了再继续,否则到实际项目中可能出现框架问题时比较麻烦,
对于在局域网中使用的系统,建议用DLL,当然要在广域网中则采用bpl,采用bpl要麻烦一点。
但是总的来说,做项目最重要的还是要满足用户的需求。不然会得不赏失。
我现在在做一个会计凭证的录入打印的东西,如果谁有完善的凭证处理的原代码,我
愿意用我原来开发的三层结构系统的原代码进行交换!!!!
 
我现在在做一个会计凭证的录入打印的东西,如果谁有完善的凭证处理的原代码,我
愿意用我原来开发的三层结构系统的原代码进行交换!!!!
 
我觉得还要考虑一个问题,
如果多个客户端连接中间层,中间层会为每个客户端创建一个线程,
如其中有几个客户端断网,被结束任务或断电等没有要求释放连接的操作,
那么中间层的线程不知道客户端的情况,永远不会中止,内存也不会释放。
检测客户端状态好象不大好办,中止指定线程也不知好何才能做好
 
//听课学习。
 
To Zerocs:
可以将中间层做成无状态对象,且中间层启用pooling,可以避免你说的情况
 
这里有好东东请自已看吧
http://lui2008.8u8.com
 
en!不错,听的云里雾里。
delphi7中使用websnap建立bs模式的系统,可否同datasnap结合?
如何处理呢?websnap的服务器端?
我有点迷糊了,请简要指明一下!!谢谢
 
internet_plus,你说的没错,用无状态就行了,不过我们做的项目没有用到pooling,可以
具体谈谈吗?
 
我也正在写这样的项目,马上要完成了。BlackDragon,可以讨论讨论。
我的服务器地址:http://218.16.104.132/soapdata
中间层的DBMS未定,客户端传SQL的ID或者SQL语句取数据,中间层实现连接池(APACHE下),
数据完全兼容XML格式。
客户端是完全基于接口的动态包,以前用的是消息,结果发现在Win98下不能正常工作,所以
就改了。
下面是服务器的定义
mod_rzsoapapache1 > Irzsoapserver

Irzsoapserver [WSDL] (urn:rzsoapserverIntf-Irzsoapserver) string GetServerName()
string GetServerProp()
string GetRDBName()
string GetDBTables(boolean IncludeSystem)
string FetchDatas(string SQl, string Params, string Local, int Count, int OwnerData, string Key, boolean Compress)
string saveData(string SQL, string Delta, string Local, int MaxError, int ErrorCount, string Key, boolean Compress)
string ExecuteSQL(string SQL, string Params, string Local, string Key, boolean Compress)
string FetchParams(string SQL, string Local, string Key, boolean Compress)

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
919
DelphiTeacher的专栏
D
顶部