山海鲸创造了一种CS和BS热切换的编辑模式,即CSaaS架构,可以在安装软件之后一键从软件的CS状态切换为一个BS服务器,让私有化部署变得十分轻松。具体效果可以参照下面的视频:

https://www.bilibili.com/video/BV1NP411Z7zS/

可以看到,在视频中我们先在软件中进行了编辑,随后切换到web中依然可以在几乎完全相同的体验下进行编辑。

虽然山海鲸的CS和BS热切换非常强大和方便,但我理解这并未触及到这个问题的本质,这个问题的核心应该不仅仅是BS和CS,下面我分个层次再深入地聊一下这个话题。

第一个层次:纯粹BS和CS的区别。这就不得不聊到为什么山海鲸会做CSaaS了。首先,CS本身的优势是下载和部署简单,一个安装包就能解决所有问题。但软件安装之后,只有一台电脑能使用,如需要在其他电脑使用则需要各自再装一个软件,且CS在协同编辑上也不方便。而山海鲸很多客户是政企客户,如若领导要查看某项数据就需要装一个软件的话,那估计领导电脑就爆了。因此山海鲸结合两者的特点,不仅能一键切换,还能热切换甚至同时在BS和CS上操作(目前因为定价原因做了限制)。底层我们自己实现了一套框架(我们称之为VenJS,即Vue+Electron+Nestjs),让一套代码同时跑在软件中或者浏览器和服务器上,同时,我们做了一个协议的中间件,封装了http协议和进程间通信。基于VenJS写代码时候无需关心底层通信协议,协议的接口直接暴露在axios接口中。写代码的时候完全当作网站来写,由框架来把程序打包到软件当中。同一套代码,VenJS既可以打包成纯软件,也可以打包成纯网站,也可以打包出混血儿(就是现在山海鲸软件主版本采用的模式)具体代码细节以后有机会开一个专栏写一下,我们也有考虑后续框架成熟后可能会开源出来运营。

第二个层次关于游戏引擎和WebGL实际上这两个完全不是一个层面的东西,所以我们可以拆成两个部分来看。我们先聊聊工具链完善的PC端游戏引擎VS一般只有一个框架代码的Web端3D引擎。无论是从视觉还是开发便利性来看,ue或者unity这类游戏引擎完胜,不管是体积云天空、体积雾、水效这类复杂的视觉元素,或者地形编辑、材质节点等等这类辅助工具都会比Web上的引擎高一个层级,非要用Webgl框架,那美术得砍死你。如果只是做一些简单的Demo,那Web端引擎只剩一个优势,就是对于Web前端开发者来说上手简单。当然PC端引擎最终能不能跑在Web上也算一个问题,这个问题我们在第三个层次再探讨,这里我们单纯对比框架本身。但如果要做大型项目,特别是数字孪生项目,就是各有优势了,因为这类项目对数据集成和一些2D图表的整合要求很高,这个时候PC上的游戏引擎用起来就不太顺手了,毕竟他们是游戏引擎,对于通信这类整合和Web前端框架相比就略显难用(当然也取决于开发者对不同语言的熟悉程度)。再进一步来说,如果像是我们山海鲸本身自己要做数字孪生引擎,自己要来提供数字孪生工具链的话,那就远不如开源的前端框架好用了。我们需要大量整合的底层接口,需要定制魔改的渲染管线,几乎都等于再写一个引擎的工作量了,所以选开源的来改方便太多。

第三个层次关于D3D和WebGL或者说将来关于Vulkan和WebGPU这个问题首先有一个前提,那就是这个项目是否需要跑在Web上,如果需要,那就没有对比的必要了。因为只要想跑在Web上,目前就只能用WebGL,Web端应用Unity最终的也得编译到WebGL上运行,UE在官方版本中甚至直接取消了对于WebGL的编译,要自己去编译UE的社区版或者用ue的Pixel Streaming,当然这就完全是另一回事了。单纯对比性能来说,WebGL肯定是完全没法比的。如果项目不用跑在Web上,那其实这个问题就变成了应该选OpenGL还是D3D了,这个问题其实看看各大游戏引擎的选择就可见一斑了。回到我们山海鲸本身,目前虽然我们实现了一键热切BS/CS,但是渲染依然基于WebGL来做,下一步我们希望整合D3D的渲染能力,让CS状态下在D3D中渲染。当然这中间牵扯的Shader转换、Windows句柄和Chromium的整合,哪个都不是简单的问题,只能说任重而道远啊。

综上所述,选择何种数字孪生技术路线更多要取决于最终的项目特点和公司自身的技术栈,以及项目中对于引擎的定制开发程度。

