关于多层分布式系统技术层次的探讨,望大家都来看看啊!在此先行谢谢了!!!(200分)

  • 主题发起人 主题发起人 fjw
  • 开始时间 开始时间
把应用服务器和ScktSvr.exe简单的合在一起是很容易的,
因为ScktSvr.exe带的有源程序,把你的数据模块加到里面就可以了
我以前做过这样的程序,但是现在程序不在手边
 
客户端使用SocketConnection来连接RemoteDataModule是个好注意。但是对于安全性,一定要自己好好写代码。
(第一次在大富翁发言)
 
当然, 采用WEB方式,就是采用HTTP协议。采用HTTP协议,必然使传输的效率有所下降。因为采用HTTP协议要将你的2进制数据变为文本数据再传输。
如果一定要考虑传输效率,一定要传输2进制的数据,你可以自己写TCP的通讯服务器和客户端来解决这个问题。但这已经不是我们讨论的范围了。
就目前DELPHI已经提供的技术来说,要么你使用WebConnection,要么你采用WebService。
如果采用WebService,那么,最好加多一层COM+作为Web Service和数据库的中间层。直接让Web Service去访问数据库是不明智的。因为这样不能够服务大数量的客户端。当然,如果项目的目标并不是要服务大数量的客户端则可以让Web Service直接去访问数据库。
至于加过了COM+增加维护难度的问题,这得看你怎么来看。加多一层,代码量会增加。但Com+本身如果按照面向对象的原则来写,而Web Service也按照面向对象的原则来写,则将来的维护工作其实更好做。当然,初期的程序调试工作会比较多一些。
 
感谢pcplayer及大家的热心帮助,在此我对大家衷心地说一声“谢谢”了。
不知paplayer有没有相关的例程,给我一份好吗?
 
真情关注!
如有,别忘了我哦
 
如果单纯为了传输文件的话,可以单独做一个传输的东西吧?用ftp也可以呀,维护和更新都很简单。如果是简单的数据可以考虑xml。如果是为了防火墙,其实还可以定义一个邮件服务,用邮件来传输数据也是一种办法。当然了,要看你对时间要求的是不是很高了,比如时实的,那么就只好考虑其他的办法了。如果不是,那么,可以考虑用其它的方式来传输数据。
 
你牛啊,说了一大堆技术名词,你到底懂多少
我看你 c/s也够呛能做出来!
 
csqjf:
不要进行人身攻击!
 
FJW不知道你要什么例成?
其实都是一些大原则。在具体写程序的时候,根据实际环境要考虑的问题还很多。
比如:
1、你实际应用的数据库是否会有几十万条记录?如果记录数量不大比较好办。如果数量巨大,可能要考虑利用数据库的分页功能,或者自己写类似 select top 100 * form abc这样的语句。避免一次从数据库获取巨大数量的记录。
2、你的客户端的访问量是否巨大?如果你的目标应用本来就没多少客户端访问量,也不用考虑太多。甚至可以直接用DELPHI写APP SERVER,然后客户端程序通过WebConnection来连接APP SERVER就把问题解决了。如果客户端访问量巨大,就要考虑采用COM+,使用ADO来访问数据库,关于COM+,要考虑采用它的COM+对象POOL功能和在COM+对象里的ADO数据库连接POOL功能。等等。
其实用DELPHI写COM+还是很简单的。NEW一个MTS模块,就OK了。剩下的就是自己写代码了。
 
我是刚学多层分布式的
如果有这方面的例子请PCPLAYER发一个给我!!
THX
6669859qiao@21cn.com
 
初学的,看李维那本讲COM+的书就可以了。里面也有例子的。
 
继续等待。
我不会,我想学会!
 
感谢pcplayer的热心帮助,衷心地谢谢你啊!
中间层我肯定是要用Com+的了,因为客户量是非常巨大的(数据量不算太大),但是如何用好对象POOL和ADO 的POOL,那是我最头疼的问题,不知老兄在这方面有什么指教没有?李维先生的那三本书我都看了,在这方面他都没有做一个详细的介绍。肯请老兄帮帮忙吧!你在哪高就啊?我的联系方式:fjwzd@163.com。我是河南郑州的。
还有其它的各位大侠们,也请你们也来指点指点啊!
 
你们要好好讨论呀。
我在这儿只有悉耳恭听了。
加油为你们也为我自己。
 
好像J2EE正是为了完成这样的结构而设计的。
 
还是用WebConnection,速度也不慢,主要是能穿防火墙。我有一个例子:
http://www.playicq.com/dispdocnew.php?id=11854
 
我们现在用的是Midas+DCOM,感觉还不错.
只是要写出一个好的应用服务器来需要一点能耐.[:)]
 
假设数据量不是很大,那么,程序里不考虑分段取数据的问题。
假设客户端数量巨多,那么,就要考虑数据库连接数的问题。你的数据库服务器支持不了太多的数据库连接的。这个时候,就可以采用COM+来解决问题了。其实李维那本讲COM+的书讲得很不错的,只不过需要多读几遍才能真正吃透。比如,在DELPHI里NEW一个MTS数据模块,你就已经有了一个COM+对象了。因为客户端很多,因此不能采用普通的MIDAS APP SERVER那种做法,让每个客户端一上来就用DCOMCONNECTION去连接这个COM+对象。否则,有100个客户,就有100个连接,COM+对象也承受不起啊。这时候,你需要在客户端取数据或者提交数据的时候,才连接COM+对象!取数据或提交数据一完成,客户端就和COM+对象断开。这个COM+对象当然要做成无状态对象,那么,它就立即可以服务下一个客户了。当然,要把它做成POOL的。否则客户端一断开,它就自己消灭掉了。另一个客户连进来,还得重新CREATE一遍,效率当然就低了。
建议你自己做一个简单的COM+对象,然后在WINDOWS的组件服务里去观察这个COM+跑起来的情况以及POOL的情况。这样才有感性认识。
至于DCOM,它好象没有POOL的功能。因此客户端一多,就有问题了。
回头再说数据量很大的情况。比如你的库里一个表有10万条记录,你用SELECT * FROM YOURTABLE的方式取,一下取出10万条给客户端,COM+对象被累死,网络传输也被堵死,客户端等待数据传完,1分钟都不反应象死机一样,肯定不好玩。这时候你当然要用自己的程序来解决这个问题。比如我这样写:SELECT TOP 100 * FROM YOURTABLE
 
pcplayer:
用com+做pool是因为这样比直接用rmdbs自带的连接池效率高,还是因为COM+的分布式特性呢?
 
后退
顶部