君方智能设计平台-对象持久化技术方案

1.背景介绍

  • 1.1序列化功能

序列化是将复杂的图形对象、数据结构或对象转换成一种可被存储、传输或分享的格式的过程。这个格式通常是二进制或文本形式,能够轻松地保存在文件中或通过网络发送到其他应用程序。序列化的目的是将数据持久化,使其在不同时间和地点能够被还原为原始对象。

在图形平台开发中,序列化常常用于保存用户创建的图形对象和场景数据。这意味着用户可以在下次打开应用程序时重新加载之前的工作,而无需从头开始。

  • 1.2反序列化功能

反序列化是将序列化的数据还原为内存中的对象和数据结构的过程。这个过程是序列化的逆过程,它涉及解码序列化格式并将数据映射回相应的对象和数据结构。

在反序列化过程中,解码器负责解析序列化数据并将其还原为原始数据类型。这可能涉及将字节流转化为数字、字符串、布尔值等基本数据类型,并将其映射回对象的属性。解码器必须确保数据的完整性和一致性,以避免潜在的错误。

  • 1.3 序列化的原理

序列化是一项至关重要的技术,它在图形平台开发中发挥着关键作用。序列化的本质是将图形对象和数据结构转化为一种可持久化存储或传输的格式,使得这些数据能够在不同的时间和地点进行加载和还原。为了更好地理解序列化,让我们深入研究其原理。

2.使用场景

  • 文件打开
  • 文件保存
  • 对象拷贝
  • 事务机制

3.常用的持久化方案

  • 3.1 方案1

在AutoCAD的产品中,如果对象需要持久化,需要实现持久化的类实现如下的接口。

virtual int GetSize() cosnt = 0
virtual bool Serialize(char *pData) = 0
virtual bool Unserialize(char*pData) = 0
virtual Object * Clone() = 0
virtual Object* DeepClone() = 0

缺点:容易出错,升级代码维护困难。

  • 3.2 方案2

UG/NX,广联达数维等技术方案,利用OM的反射框架,底层统一实现,灵活性不够。

已知情况:

  • AutoCAD,AutoCAD Architecture,AutoCAD MEP, 没有OM框架。
  • UG/NX、广XX达维设计有自己的OM反射框架。

使用OM优点:对象拷贝,序列化和反序列化,事务支持容易。定义数据对象时,只许通过宏定义对象schema,底层统一实现。

缺点:需要额外的OM框架,增加工作量,问题排查麻烦。

采用AutoCAD无OM模式优点:对象拷贝,序列化和反序列化,数据版本升级容易且灵活,代码的可读性好,问题排查容易。

缺点:新增数据对象,实现自己的拷贝,序列化和反序列化逻辑。

使用OM框架,Redo/Undo能够实现增量备份更容易支持。

4.OM反射方案选择

通过实现类似于Qt中对象属性反射功能,可以参考UG及广XXX达设计实现。

(1)UG方案:实现通过定义对象定义schema文件,类似Qt编译前通过特定程序生成反射代码文件。

反射文件样例

static ClassAttribute attributeTable[] ={{

&StiffenerParmsClassId, &StiffenerParms::m_distanceToleranceAttId, "m_distanceTolerance", NULL, NULL, NULL, NULL, NULL, NULL,

{0, -1, -1}, 124u, NULL_RTC, offsetof(class UGS::Ship::StiffenerParms, m_distanceTolerance),

0u, 0u, OM_type_double, 0, 0, 0}}

(2)广XX达方案等:通过定义宏来生成反射代码文件。

方案比较

UG方案:代价大,流程复杂,好处是可以生成不同语言的接口文件。

广XX达方案:简单,也能满足要求。

综合考虑,采取类似广XX达方案,简单也能满足需求。

5.OM框架实现

5.1 类Class的Schema设计

 成员类型成员名称成员功能
ClassId       m_parentClassId
ClassId        m_classId
Guid            m_assemblyId所属模块Guid
std::vector<PropertySchema>m_properties属性schema列表
std::wstring m_assemblyName所属模块名称
std::wstring m_className
std::wstring m_parentClassName
intm_version
int      m_index

5.2 属性Property的schema设计

