我目前正在編寫一個C#程序,並且正在努力解決一個概念性問題。C#UDP通信協議棧實現通知
應用程序的一個領域是通過UDP與微控制器進行通信。因此,我正在使用UDPClient並編寫了一個「通信器」,它執行一些編碼/解碼,校驗和檢查等。
我需要某種控制器,它允許我將命令發送到UDP-服務器)。其中一些是一對發送/接收,其他則是長時間運行。
我的想法是,我的微控制器/ UDP-服務器的每一個能力的一類,它有一個「Execute'功能,其簽約的」接收抽象'的底層Communicator併發送請求。我可以在每個任務(能力)的'Execute'函數中等待我在OnReceive-Handler(或超時)中觸發的事件。但是如果我需要一個任務需要多個發送/接收,那就行不通了。
那麼,有沒有什麼好的設計模式呢?還是有人有一個好的建議,如何以適當的方式實施它?
在某些命令上,我得到一個答案,例如'下載'我得到一個字節數組。我認爲在你的方法中,調用類(Controller)永遠不會得到答案 – kain
是的,它可以得到答案。 'CommandExecuter'可以執行該命令並將答案返回給'Communicator'並且'Communicator'將答案傳遞給'Controller'。在這種情況下,最好每個命令都有一個「ID」,這樣當Controller收到一個答案時,它可以找到它的命令或請求。 – Beginner
但是,這將如何?控制器將創建一個命令對象並將其放入共享隊列中。之後,它恢復到正常操作。控制流程如何? 或者它會是一個正確的方式來實現每個命令作爲一個任務,並同步在這個任務內運行? – kain