以前做c/s程序,都是用adoconnection直接连上远端的sqlserver数据库,用数据感知组件来开发,后来发现有时候如果很多人同时在用的话,程序容易崩溃,我就想,是不是同时连接sqlserver的人太多了,sqlserver处理不过来呢?我又想如果在服务器端部署一个程序,客户端的程序都通过它来进出sqlserver,sqlserver只维持一个连接,那就不会崩溃了。(这个想法不知对错,请大家指正,不过我就着这个想法开始了下面的思考。)
经过查找资料,发现“分布式多层数据库开发”的文章,形式上跟我的想法一样,具体是否真的一样,请大家指正,谢谢。打开我的delphi2010想照猫画虎,发现“新建”窗口里的Multitier组是灰色的,不可用,为什么?
又找资料,又发现“使用DataSnap开发多层数据库系统”,看看我的delphi2010,还真有单独的“datasnap server”组的工程。这个跟Multitier又有何不同?
找到的资料实在是凌乱,不好总体把握,请高手们简单介绍一下,好让我等菜鸟有个快速入门的机会,谢谢大家。
经过查找资料,发现“分布式多层数据库开发”的文章,形式上跟我的想法一样,具体是否真的一样,请大家指正,谢谢。打开我的delphi2010想照猫画虎,发现“新建”窗口里的Multitier组是灰色的,不可用,为什么?
又找资料,又发现“使用DataSnap开发多层数据库系统”,看看我的delphi2010,还真有单独的“datasnap server”组的工程。这个跟Multitier又有何不同?
找到的资料实在是凌乱,不好总体把握,请高手们简单介绍一下,好让我等菜鸟有个快速入门的机会,谢谢大家。
但是,很多人同时在用 和 程序容易崩溃 应该没有直接的关系,只要数据库的许可数足够、服务器硬件足够,一般不会出现无法应付的连接太多,可以通过连接池、应用服务器(多层)来解决
如果是局域网本地数据库,你说的问题应该是设计上有问题。
SocketConnection + ClientDataSet
服务器:
adoconnection, adoquery
中间层:servert.exe
当用户量非常大的时候,最好自己手动编写一个负载平衡服务器来分配负载。这样就不会有什么问题了。
关于IOCP线程池的东西,你可以参照这篇帖子:http://www.88dev.com/forum.php?mod=viewthread&tid=8&extra=page%3D1这篇帖子是讲述如何编写IOCP线程池的方法的。