成员类型成员名称成员功能
PropertySchemaType m_propertySchemaType
IntOrFloatTypem_intOrFloatType
IntBaseType    m_intBaseType
string  m_propertyName
string  m_propertyType
intm_offset
intm_propertySize
intm_propertyBehaviourTypes

6.总结

        序列化和反序列化是图形平台开发中的关键技术,它们允许将图形对象和数据结构转化为可持久化存储或传输的格式。不同的序列化实现方案可供选择,包括二进制序列化、XML 和 JSON 序列化,以及自定义序列化。通过基于OM框架的序列化和反序列化方案,可以实现数据的持久性和跨平台传输,为图形平台开发提供更大的灵活性和可扩展性。

君方智能设计平台链接:

ShipMaker船舶协同设计软件介绍-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的消息中间件与异步通信实现

Java中的消息中间件与异步通信实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 消息中间件和异步通信在现代软件系统中扮演着重要角色。它们可以帮助解耦系…

【代码随想录算法训练营第六十二天|卡码网108.冗余连接、109.冗余连接II】

文章目录 108.冗余连接109.冗余连接II 108.冗余连接 就是对输入进来的边判断是否在一个并查集中&#xff0c;在的话就把这个删除了&#xff0c;不再就加入并查集中。 n int(input()) father [0] * (n1) def init():for i in range(n1):father[i] idef find(u):if father[u…

服务器本地部署文件服务器minio

minio类似于阿里云的OSS&#xff0c;为不方便把图、文、日志等形式的文件保存在公有云上的&#xff0c;可以在自己的服务器上部署文件服务器 看过本人前几个文章的&#xff0c;使用docker就会很快上手部署&#xff0c;直接上所有代码 #添加镜像 docker search minio docker p…

干货丨做新媒体运营,你必须了解的5大平台规则

5大平台必看规则 01.小红书 平台特性 小红书是一个以生活方式分享为主的“社区&#xff0b;电商”平台。 其中80%都是女性用户拥有精准的女性流量&#xff0c;是美妆护肤、潮流包包的种草地&#xff01;小红书整体的内容围绕的是精致、极简、自律、丰富有趣的生活。 用户画像…

怎么给电子文档批量盖骑缝章或公章?

怎么给电子文档批量盖骑缝章或公章?假如你有100个PDF电子文档要同时盖缝章&#xff0c;如果不借助专业的盖电子骑缝章软件&#xff0c;还真不好干。下面讲述如何利用e-章宝批量盖电子骑缝章。 1.在软件中导入待批量盖章的PDF文件 如下图&#xff0c;在“待盖章PDF文件”区域…

aws slb

NLB 目标组 Target is in an Availability Zone that is not enabled for the load balancer 解决&#xff1a; https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html 负载均衡器添加 后端EC2 所在的vpc网段即可。…

谨慎投稿!这本EI期刊正在被“劫持”!

Journsl ofTisniin lniversity Seience and Technology《天津大学学报&#xff08;自然科学与工程技术版&#xff09;》创刊于l955年&#xff0c;月刊&#xff0c;全国核心期刊&#xff0c;天津市一级期刊。该刊是由天津大学主办的综合性学术刊物&#xff0c;主要刊登自然科学和…

这款拖拽式大屏设计神器,太惊艳了!收藏吧!

概念​ 可视化大屏是当今信息时代的一种重要技术工具&#xff0c;它以大屏幕为显示终端&#xff0c;通过图形、图表、地图等形式将大量数据和信息直观地呈现出来&#xff0c;帮助用户更好地理解和分析数据。 JVS智能BI的可视化大屏从界面布局、色彩搭配&#xff0c;到图表类型…

一个生成4种UUID的Typescript代码(不依赖任何库)

最近写个uni-app前端&#xff0c;由于要兼容小程序环境&#xff0c;标准几个npm里的库都不能用了。看了下网上的uuid js库&#xff0c;再加上short-uuid的源码。一并输入GPT敲打了几个来回后&#xff0c;得到这样的代码&#xff1a; uuid.ts enum UUIDFormat {CookieBase90,F…

大模型推理加速调研(框架、方法)

