实现远程事件驱动系统需要哪些元素? - 需要概述

我正在尝试设计一个事件驱动的系统,其中系统的元素通过生成由系统的其他组件响应的事件来进行通信。组件旨在彼此独立 - 或者尽可能独立于我可以制造它们。该系统最初将在Windows 7上实现,并且正在用Delphi编写。生成的事件将由Delphi代码生成。我理解如何在一台机器上实现所述类型的系统。 我希望设计系统,以便它可以很容易地部署在不同的机器架构上,特别是在分布式架构上运行的不同组件,这可能与Windows 7不同。系统不需要与任何系统通信对自己而言。 我已经尝试调查我需要考虑的架构,并查看了下面提到的问题。这些似乎指向利用命名管道作为硬件间通信的机制。作为这些调查的结果,我概述了以下内容来描述我的系统 - 图表的第一部分是我正在开发的系统;我推断的第二部分是将来可能实现的。 这导致以下几点: 你能通过命名管道传递事件吗? 这是解决这个问题的合适而合理的结构吗? 还有更好的选择吗? 我忘记了什么(在这个粒度级别)? 事件驱动编程是如何实现的? 如何从一个Delphi程序实例发送字符串到另一个实例? 编辑: 我没有充分考虑“@I给出垃圾答案”的回应。我对他的观点的初步回应是: 同步v异步 - 大多是异步的 事件将始终位于FIFO队列中。 连接丢失 - 并不是非常重要 - 我可以负担得起非严格的处理。 无界队列是处理传递事件的完美方式(如果可以的话) - 没有大量事件生成的期望。     
已邀请:
为了获得最大的部署灵活性(独立于操作系统),我建议您查看在Java平台上运行的流行的开源消息代理。使用标准协议。它们与Delphi和其他编程语言很好地集成,可以与Web应用程序一起使用,并且具有大量安装的用户群和活动社区。 它们在几分钟内便于安装和配置,并且可以使用Delphi的免费/商业客户端。 一些例子是: Apache ActiveMQ OpenMQ JBoss HornetQ 我还推荐Martin Fowler的“企业集成模式”一书作为概述和介绍,有许多简单的方法来处理特定的问题。 请注意,我是企业消息系统的商业Delphi客户端的开发人员,例如xmlBlaster,RabbitMQ,Amazon Simple Queue Service和上面提到的三个代理。     
我只能在这里回答你的观点4:你还没有决定一个事件是同步还是异步。在异步情况下,您必须决定在邮件到达时要执行的操作。你有队列吗?队列有多大?可以抓取队列中的任意元素,还是严格的FIFO。如果消息丢失(有人瞄准网络电缆)会发生什么? 在同步变体中,优势在于您获得了传送保证,但是当连接突然丢失时您会怎么做? 连接丢失将成为一个问题。你拥有的机器越多,它们发生的可能性就越大。决定你将如何处理。 如果你有一个大事件和几个小事件,你可能会遇到另一个麻烦。传输FIFO的顺序还是最小的?活动可以重新排序吗?这里有什么假设? 除此之外,我经常攻击Erlang。在Erlang中,所有事件处理都已经解决,但这也意味着为您选择了特定的模型(异步,无界队列,无保证传输,但检测到连接丢失)。     
我建议看一下RabbitMQ,http://www.rabbitmq.com/。它有服务器和客户端。只需要在delphi中使用一些包装器代码,您就可以构建业务逻辑了 干杯     
这可能只是消息队列的应用程序。 http://msdn.microsoft.com/en-us/library/ms632590(v=vs.85).aspx     

要回复问题请先登录注册