天洑软件 发表于 2019-12-17 17:36:39

AIPump软件前台数据框架设计

AIPump水泵设计软件即将和大家见面了,作为软件前台框架和界面的开发者,这里和大家简单聊一聊这款软件的前台数据框架设计。首先看一看整体的界面:
http://www.njtf.cn/ueditor/net/upload1/2017-05-09/49b9b66c-f074-43fb-8fcf-4e0233256948.png

http://www.njtf.cn/ueditor/net/upload1/2017-05-09/ccddd471-83f7-4deb-9e9f-615e2f846cbe.png
从软件界面的角度来说,AIPump界面实现的功能有各类曲线的绘制,B样条曲线拖拽交互,贝塞尔曲线拖拽交互,以及用户拖拽产生数据变化后的同步其中包括保存数据、传递给后台水泵设计核心模块变化后的数据用于CFD计算,后台计算后的数据更新前台相应的2D或者3D模型视图。至此,大家可以看到用户使用软件对2D视图的任意一次交互操作,前台和后台都在做数据交互。作为前台和后台的重要桥梁,数据交互框架显然是要下功夫设计的。数据框架的设计目标有两个方面的考量。第一是前期成本,尽量通用提高开发效率;第二是后期成本,尽量减少维护难度、提升可扩展性。这里首先感谢同事们的默契配合和热情帮助,大家在数据格式统一这一点上看法空前一致,这就为设计通用的数据读写框架提供了现实基础。我们截取一些数据描述来看看这些优雅的符号绅士:VARIABLE="M","BETA"ZONE      T="beta",I=          30    J=          9    ,F=POINTVARIABLE="M","THETA"ZONE T="theta",I=         30J=         9 ,F=POINTVARIABLE="X","Y"ZONE T="streamline",I=          60 J=         9 ,F=POINT数据的世界统一了,下面的任务是基础设施建设了。既然一套代码就可以搞定,那我们首先想到把数据的读写函数实现在一个接口基类里,然后所有的betaData, thetaData等等数据从这个基类派生。我们拿数据的读接口举个例子:http://www.njtf.cn/ueditor/net/upload/2017-05-09/878cae32-1349-4262-bf5f-dcca19e4537e.png恳请大家放过我的微量的懒惰和硬编码。基类里实现数据的读接口了,下面我们要做的是beta,theta这些数据类从基类派生继承接口:
class BetaDataSrc : publicIDataSrcInterfaceclass ThetaDataSrc :public IDataSrcInterfaceclass StreamLineDataSrc :public IDataSrcInterface然后beta,theta类履行他们的职责,读取beta,theta数据,我们看看他们是怎么做的:http://www.njtf.cn/ueditor/net/upload/2017-05-09/76305d69-8720-46ed-89f0-a5c385211323.png

打开文件,呼叫友军,撤退。AIPump的数据框架设计就简单介绍到这里。众所周知“需求是变化的”,而数据这一块只要大家按套路出牌,我们的数据框架已然是游刃有余了。通用来之不易,前台和后台开发的同事之间精诚合作让我们的数据框架设计目标能够完美达成。最后,作为AIPump前台软件的开发者,将会与团队一起继续砥砺前行,希望给将来的AIPump用户带来更完善的体验。

页: [1]
查看完整版本: AIPump软件前台数据框架设计