诚聘:delphi-RDM多层开发的人材+midas开发经典问题(50分)

  • 主题发起人 主题发起人 zjj_001
  • 开始时间 开始时间
Z

zjj_001

Unregistered / Unconfirmed
GUEST, unregistred user!
我公司现招聘熟悉delphi-RDM多层开发的人材,公司在浙江杭州,现有30人左右,从事电信后台维护支持系统的开发,欢迎有兴趣的朋友加盟!(如为加盟者请发邮件或加我QQ详谈)
联系方式:email: zjj_001@163.com QQ:99806788
midas开发遇到的问题如下:
一、ADO数据库连接应该是放在RDM中的,还是放在RDM外面的,然后ADOQuery等连到AdoConnection的。我现在是放在RDM外面的,不知这样是否会有问题。
二、是否能给一段容错平衡的代码作为参考,该问题还有以下子问题:
1、可用应服的列表是怎么给客户端的,是否把应服列表放在INT配置文件中,然后初始化入TSimpleObjectBroker的Servers属性中?
2、如何在代码中实现容错。
3、某个应服坏掉了,做上了标记;那么当该应服重启正常后,怎么通知客户端该应服可重用了?
三、我目前的三层应用系统经实践试用,存在有时会查死的现象,特别是通过存储过程返回数据时,不知道各位有否碰到过类似现象,有否对应的解决方法。
四、最后一个问题是应服运行一段时间后(时间不定,有时可连续运行一周,有时不到一天),会出现客户端连不上应服的现象(双击客户端运行后,没有任何反应,没有界面,在任务管理器中可以看到该进程),在应用服务器的scktsrvr.exe的users标签页中可以看到客户端的IP地址(客户端不多,一般在30个左右)。一般重启应用服务和scktsrvr.exe后,故障现像消失,客户端又可进行正常连接。
注:分不是问题,只要能解决问题,分可以再加。
联系方式:email: zjj_001@163.com QQ:99806788
 
1:负载均衡客户端实现方式通过使用TSimpleObjectBroker来实现,服务器方式由主机群集来实现
2.你必须设置线程缓冲数量
3.超时死连接时间,即没用的连接资源释放时间。
4.程序中当你的连接不用时最好断开(应用程序关闭连接自动关闭)。
5.给不同的remote server设置不同的侦听端口。
 
to_znj_326:
是否能说的详细一点呢?另外我不知道你的那几点是回答对应的哪个问题的!可以留个QQ详谈吗?
 
最后一个问题肯定是你出现了死锁
 
如果需要合作,请加MSN:klwl2@hotmail.com
本人有成套的MIDAS远程数据服务引擎和客户端控件。
 
ADO数据库连接应该是放在RDM中,因为每个客户连接服务器端时都会创建一个RDM,如果ADO数据库连接放在外面那行很多用户都会共用一个ADO数据库连接,你们认为会有什么问题呢?
 
to_samy_ywj
你说的我曾经考虑过,后来试了放在外面也没事——我目前的三层软件已使用半年,主要问题是上述提及的问题,不知道和ADO数据库连接的放法有无关系,不过按你所说的话,那么多层是不是失去意义了,也就是说有10个用户连接,就会生成10个数据库连接,不知道我这样分析对不对?
 
对。如果客户端保存数据时需要用到事务处理时,你是怎么做的呢?如何已经有用户执行了begin
Trans, 第二..n 个用户也要执行begin
Trans,怎么解决呢?而且是保存不同的数据?
 
做事务时可以像delphi自带的pooler例子那样,用TCriticalSection关键字限制线程进入,不过我目前还没这么做,呵呵,未知这么实现行不行,请大家帮忙分析哦
 
RemoteDataModule采用ciMultiInstance, tmApartment线程,虽然是一个客户端连一个服务线程,但可以将ADO的KeepConnection=false,如此可以利用ADO的线程池。
事务处理可以自己写服务接口,关键点是客户端如何处理多数据集的提交和回滚问题。
如不想为这些技术问题烦心,可能的话可以考虑本人的RDM引擎。
 
ADO数据库连接放在RDM外面,当同时有多个并发的连接或访问时,服务端肯定要挂掉,这个我做过试验.原因是并发的RDM线程会抢占一个ADO连接,导致数据或代码重入.但如果是串行的连接则没事.如果你不想生成过多的RDM连接,可以用连接池.
 
to wangming_,:
我的RemoteDataModule采用的是ciMultiInstance, tmFree线程——为什么采用tmFree呢?请看delphi自带help:Free Your remote data module instances can receive simultaneous client requests on several threads. You must protect instance data as well as global memory against thread conflicts. This is the recommended model when using ADO datasets.
另外我一直就将ADO的KeepConnection=false,事务目前均是在服务端做(客服务通过接口调用服务端的过程),所以不存在客户端如何处理多数据集的提交和回滚问题。
关于考虑另外的“RDM引擎”,首先谢谢你的好意,但目前我想不太会考虑。我绝对相信borland的技术能够满足中小型的分布式多层布署,只是自己撑握的肤浅,暂时没有找到解决的方法罢了。
to machcat:
未知您提到的“连接池”是指delphi自带demo的对象连接池呢?还是数据库连接池,如为后者,怎么实现?delphi自带的pooler例子中是以bde为示例的,那么像对于我采用:
1、数据库连接采用ADOConnection;
2、Instancing=Multiple Instance;
3、Threading Model=Free。
的情况下,未知类似pooler的做法是否能够支持。
to all:
二、三、四尚没有较为确定的答案,各位高手在哪呢?帮忙指点指点啊!
 
后退
顶部