C/S架构和B/S架构两种数字孪生技术路线的区别是什么?的更多相关文章

  1. Java单体应用 - 架构模式 - 01.三层架构

    原文地址:http://www.work100.net/training/monolithic-architecture-3level.html 更多教程:光束云 - 免费课程 三层架构 序号 文内章 ...

  2. 华为 1.static有什么用途?(请至少说明两种)

    1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问 ...

  3. JSP中两种模式的总结

    运用JSP/Servlet实现的Web动态交互,主要采用: 模式一:JSP+JavaBean 链接:http://wxmimperio.coding.io/?p=155 模式二;JSP+Servlet ...

  4. Netty源码之解码中两种数据积累器(Cumulator)的区别

    上一篇随笔中已经介绍了解码核心工作流程,里面有个数据积累器的存在(Cumulator),其实解码中有两种Cumulator,那他们的区别是什么呢? 还是先打开ByteToMessageDecoder的 ...

  5. iOS中的两种主要架构及其优缺点浅析

    凡是程序的开发者,应该对程序的架构都不陌生.一个程序的架构的好坏对这个程序有着非常重要的作用.今天我们来看一下iOS开发中用要的两种主流的程序架构.这个过程中我们主要以例子的形式展开. 我们来看第一种 ...

  6. 你知道C/S和B/S两种架构有什么区别吗?

    C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构     ...

  7. thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。

    thinkphp 的两种建构模式  第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...

  8. B/S 和 C/S两种架构

    一: 什么是B/S(Browser/Server)架构? 应用系统完全放在应用服务器上, 并通过应用服务器同数据库服务器进行通信,系统界面 是通过浏览器来展现的. T是浏览器模式. 优点: 1)客户端 ...

  9. 基于两种架构的ETL实现及ETL工具选型策略

    企业信息化建设过程中,业务系统各自为政.相互独立造成的"数据孤岛"现象尤为普遍,业务不集成.流程不互通.数据不共享--.这给企业进行数据的分析利用.报表开发等带来了巨大困难.在此情 ...

  10. C/S和B/S两种架构区别与优缺点分析

    C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. ...

随机推荐

  1. 解决class path resource [applicationContext.xml] cannot be opened because it does not exist

    在学习spring的过程出现class path resource [applicationContext.xml] cannot be opened because it does not exis ...

  2. kubernetes核心实战(九)

    14.Ingress 检查是否有安装 [root@k8s-master-node1 ~/yaml/test]# kubectl get pod,svc -n ingress-nginx NAME RE ...

  3. [Java/LeetCode]算法练习:转变日期格式(1507/simple)

    1 题目描述 题目来源: https://leetcode-cn.com/problems/reformat-date 给你一个字符串 date ,它的格式为 Day Month Year ,其中: ...

  4. OpenTiny 的这些特色组件,很实用,但你应该没见过

    大家好,我是 Kagol,OpenTiny 开源社区运营,TinyVue 跨端.跨框架组件库核心贡献者,专注于前端组件库建设和开源社区运营. 前面给大家介绍了 OpenTiny 快速创建 Vue Ad ...

  5. 快速重拾 Tmux

    Tmux 是一个 Linux (Mac OS也支持)下的终端复用器,相较于 Screen 更为强大,但快捷键和操作逻辑也更复杂,一段时间不用,就很容易忘记相关的命令和快捷键.本文旨在通过一个简单的场景 ...

  6. Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】

    Unity学习参考文档和开发工具 unity的官网文档:https://docs.unity3d.com/cn/current/Manual/ScriptingSection.html ■ 学习方式: ...

  7. 搞懂Python正则表达式,这一篇就够了

    本文代码基于Python3.11解释器,除了第一次示例,代码将省略 import re 这个语句 所有示例代码均可以在我的github仓库中的 code.py文件内查看 [我的仓库](PythonLe ...

  8. Mac 下 brew安装慢的问题

    brew默认源使用的是github,可以设置环境变量达到切换源的效果,见官网: https://github.com/Homebrew/install export HOMEBREW_BREW_GIT ...

  9. pandlepanlde-01-必备数学知识

    文章目录 必备数学知识 数学基础知识 高等数学 线性代数 行列式 矩阵 向量 线性方程组 矩阵的特征值和特征向量 二次型 概率论和数理统计 随机事件和概率 随机变量及其概率分布 多维随机变量及其分布 ...

  10. dataX源码学习

    文章目录 前言 开始准备 运行配置 开始运行 JobContainer 1.进入init prepare schedule post阶段 this.invokeHooks(); 总结 前言 在用dat ...