大模型推理加速的目标是高吞吐量、低延迟。吞吐量为一个系统可以并行处理的任务量。延时&#xff0c;指一个系统串行处理一个任务时所花费的时间。调研了一些大模型推理的框架。 框架llama.cpprtp-llmvllmTensorRT-LLMLMDeployfastllm语言Chttps://github.com/ggerganov/llama…

SpringBoot项目——送水管理系统

1、导入坐标 坐标作用pagehelper-spring-boot-startermybatis分页插件spring-boot-starter-thymeleafJSP模板引擎mybatis-spring-boot-startermybatisspring-boot-starter-webwebspring-boot-starter-testtestlombok不需要再写getter、setter或equals方法&#xff0c;只要有一…

通过,注解@value,读取配置文件中的数据(并设置默认值)

1.定义配置类 import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component;/*** lecheng云相关配置*/ Component Data Re…

3D问界—什么是blender,与MAYA有什么区别

问题提出&#xff1a;什么是blender&#xff0c;与MAYA有什么区别 Blender 是一个开源的、免费的 3D 建模和动画软件&#xff0c;广泛应用于各种领域。它提供了丰富的功能和工具&#xff0c;适用于从业余爱好者到专业艺术家的不同需求。 1. Blender 的主要用途和功能 属 性描述…

Vue2基础 13:内置指令

内置指令 1 指令梳理2 补充指令2.1 v-text2.2 v-html2.3 v-cloak案例--延迟引入vue造成js阻塞 2.4 v-once案例--点击按钮1并展示初始的值 2.5 v-pre 1 指令梳理 前面几节的基础学习已经用到了部分的指令&#xff0c;先梳理一下。 指令描述v-bind单向绑定解析表达式&#xff0…

零件机加工行业数字化转型,HSMES助您一臂之力!

由于刀具磨损、切削参数不合适以及机床老化等问题&#xff0c;导致加工效率低下&#xff1b;随着产品精度的不断提高&#xff0c;对加工技术的要求也越来越高。然而&#xff0c;许多企业缺乏先进的加工技术和经验&#xff0c;导致产品质量不稳定&#xff0c;难以满足客户需求&a…

解决Spring Boot中的安全漏洞与防护策略

解决Spring Boot中的安全漏洞与防护策略 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. Spring Boot安全漏洞的现状与挑战 在当今软件开发中&#xff0c;安全性是至关重要的一环。Spring Boot作…

定制化的 CSS 魔法:WebKit 处理 CSS 变量的深度解析

定制化的 CSS 魔法&#xff1a;WebKit 处理 CSS 变量的深度解析 CSS 变量&#xff0c;也称为自定义属性&#xff0c;为开发者提供了一种强大的方法来管理样式表中的值。它们允许开发者定义可重用的属性值&#xff0c;然后在样式表中多次引用这些值。WebKit&#xff0c;作为支持…

高项论文老是过不了!换种方法与思路…

2024年上半年信息系统项目管理师成绩公布后&#xff0c;许多考生的论文成绩都不理想&#xff0c;很多人得了30多分&#xff0c;及格线上的考生大多只有45、46分&#xff0c;而50分以上的考生似乎并不多。以下应该是许多考生的心声&#xff1a; 每次都是论文不及格&#xff0c;…

蚂蚁全媒体总编刘鑫炜谈新媒体时代艺术家如何创建及提升个人品牌

新媒体时代艺术家如何创建及提升个人品牌形象——专访蚂蚁全媒体总编刘鑫炜 图为蚂蚁全媒体总编刘鑫炜 在新媒体风潮席卷全球的今天&#xff0c;传统艺术与新媒体技术的融合越来越紧密。这种变革不仅改变了艺术作品的呈现方式&#xff0c;也给艺术家们提供了更多的可能性。那么…

相机、镜头基础知识及硬件选型介绍

工业相机基础知识 1.相机Binning(图像读出模式)功能:将相邻的几个像素合并成一个像素,其优点如下:1)可提高信噪比至sqr(mn)倍;2)可提高帧速至mn倍;3)可提高像素响应度。 2.相机芯片中定义1英寸=16mm,不等于25.4mm 3.相机的作用及基本成像过程:通过光电反应将光…