delphi的三层是由服务端和客户端组成,以socket为话题
但是在用户很多,界面有130个,并发性强的环境下,假设500用户为例,且数据库的数据量很大,上千万的数据,因为不是简单的select语句,很多逻辑都是封装写在存储过程里面,事务也多,数据库锁死的情况也不少
如果只有一个中间层,有时也会出现中间层卡死的情况,我的想法是建立多个中间层服务器,如A,B,C,D,E
用户依次向服务器请求发送连接信号,返回服务器的连接用户数,如果A服务器连接用户数达到100,那么尝试连接B,如果B连接也达到100,那么连接C,依次类推,这样是否可以就达到负载平衡的目的
但是这样的话,如果我要升级服务端,那么5个服务器的中间层我不是都要更新才行,我觉得还是有点麻烦
我的数据查询连接方式为DbExpress,数据更新方式为ADO,服务器端配有2个数据库链接,我个人觉得这样好点,查的快,更新也稳定
再来说客户端更新的问题,增加和减少客户端DBGrid里显示的数据字段客户端当然不用升级,服务端操作下就可以了,我的想法是在客户端建立一控制服务端dateserprovider字段的功能,这样在客户端就可以做到类似这样的维护目的
但如果是客户端增加界面的问题,或者要加入系统卡点,防呆的时候,就不得不更新客户端了,目前我没有找到彻底解决升级的问题,各位有什么好的想法,希望大家讨论讨论
我的客户端菜单是动态从数据库加载的,有MainMenu和TreeView结构,事件响应部分也是自定义函数实现的(按钮单击打开什么窗体也是由数据库加载的,可以自定义改变,方便维护),所有元器件基本都是即使创建和释放的,界面控件很少
图片,ICO部分是从RES资源文件动态加载的,这样可以减小客户端的大小,窗体类是编写在dll中,用到时调用希望有更好想法的朋友可以提出点建设性建议和一些架构三层的方式,大家一起讨论讨论
但是在用户很多,界面有130个,并发性强的环境下,假设500用户为例,且数据库的数据量很大,上千万的数据,因为不是简单的select语句,很多逻辑都是封装写在存储过程里面,事务也多,数据库锁死的情况也不少
如果只有一个中间层,有时也会出现中间层卡死的情况,我的想法是建立多个中间层服务器,如A,B,C,D,E
用户依次向服务器请求发送连接信号,返回服务器的连接用户数,如果A服务器连接用户数达到100,那么尝试连接B,如果B连接也达到100,那么连接C,依次类推,这样是否可以就达到负载平衡的目的
但是这样的话,如果我要升级服务端,那么5个服务器的中间层我不是都要更新才行,我觉得还是有点麻烦
我的数据查询连接方式为DbExpress,数据更新方式为ADO,服务器端配有2个数据库链接,我个人觉得这样好点,查的快,更新也稳定
再来说客户端更新的问题,增加和减少客户端DBGrid里显示的数据字段客户端当然不用升级,服务端操作下就可以了,我的想法是在客户端建立一控制服务端dateserprovider字段的功能,这样在客户端就可以做到类似这样的维护目的
但如果是客户端增加界面的问题,或者要加入系统卡点,防呆的时候,就不得不更新客户端了,目前我没有找到彻底解决升级的问题,各位有什么好的想法,希望大家讨论讨论
我的客户端菜单是动态从数据库加载的,有MainMenu和TreeView结构,事件响应部分也是自定义函数实现的(按钮单击打开什么窗体也是由数据库加载的,可以自定义改变,方便维护),所有元器件基本都是即使创建和释放的,界面控件很少
图片,ICO部分是从RES资源文件动态加载的,这样可以减小客户端的大小,窗体类是编写在dll中,用到时调用希望有更好想法的朋友可以提出点建设性建议和一些架构三层的方式,大家一起讨论讨论
解决方案 »
- 求指点
- 初学delphi的疑惑。。。。
- 请问如何用自己的弹出菜单屏蔽系统鼠标右键弹出菜单???/
- CSDN活过来了,散200分,马上结帖,接分要快(前五名)
- 关于Delphi的效率问题(太重要了)
- 请问如何得到系统中所有文件夹和文件(包括隐藏文件)
- 用Delphi如何定义excel中的工作簿为文本格式,百分比格式,水平居中,垂直居中。
- 小弟第一次写自定义函数各位高手给提点意见
- 如何可以屏蔽掉电脑上的光驱啊
- 现在要做ERP,但对财务知识不懂.有什么速成的吗?只需要做软件所需析财务知识.
- 我用Delphi做了一个带下载功能的播放器,可是下载功能总有问题 哪位高手能帮忙解决下
- 对动态数组setLength时出现异常
数据库是一个,webserver、应用服务程序可以分步在n多台服务器,
但是每个服务端还都是访问入口(负载均衡信息的收集者),
入口负责返回一个它所知的最闲的服务器给客户端,客户端再去使用那个服务器
所以才用Delphi7自己做三層的,減少服務器的連接數,複雜邏輯我都寫到SP里好了
最近看那個CBX感覺不錯啊,EXE跑到流覽器裏面了
不过,activeform做稳定、易用(比如tab/回车/箭头键的控制)也需要一些经验
1、服务器的动态ADO连接,组件尽可能少一些,占用内存更少。一个ADO可以重复访问多个数据库文件。
2、服务也使用静态ADO连接,编成相应的函数,由客户端直接远程调用。
3、大量的计算放在客户端,让服务器仅存取数据。
4、可以考虑,将一些非公共数据,存放在客户端,减少对服务器的访问量。
......
当然这样也有几个好处:数据库库访问安全性,限制数据库连接数(*)
若仅仅从限制数据库连接数的考虑做所谓的三层,在windows平台下的数据库服务器,比如sql server,连接基本不占服务器资源,只需要几KB的内存而已。真正耗费资源的是应用本身的sql访问,而这一点跟连接数关系
不大,而只是跟实际的应用强度有关。
根据我的经验,往往这个所谓“三层”架构只能增加耗费(中间层到客户端的传输(如果是走http还更慢)),降低速度,基本上客户端直连数据库的速度比“三层”快一倍以上。多层架构的中间层设计,考虑的方向应该调整为:对业务逻辑处理处理(利用硬件和网络资源优势做复杂计算/)、多类型客户端(web,win32,多平台)访问、安全性、7*24稳定性等等。而非资料库连接,要考虑,也要针对当然不同的数据库不同的操作系统平台,连接实现的原理和对资料库的影响是不同而做考量,而非简单的一个delphi三层架构,再加一个负载平衡就可以做到通用。
简单的是最快的,任何的三层都没有比直连DB快,而且,每加一个处理概念或逻辑,带来的复杂度和不确定性都市需要考虑的。比如负载平衡真的就能很有效率吗,他本身也会带来一些需要处理的东西。
所以实际上成熟的成熟的中间件一般都是大公司在做,比如websphere,iis,weblogic,因为这个涉及的技术太广太深,普通的应用开发,我觉得建议直接采购这些产品,要么就使用简单有效成熟的技术来处理。
也很難找到相關的文章,真正有價值的東西部容易見到
感覺玩com的比較多
目前不是有個CBX框架么,沒接觸過,感覺還不錯,可以去研究一下
三层架构delphi+Java+Oracle模式的实现http://blog.csdn.net/lxchenjun/archive/2009/01/04/3705375.aspx
delphi7+indy+json+tomcat+servlet+mybatis+sqlserver使用JSON作为中间数据格式传递。
客户端用delphi+indy9处理http收发json数据
服务器端用tomcat 作为服务器
用servlet来做为服务端并实现业务
mybatis实现数据实体化。
事务在sqlserver存储过程里实现。看上去很复杂,但是每个都是发挥各自的优势,并且降低媾和度,每一块都可以单独开发。
Delphi做中间层,业务逻辑的处理,处理数据的操作,因为D在数据库上的效率还是不错的啊,ASP.NET开发客户端,可以浏览器访问