摘要:端暴露給端的方法方案優(yōu)缺點(diǎn)對比結(jié)論對于復(fù)雜的場景支持程度優(yōu)先選擇方案二。此文檔提供的方案同樣適用于開發(fā)的客戶端與數(shù)據(jù)交互
背景
CS架構(gòu)中會在客戶端中嵌入web頁面,能大量提升開發(fā)效率和用戶體驗。AR客戶端開發(fā)語言為C#,其中的Web頁面運(yùn)行在基于Chromium的瀏覽器中,當(dāng)Cient端需要調(diào)用多個Web窗口,并且各個Web窗口間也有數(shù)據(jù)交互,這樣的情況下Cient端管理多個Web窗口、Web端與Cient端、Web與Web窗口間如何更好的進(jìn)行數(shù)據(jù)交互就成為一個復(fù)雜的場景。基于項目實踐和以往的開發(fā)經(jīng)驗做了這方面的總結(jié)歸納。
C#向Web端,目前已知的可實現(xiàn)方案如下:方案一:
C#調(diào)起Web頁面時,將數(shù)據(jù)參數(shù)加入到url中,Web端解析。這是在一般項目中簡單的業(yè)務(wù)場景下最優(yōu)先選用的方案,傳參形式如下:http://10.10.10.10:80/index.html?pageId=3345688&name=62133&postType=1
方案二
C#調(diào)起Web頁面后直接調(diào)用js暴露出的函數(shù),將數(shù)據(jù)以參數(shù)的形式發(fā)送給Web端。
Web端暴露給Client端的方法: 方案優(yōu)缺點(diǎn)對比:結(jié)論:對于復(fù)雜的場景支持程度優(yōu)先選擇方案二。
Web端向C#進(jìn)行數(shù)據(jù)傳輸,目前已知的可實現(xiàn)方案如下方案1
C#暴露接口給Web端,js直接調(diào)用C#接口以參數(shù)形式發(fā)送數(shù)據(jù),C#解析請求參數(shù)解析并進(jìn)行事件分發(fā)。
Web調(diào)用c#暴露的方法
方案2
Web端與c#自定義協(xié)議,Web端通過自定義協(xié)議將數(shù)據(jù)發(fā)送給Client端,Client端截取自定義協(xié)議請求并解析。
如果定義的協(xié)議為:webclientprotocol://websendmsgtoclient,Web頁面通過iframe發(fā)送該請求,并在請求中加入數(shù)據(jù)如下:webclientprotocol://websendmsgtoclient?id=0&name=page
方案3:
Web端通過http請求向Web后端服務(wù)發(fā)送數(shù)據(jù),Web后端服務(wù)通過tcp長連接向Client端發(fā)送數(shù)據(jù),這種方式由于涉及多方面的數(shù)據(jù)傳輸,并且tcp傳輸數(shù)據(jù)復(fù)雜,一般情況下不選用該方案。
方案對比:
結(jié)論:從傳輸效率、開發(fā)工作量、實現(xiàn)的復(fù)雜度三個方面對比,方案一的優(yōu)勢明顯。
選擇C#向Web端的方案二和Web端向C#的方案一應(yīng)用數(shù)據(jù)傳輸格式:只支持String格式傳輸,但是為了數(shù)據(jù)解析的方便,將json轉(zhuǎn)換為string;
如果有A、B、C、D四個窗口間有數(shù)據(jù)的相互傳輸,模型如下:
備注:文中粘貼的代碼只是代碼實例,項目中實際用的暴露接口需要提供事件分發(fā),數(shù)據(jù)格式檢測的功能。
此文檔提供的方案同樣適用于C++開發(fā)的客戶端與Web數(shù)據(jù)交互
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94628.html
摘要:說起,其實早在出現(xiàn)之前,網(wǎng)頁就是在服務(wù)端渲染的。沒有涉及流式渲染組件緩存對的服務(wù)端渲染有更深一步的認(rèn)識,實際在生產(chǎn)環(huán)境中的應(yīng)用可能還需要考慮很多因素。選擇的服務(wù)端渲染方案,是情理之中的選擇,不是對新技術(shù)的盲目追捧,而是一切為了需要。 作者:威威(滬江前端開發(fā)工程師)本文原創(chuàng),轉(zhuǎn)載請注明作者及出處。 背景 最近, 產(chǎn)品同學(xué)一如往常笑嘻嘻的遞來需求文檔, 縱使內(nèi)心萬般拒絕, 身體倒是很誠實...
摘要:讓端與服務(wù)端維持一個有效的長連接,實現(xiàn)服務(wù)端主動推送數(shù)據(jù)。不同是實現(xiàn)了服務(wù)端與客戶端的全雙工通訊。在未出現(xiàn)之前,要是實現(xiàn)一個信息推送的功能,通過來實現(xiàn)唯一方案就是輪訓(xùn),輪訓(xùn)分長短,各有弊端。 Web Worker讓JS有了多線程的能力,可以將復(fù)雜耗時的操作都交付給Worker線程處理。WebSocket讓web端與服務(wù)端維持一個有效的長連接,實現(xiàn)服務(wù)端主動推送數(shù)據(jù)。將二者一結(jié)合,業(yè)務(wù)系...
摘要:讓端與服務(wù)端維持一個有效的長連接,實現(xiàn)服務(wù)端主動推送數(shù)據(jù)。不同是實現(xiàn)了服務(wù)端與客戶端的全雙工通訊。在未出現(xiàn)之前,要是實現(xiàn)一個信息推送的功能,通過來實現(xiàn)唯一方案就是輪訓(xùn),輪訓(xùn)分長短,各有弊端。 Web Worker讓JS有了多線程的能力,可以將復(fù)雜耗時的操作都交付給Worker線程處理。WebSocket讓web端與服務(wù)端維持一個有效的長連接,實現(xiàn)服務(wù)端主動推送數(shù)據(jù)。將二者一結(jié)合,業(yè)務(wù)系...
閱讀 2222·2021-09-07 09:58
閱讀 3400·2019-08-30 14:07
閱讀 1310·2019-08-29 12:32
閱讀 676·2019-08-29 11:06
閱讀 3700·2019-08-26 18:18
閱讀 3739·2019-08-26 17:35
閱讀 1387·2019-08-26 11:35
閱讀 617·2019-08-26 11:35