我想设置一个小程序,从数据库中检索信息,然后在请求时将该信息分发给另一个程序。例如,一个名为“Master”的程序将从数据库中检索数据并创建一个对象集合(列表,数组等等,无论哪种效果最好),然后一个名为“Slave”的程序(从多个桌面运行)可以调用一个方法(即,GetNextRecord)来自“Master”以检索集合中的下一条记录。
我希望能够只让一个'Slave'能够一次调用GetNextRecord方法,以避免给多个Slave提供相同的记录。 “Master”将在服务器上运行数据库,而“Slave”将在多台桌面计算机上运行。
有没有人有这方面的例子或教程如何完成?
TIA, Brian Enderle
答案 0 :(得分:12)
您所描述的内容通常称为三层或多层设计。
有一些Delphi库可以让它更容易:
相关问题:
答案 1 :(得分:1)
您所描述的内容也称为load balancing,可以使用Message Queue来实现。
查找面向消息的中间件并检查现有的实现,例如Microsoft Message Queuing (MSMQ):
MSMQ本质上是一种消息传递 允许应用程序的协议 在不同的服务器/进程上运行 以安全的方式进行沟通。
推荐阅读也是关于Enterprise Integration Patterns
的书注意:我是Delphi和Free Pascal客户端库的作者,用于开源消息队列/消息代理(ActiveMQ,HornetQ,OpenMQ,RabbitMQ)
答案 2 :(得分:0)
我会在Delphi XE中查看DataSnap。有一个免费的DataSnap 2010白皮书,其中包含http://www.embarcadero-info.com/in_action/radstudio/db.html的视频,我目前正在为另一份白皮书(可能在下个月或2011年初发布)开发Delphi XE小型但真实的案例研究应用程序。在此期间,您还可以查看我今天在http://www.eBob42.com/courseware发布的Delphi XE DataSnap Development Essentials课件手册(请参阅http://www.ebob42.com/training/DataSnapXE.pdf的TOC)。
如果你没有Delphi的企业版,并且不想升级到它,那么你可能想要给RemObjects SDK看看。
注意:我是两者的经销商,但我也在客户的实际项目中使用,所以我知道我在说什么; - )