哪些因素是需要实现一个远程,事件驱动的系统? - 概述需要

我试图设计一种事件驱动系统,其中该系统的元件通过产生由系统的其它部件响应事件进行通信。 意图是组件是彼此独立的 - 或基本上独立我可以使它们。 该系统最初将在Windows 7上实施,并正在在Delphi编写。 所生成的事件由Delphi代码生成。 我明白如何实现一台机器上所描述的类型的系统。

我想设计系统,以便它可以很容易地在不同的机器架构特别部署与分布式架构,这很可能是Windows 7中运行的不同不同的组件没有为系统曾与任何系统通信没有要求外部到自身。

我曾试图调查我需要考虑,并看了看下面提及的问题的体系结构。 这些似乎对使用命名管道作为硬件间通信机制点。 由于这些调查我已经勾勒出下面来形容我的系统的结果 - 图的第一部分是因为我开发它的系统; 第二部分我所推导出我需要为未来可能的实现。 哪些因素是需要实现一个远程,事件驱动的系统?  - 概述需要

这导致了以下几点:

  1. 你可以通过传递命名管道的事件?
  2. 这是一个适当和合理的结构来解决这个问题?
  3. 有没有更好的方法?
  4. 我有什么(在这个级别的粒度)忘记了吗?

如何在事件驱动编程实现的? 如何从我的Delphi程序的一个实例发送一个字符串到另一个?

编辑:

我没有给从“@i给废话答案”回应充分考虑所产生的点。 我对他的观点最初的反应是:

  1. 同步异步v - 主要是异步
  2. 活动总是会在一个FIFO队列。
  3. 连接损耗 - 是不是非常重要的 - 我有能力应付这种非rigourously。
  4. 无界队列是与过去(如果他们能)事件处理的一个完美的方法 - 没有大量事件产生的期望。

--------------解决方案-------------

为了获得最大的部署灵活性(操作系统无关),我建议看看它在Java平台上运行流行的开源消息代理。 使用标准协议。 他们用Delphi等编程语言整合好,可以与Web应用程序中使用,并且有一个大的用户群和活跃的社区。

他们是很容易安装和配置在几分钟之内,和德尔福免费/商业客户可用。

一些实例是:

  • 阿帕奇的ActiveMQ
  • OpenMQ
  • JBoss的HornetQ的

我还建议书“企业集成模式”由Martin Fowler作为一个概述,并介绍,许多简单的食谱来处理具体问题。



请注意,我是商业德尔福的客户,为企业邮件系统,如xmlBlaster,RabbitMQ的,亚马逊简单队列服务和上述三家券商的开发商。

我只能回答你的问题在​​这里4:你如果事件是同步还是异步还没有决定。 在异步的情况下,你必须决定何时消息到达该怎么做。 你有一个队列? 有多大的队列? 一个可以抢在队列中的任意内容还是严格的FIFO。 如果消息丢失(某人轴网线),会发生什么?

在同步变种,其优点是,你有交付担保,但随后你会怎么做时,连接突然失去了?

连接损耗将是一个问题。 在更多的机器有,更大的是,它们将发生的可能性。 决定你将如何处理。

另一个麻烦的可能是,如果你有一个大的事件,几个小你做什么。 是转移FIFO或最小的优先顺序? 可事件来reeordered? 什么是这里的假设?



旁白是我砍的Erlang了很多。 在二郎所有的事件处理已经解决,但同时也意味着选择了你一个具体的模型(异步,无界队列,不保证一定传输,但检测连接丢失的)。

我建议看RabbitMQ的,http://www.rabbitmq.com/。 它具有服务器和客户端。 只需要在Delphi中一些包装代码,你准备好建立你的商业逻辑

干杯

这可能仅仅是一个消息队列的应用程序。

http://msdn.microsoft.com/en-us/library/ms632590(v=vs.85).aspx

分类:德尔福 时间:2015-03-15 人气:6
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.658 (s). 10 q(s)