C/S架构和B/S架构两种数字孪生技术路线的区别是什么?
山海鲸创造了一种CS和BS热切换的编辑模式,即CSaaS架构,可以在安装软件之后一键从软件的CS状态切换为一个BS服务器,让私有化部署变得十分轻松。具体效果可以参照下面的视频:
可以看到,在视频中我们先在软件中进行了编辑,随后切换到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架构两种数字孪生技术路线的区别是什么?的更多相关文章
- Java单体应用 - 架构模式 - 01.三层架构
原文地址:http://www.work100.net/training/monolithic-architecture-3level.html 更多教程:光束云 - 免费课程 三层架构 序号 文内章 ...
- 华为 1.static有什么用途?(请至少说明两种)
1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问 ...
- JSP中两种模式的总结
运用JSP/Servlet实现的Web动态交互,主要采用: 模式一:JSP+JavaBean 链接:http://wxmimperio.coding.io/?p=155 模式二;JSP+Servlet ...
- Netty源码之解码中两种数据积累器(Cumulator)的区别
上一篇随笔中已经介绍了解码核心工作流程,里面有个数据积累器的存在(Cumulator),其实解码中有两种Cumulator,那他们的区别是什么呢? 还是先打开ByteToMessageDecoder的 ...
- iOS中的两种主要架构及其优缺点浅析
凡是程序的开发者,应该对程序的架构都不陌生.一个程序的架构的好坏对这个程序有着非常重要的作用.今天我们来看一下iOS开发中用要的两种主流的程序架构.这个过程中我们主要以例子的形式展开. 我们来看第一种 ...
- 你知道C/S和B/S两种架构有什么区别吗?
C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 ...
- thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。
thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...
- B/S 和 C/S两种架构
一: 什么是B/S(Browser/Server)架构? 应用系统完全放在应用服务器上, 并通过应用服务器同数据库服务器进行通信,系统界面 是通过浏览器来展现的. T是浏览器模式. 优点: 1)客户端 ...
- 基于两种架构的ETL实现及ETL工具选型策略
企业信息化建设过程中,业务系统各自为政.相互独立造成的"数据孤岛"现象尤为普遍,业务不集成.流程不互通.数据不共享--.这给企业进行数据的分析利用.报表开发等带来了巨大困难.在此情 ...
- C/S和B/S两种架构区别与优缺点分析
C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. ...
随机推荐
- VW
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 更优雅的OrientDB Java API
OrientDB API v1.0.0(OrientDB 3.x) Gitee OrientDB介绍 OrientDB是一个开源的NoSQL数据库管理系统,同时也是一款高性能的图数据库,支持ACID事 ...
- 二进制安装Kubernetes(k8s) v1.24.2 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.24.2 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 强烈建议在Github ...
- 使用easyexcal导出excal
需要的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</ ...
- [SpringBoot]Spring Boot Framework @ Environment / ApplicationContext & SpringApplication
[#]: 表示较为重要 1 Spring Boot Overview SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全 ...
- DG修复:清理归档配置归档清理脚本
问题描述:DG同步断了十天,发现FRA归档盘符满了.需要清理下,重新增量恢复DG Error 12528 received logging on to the standby FAL[client, ...
- Linux(二)文件权限和压缩
1 搜索查找类 1.1 查找定位文件 find <搜索范围.路径> <选项> find将从指定目录下递归地遍历其各个子目录,将满足条件的文件显示在终端. 选项说明 -name: ...
- pandas操作excle
Python是一门强大的编程语言,也是数据科学领域中最流行的语言之一.在处理数据时,很多时候需要与Excel进行交互,以进行数据读取.清理和分析.Python中有很多工具可以与Excel进行交互,其中 ...
- TiDB与MySQL的SQL差异及执行计划简析
作者:京东零售 肖勇 一. 前言导读 TiDB作为NewSQL,其在对MySQL(SQL92协议)的兼容上做了很多,MySQL作为当下使用较广的事务型数据库,在IT界尤其是互联网间使用广泛,那么对于开 ...
- AI测试101:测试AI系统的实用技巧&ML和AI自动化工具
基于人工智能的系统,也称为神经网络(NN Neural Networks),和其他应用程序一样是 "系统",因此需要测试.本文将指导你测试AI和基于NN的系统,并理解相关概念. 测 ...