之前在專案中,對于資料,有時候會用輪詢去監控變化,后來在論壇中經常看到sp1234前輩說事件驅動和異步,慢慢的學習委托,事件,INotifyPropertyChanged........逐漸的理解和使用,感覺這些無論是程式邏輯還是道理上都更科學了,后來拓展一下看到訊息驅動,找了相關資料以及網上事件驅動和訊息驅動的區別,總感覺說的云里霧里,還有不少人說沒區別,我個人感覺事件是對訊息的封裝,具體的是怎么回事還是不確定,所以請教前輩們指導一下,事件驅動和訊息驅動的區別,以及用在哪里,專案中用哪種方式更科學?謝謝了
uj5u.com熱心網友回復:
就我個人感覺吧,有點咬文嚼字了。就像生產消費模式,一個訊息出去,觸發消費者的訂閱事件,
整個說是一個訊息驅動或者事件驅動,其實在我看來都沒問題。
感覺這就像討論 “回” 的四種寫法
uj5u.com熱心網友回復:
新建winform,拖個按鈕,雙擊按鈕生成事件,點擊按鈕,會執行按鈕事件,差不多就這個意思
uj5u.com熱心網友回復:
臥槽,你不是C#小吧主么?貼吧現在都被代做和廣告給占領了!!
uj5u.com熱心網友回復:
我覺得關鍵不在于訊息驅動或是事件驅動而是輪詢式和觸發式的區別
不論事件驅動還是訊息驅動 都是觸發式
uj5u.com熱心網友回復:
目前你可以把事件驅動和訊息驅動看作一回事。資深開發者可能認為他們有些細微的區別。比如
事件,可能耦合更高。C#的事件,可能不容易被C++方使用。
訊息,耦合度低一些。訊息比較容易獨立于具體實作,比如,訊息可以就是一字串。c#可以用它,java程式也可以用它。
訊息,一般會有一個訊息派送的機制,比如Windows的訊息回圈,RabbitMQ的訊息佇列協議等等。
uj5u.com熱心網友回復:
你理解的一點沒錯,值得肯定。當然輪回存在,如今是另一個輪回。訊息驅動輪回轉世,至于科學和不科學不必糾結,也許下一個輪回又是事件
上一個輪回的意義,封裝提高生產力,畢竟那個年代,一個觀察者老鼠和貓的故事,都讓博客園們炒了7,8年。不搞簡單點,那里會有他們?那里會有北鳥?
現在輪回的意義是解耦,既然群眾基礎上來了,那么復雜的事情就來了,并且非單體應用,分布式,微服務,grpc,雙向通訊,那么解耦的需求就上來了。xxx.xxxx+=
我總得知道xxx把,而且你總得把xxx給注入把(姑且說注入把,你是共享也好,注入也罷),你總得讓你的代碼知道xxx把
所以為了解除這種耦合,直接采用訊息。
至于未來,誰知道呢?也許隨著Actor模式的演進,Actor直接放分布事件也未可知
所以不必糾結什么科學與不科學。什么適合你的專案用什么
uj5u.com熱心網友回復:
是啊,所以也就不去C#吧了。哈哈哈
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/34604.html
標籤:C#
上一篇:C#用chart控制元件,橫坐標為實時時間,同時加入滾動軸scrollbar。開始運行時要點擊一下滾動軸,才能顯示折線?應該怎么修改?
下一篇:VB Event ClientCountChanged As CbDelegate(Of Integer)是事件,不能呼叫,請使用RaiseEvent引發事件
