簡體   English   中英

應用程序范圍的觀察者是否是有效的解決方案?

[英]Is an application-wide Observer a valid solution?

我在C#中使用Reactive框架,並且很好奇是否使用一個應用程序范圍的觀察者(Singleton Message Bus)是否值得? 在應用程序的隔離部分中,它的作用就像是一種魅力,但是我很好奇任何人是否有任何智慧在尖叫:“不!WTF在思考!”

非常歡迎技術投入以及理論模式知識!

我在一個舊的C / C ++應用程序中使用了這種方法。 它的優點是可以解耦模塊,但是根據我的經驗,它很快會在較大的應用程序中導致很多問題:

  • 您無法控制應用程序中實際發生的事情。 由於每個模塊都可以偵聽消息總線,因此每個模塊也可以影響應用程序的每個其他模塊。
  • 如果消息總線是通知觀察者的唯一方法,則發出通知可能會對性能產生不可預測的影響。
  • 要解決某些性能問題,您可以嘗試啟動緩沖消息(諸如“我會做很多事情,所以不要立即做出反應”和“好的,我現在就完成了,您可以處理我告訴過的所有消息您”),但這也可能導致不可預測的后果。

我的結論是,對於小型應用程序而言,全局消息總線是一個不錯的主意,但對於大型應用程序而言,則不是。 通過使用一個全局消息總線將所有模塊解耦,您可以有效地實現相反的效果,因為每個人現在都已鏈接到其他每個人,從長遠來看,使應用程序再次解開變得更加困難。

我建議使每個模塊盡可能獨立,並使用專門的觀察​​者(請參見“四人幫”的觀察者模式)。

此模式廣泛用於減少應用程序組件之間的聯系。 我已經在幾個項目中使用過它,它確實非常舒適且實用。 我一般來說是在談論模式,我不知道它在Reactive框架中是如何實現的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM