我有2个程序A,B。如果A完成,我想B知道并开始运行,使用结果A的数据。“设计模式”可以应用于不同的程序吗?
A是一个.NET Web应用程序。我认为这并不是一直在记忆中,对吧?只有在浏览器请求时才存在,对吗?
之前,A和B是同一个程序的两个功能。但是由于商业原因,B程序有时会失败。即使B没有失败,这也是非常耗时的,并且使得客户等待太久并且不快乐。所以我把B分开了。顺利使用A的客户很高兴。 B在后台工作。
我目前的设计是:当A完成时,A将数据保存到数据库中。 B是一个windows服务。它每5分钟检查一次数据库,并在发现新作业时开始运行。 A,B彼此不认识。
老板问为什么闲置5分钟?我回答是因为这是实施我们一些业务的最简单方式。我没有太多设计。
于是我去阅读材料,发现Observer Pattern
看起来像我想要的。经过几次阅读后,我认为Observer Pattern
只能应用于同一程序中的类,而类和对象则存在于回忆中。
我不确定我的问题是:GOF Design Patterns
可以应用于不同的程序吗?或者:RabbitMQ是如何实现这种实时处理类型的需求的?
我无法想象将5分钟的检查间隔设置为非常短的时间段。这对cpu来说是一个很大的负担。
编辑:我已经进入这个关于Observer
和Publish/Subscribe
的解释,我认为这对那些从搜索中看到这个线索是有用的。
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#observerpatternjavascript
差异观察者之间和发布/订阅模式
Observer模式要求观察者(或物体)希望接收的话题通知必须订阅这个感兴趣的对象烧成事件(主题)。
但是,发布/订阅模式使用位于希望接收通知的对象(订阅者)和触发事件的对象(发布者)之间的主题/事件通道。这个事件系统允许代码定义特定于应用程序的事件,这些事件可以传递包含订户所需值的自定义参数这里的想法是避免用户和发布者之间的依赖关系。
这不同于观察者模式,因为它允许实现适当的事件处理程序的任何用户进行注册并领取话题通知由publisher.`
我研究了NServiceBus。这似乎是我想要的。谢谢。但我也看到一些文章说'观察者模式'=='发布 - 订阅模式'。那是什么意思?如果我不想使用MSMQ,NServiceBus会有其他的选择吗? – hbrls
我有另一台运行debian的服务器机器。我在linux/python中有类似的东西吗? – hbrls
@hbrlovehaku是的,第二个想法,我想观察员和pub/sub是一样的东西......你将使用Web服务/ RPCs,但设计模式是相同的。至于Linux/Python,对不起,我不能帮助你,因为我只是不知道。 – McGarnagle