《連載 | 物聯網框架ServerSuperIO教程》1.4種通信模式機制。附小文:招.NET開發,結果他轉JAVA了,一切都是爲了生活

參考文章:html

1.SuperIO通信框架介紹,含通訊本質git

2.C#跨平臺物聯網通信框架ServerSuperIO(SSIO)github

 

1、感慨服務器

      上大學的時候,沒有學過C#,花了5塊錢在地壇書市買了一本教程,也就算是正式入行了。後來深造,學過JAVA,後來迫於生計,打算轉JAVA了。後來考慮考慮,本身寫的框架仍是有很大發展餘地,後來仍是在C#的陣地上堅持了下來。從一開始的雛形,到SuperIO的產品化,再到服務器端的ServerSuperIO,也是慢慢演化而來。後期打算把ServerSuperIO移植到嵌入式設備上,以及完善開發文檔。原本不想提這些,可是今天打算招一個C#開發人員(B/S方面),是羣友,但是人家要轉JAVA開發了,也只能說緣分不到,沒法在一塊兒作事,後面附一些聊天記錄,供你們職業發展參考。網絡

 

2、答疑併發

        有人問,你這個框架和SuperSocket、netty......有什麼區別?ServerSuperIO是通信框架不?是;ServerSuperIO支持高併發不?理論上支持;ServerSuperIO支持跨平臺不?在Ubuntu上跑過。可是這些並非ServerSuperIO起初設計的初發點,它繼承了SuperIO的設計思想,後期才逐步的向服務端發展,增強通信能力、跨平臺等等。框架

        ServerSuperIO是一個物聯網框架,首先是以設備(傳感器)爲核心構建的框架,設備(傳感器)的協議無關性,能夠隨意掛載設備驅動在框架下運行。因此ServerSuperIO本質上協調設備驅動(協議)、IO通道(COM和NET)、運行機制(模式)之間的關係,使之無縫結合、運行。異步

        一直在工業領域混,作集成系統、遠程監測監控等等,因此ServerSuperIO不只僅是一個通信框架,更多的是結合了工做實踐經驗,本着可以解決實質問題。高併發

 

3、運行控制模式post

一、輪詢模式

    這是框架最先的運行模式,串口和網絡通信時均可以使用這種控制模式。當有多個設備 鏈接到通信平臺時,通信平臺會輪詢調度設備進行通信任務。某一時刻只能有一個設備發送請求命令、等待接收返回數據,這個設備完成發送、接收(若是遇到超時 狀況,則自動返回)後,下一個設備才進行通信任務,依次輪詢設備。

    應用場景是這樣的,服務端與設備進行通信遵循呼叫應答的方式,也就是IO可用的狀況下,服務端先發起通信命令請求,設備根據命令信息,檢驗經過後返回數據給服務端。這種通信模式很好理解,每一個設備的通信都遵循排隊的原則。可是若是某個設備的命令須要及時發送,怎麼辦?ServerSuperIO框架是支持設備優先級別調度的,例如:對某個設備要進行實時的檢測,須要連續發送命令,那麼就須要對設備進行高級別設置,發送請求數據命令。

    通信結構以下圖:

 

二、併發模式

    網絡通信的狀況下,輪詢模式顯然效率比較低,那麼能夠採用併發模式。併發通信模式是集中發送給全部設備請求指令,框架是採用循環同步方式發送請求命令給每一個IO通道對應的設備,固然也能夠採用並行異步方式集中發送請求命令。硬件設備接收到指令後進行校驗,校驗成功後返回對應指令的數據,通信平臺異步監聽到數據信息後,進行接收操做,而後再進行數據的分發、處理等。

    那麼這裏就涉及到IO通道接收到的數據是異步接收的,如何才能和設備驅動匹配上(把數據分發到設備驅動上),這是能過DeviceCode和DeviceIP兩種方式來實現的。DeviceCode能夠是設備地址或是設備編碼,DeviceIP是預先設置好的參數,要求終端設備的IP地址是固定的。

    通信結構以下圖:

 

三、自控模式

    只有網絡通信時可使用這種控制模式。自控通信模式與併發通信模式相似,區別在於發送指令操做交給設備驅動自己進行控制,或者說交給二次開發者,二次開發者能夠經過時鐘定時用事件驅動的方式發送指令數據。硬件設 備接收到指令後進行校驗,校驗成功後返回對應指令的數據,通信平臺異步監聽到數據信息後,進行接收操做,而後再進行數據的分發、處理等。

    自控通信模式能夠爲二次開發者提供精確的定時請求實時數據機制,使通信機制更靈活、自主,若是多個設備驅動使用同一個IO通道的話,時間控制會有誤差。

    一樣涉及到數據的分發,和併發模式同樣。

    通信結構以下圖:

 

四、單例模式

    只有網絡通信時可使用這種控制模式。在一個服務實例內只能有一個設備驅動,至關於一個設備驅動對應着N多個硬件設備終端。更適合通信的數據協議有固定的標準,以命令關鍵字處理不一樣的數據。適用於高併發的硬件終端設備主動上傳數據,服務器端根據數據信息進行處理和返回相應的數據。

    通信結構以下圖:

 

4、招.NET開發,結果他轉JAVA了,一切都是爲了生活

     最近工做比較忙,開發、解決問題、招聘......,連看手機的時間都沒有了,吃飯也是匆匆了事。爲了更好的推動平臺化建設,確實須要人,也爲未來儲備人才,在羣裏和網友聊聊,原本小夥前期仍是挺感興趣的。今天問問他的想法,結果打算轉JAVA了,也是我文章前頭感慨的緣由。我爲了生存,他也爲了生存,都是能夠理解的。

     聊天記錄以下,請參考:

 

相關文章
相關標籤/搜索