我有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