一体化仿真平台项目总结(一)

首先介绍一下项目背景,本项目是某研究院为了更加方便的使用平时使用较多的三个仿真软件而做的,其中我接触比较多的就是CST这款软件,主要是用来进行3D建模的。这个项目简单来说就是将这三个大型仿真软件放到一台服务器上,然后开发一个client-server模式的系统 ,用户可以在一个集成的Client端统一使用这三个软件(在一个界面中),而不必需要同每一个软件进行交互,方便了用户的使用,将多个仿真软件统一起来使用,就是所谓的一体化。同时在服务器上部署一个server用来同多个cilent进行通信,以此来调用服务器端这三个仿真软件的计算能力,同时协调多个用户对服务器计算资源的请求,这大概就是所谓计算平台吧。

一.总体架构

本项目的总体架构应该说比较简单,就是CS模型的架构,其中client有多个,部署到用户的电脑上,server只用一个,部署到服务器端,同时服务器端会部署三个仿真软件,server会对这三个软件进行调用。部署图如下所示:

部署图

其中更加详细的描述可以将本系统划分为四个大的模块,分别是客户端业务处理模块,服务器业务处理模块,ftp上传下载模块以及客户端服务器通信模块。其中我负责了客户端服务器通信模块以及服务器端业务处理模块,关于服务器端的业务处理,由于在系统原型搭建完毕后就退出了此项目,后期的改进不再参与,估计会有很大的变动,但是客户端服务器端通信模块已经比较稳定,剩下的就是对通信协议的扩展工作。本系统的详细组件描述可以由下图描述:

     下面描述一下系统实现,为了说明问题,首先需要讲明,服务器调用仿真软件的功能是通过执行脚本文件来实现的,脚本文件的生成由客户端的业务处理模块来实现。当客户端通过输入参数生成了要执行的脚本文件后,通过ftp客户端将脚本上传至服务器处的ftp服务器中,并且通过客户端的socketclient模块来通知服务器端的server,server模块中的socketserver模块接收到了客户端的通知后会调用server中业务处理模块,业务处理模块会查找到上传到服务器中的脚本文件并且执行脚本文件来调用仿真软件的计算能力,同时客户端也可以通过socketclient来查询脚本文件的执行情况,当客户端查询到脚本文件执行完毕后,会到指定的ftp服务器处下载执行结果,来进行下一步的分析和处理。以上即为本系统的大致执行过程,下面对我负责的通信模块和服务器端业务处理模块进行一个描述。

二.通信模块

通信模块分为客户端socketclient和服务器端socketserver两部分,本项目由于服务器和客户端都是部署到windows上,所以使用c#进行编程,c#对socket有很方便简单的实现,所以实现通信的技术难度并不大,这里主要阐述一下本系统在socket通信设计上的考虑。此处通信选用了Tcp协议。udp协议的用处在于短时间内发送数据很频繁的情况,同时对于传输数据的安全性要求不高的情况,类似于发送心跳信号(???)这种情况,其他多数的情况基本都是选择Tcp协议作为通信协议。另外涉及到网络通信,利用线程是必须的,因为网络状况的不确定性,如果在主线程中进行网络连接,发生主线程阻塞就会造成不好的后果。下面分三块进行描述,分别是socketclient,socketserver,以及通信协议。

(一)socketclient

socketclient在设计上有以下几个特点:  

  (1)使用短连接,即每次与服务器端通信完毕后都会关闭Tcp连接,因为长时间保持Tcp连接可能发生不确定的情况,影响服务器和客户端的稳定性。在实现中,则是每次发送数据时首先connect()连接服务器,与服务器通信完毕后disconnect(),下次需要通信时重新建立连接。

  (2)每次建立Tcp连接都在线程中,防止阻塞主线程。

  (3)网络通信线程与主线程的数据同步,当连接线程接收服务器端数据后,会根据数据内容刷新主线程中的界面,此处使用了c#中的代理来进行这项工作,c#中的代理与c++中的函数指针类似,具体使用方法由客户端处理,我不负责,不是太明确(???)。

(二)socketserver

   socketserver的设计要点:

  (1)使用一个专门的线程进行网络连接的监听。

   (2)使用c#中的异步模式处理新的客户端连接,每次有新的客户端连接到服务器时,都有专门的函数处理此连接。对客户端连接的处理是在监听线程中实现的,这样避免了如果每当有一个客户端连接进来时新开一个线程来处理,这样会极大的消耗服务器端的资源。(异步模式的实现方式???通过循环不断的转换来处理不同的连接???)

(三)通信协议

  为了实现客户端与服务器的通信,需要制定并且实现本系统自己的通信协议。此处协议的制定还是比较简单的,由于过于细节,此处不再赘述,在一下篇拾遗中会做一些描述。

  在c#中对于Tcp协议的实现,有专门的Tcpclient和TcpListener进行了实现,不过由于第一次使用c#,所以在前期的原型实现过程中使用了最简单的socket来进行Tcp连接和监听,后来发现这两个组件后由于前期的做的工作不想放弃所以没有改用这两个组件。其实应该想到,像c#这种有微软支持的语言,其中应该会有大量实现好的组件可以简单的调用,而不需要从比较底层开始写起,做应用时应该注意这一点。毕竟用现成的组件不仅简单而且稳定。

三.服务器业务模块

  对于不同的系统来说,业务模块各不相同,本系统的业务模块也没有必要做详细的描述,下面只是讲几个点:

  (1)使用单独的线程来检查脚本是否执行成功,这个线程是对所有脚本而言的。判断脚本是否执行成功是通过仿真软件是否产生了输出来判断的。

  (2)使用单独的线程来执行脚本,这个线程是对每一个脚本而言的。

  (3)封装出一个业务的数据层(Model)模块,对这一个模块的读写可以防止数据的不一致。同时使业务模块更加清晰。

四.总结

  对我来说,这个项目对我最大的帮助就是初步了解了socket编程的方法,以前并没有从socket层面进行实际的开发,同时学习了socket编程的一些设计思想,以后对于socket编程需要更加重视多加练习。另外,本文只是从一个大的层面阐述了此项目,在写博客的过程中发现还有很多不是很清楚的点,下一篇将会从细节缕清一些点。

时间: 2024-10-19 18:17:10

一体化仿真平台项目总结(一)的相关文章

基于Hadoop离线大数据分析平台项目实战

基于Hadoop离线大数据分析平台项目实战  课程学习入口:http://www.xuetuwuyou.com/course/184 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介: 某购物电商网站数据分析平台,分为收集数据.数据分析和数据展示三大层面.其中数据分析主要依据大数据Hadoop生态系统常用组件进行处理,此项目真实的展现了大数据在企业中实际应用. 课程内容 (1)文件收集框架 Flume ①Flume 设计架构.原理(三大组件) ②Flume 初步使

AppCan中标首都机场移动平台项目

近日,正益无线AppCan依托东方航空.吉祥航空.国家电网.中化集团等大客 户项目的丰富成功经验,凭借企业移动信息化建设的良好口碑.强大的移动化实施部署经验和快速响应的技术团队,在与多家国内外移动厂商比拼中,脱颖而出,成 功中标首都机场移动平台项目,全力护航首都机场各项业务移动化进程. 北京首都国际机场是"中国第一国门",是中国最重要.规模最大.设备最先进.运输生产最繁忙的大型国际航空港,是中国的空中门户和对外交流的重要窗口.北京首都国际机场的年旅客吞吐量从1978年的103万人次增长

网络远程教育实施方案交流之(二)——网络教育平台项目的建设

网络教育平台项目的建设的方案能够自建也能够採购.但项目是否成功,并终于能够落地发展,还须要业主方认真的调研和分析,最有效的方法就是利用项目管理的方法,从前期的需求分析.调研.可行性分析,立项,建设期成本.质量.进度三大管理,后期測试bugfree,维护.客服服务等. 管理内容看起来复杂,事实上理顺了非常easy,大道至简.下面先从功能模块入手,然后再介绍实践和经验,其目的是让没有经验的读者少走弯路,具有相关经验的管理者分享交流,共同推动此项事业的发展. 曾有人问我项目是不是资金投入越多越好?事实

传感器仿真平台——数据生成模块(三)

数据生成模块有下面这样一种情况: 对于不同的传感器仿真实验,所使用的数据类型,数据数量不一样. 如实验一是进行最大覆盖率实验,则他需要的数据格式可能是如下所示: 1 Class Sensor 2 { 3 public int x; 4 public int y; 5 public double direction; //方向 6 public double sweep;//扇形大小 7 } 实验二进行的是信号强度实验,则他可能还需要一个用来作为覆盖物的目标,如下: 1 Class Target

电商平台项目

某电商平台项目开发要点记录 本文是博主在开发某电商平台项目的一些杂项记录,方便自己和团队同事查阅,偏向于具体技术或应用的细节和个人理解,但也未必非常具体.文中未提的更多内容可能会另起篇章. 导航属性--EF实体关系fluent配置 AutoMapper Autofac Repository模式 Model & DTO 开源&商用.NET电商平台--NopCommerce(3.9版) & Himall(2.4版) 服务器搭建-VMware vSphere Hypervisor(esx

Modelsim的自动化脚本仿真平台

自动化仿真平台由tcl语言搭建,大规模设计使用此平台让仿真便捷不少.大体上用tcl语言进行modelsim仿真的流程如下: 1. 建立库 2. 映射库到物理目录 3. 编译源代码 4. 启动仿真器 5. 执行仿真 tcl语言的语法 vlib :建立库.格式 vlib<library name> .库名缺省值是work vmap:映射逻辑库名,将逻辑库名映射到库路径.语法格式vmap work <library name> vdir:显示指定库内容.语法格式vdir –lib <

LMS.Virtual.Lab.rev13.Win64-ISO 3DVD三维样机仿真平台

在最新的LMS Virtual.Lab rev13版本中,提供了多种新的功能功能与改进,旨在提高平台的开放性和系统集成效率,同时加 强合作,以掌握即使是最先进的产品的复杂性. 最新的版本提供了多种用于热流体.电气.内燃机.三维机械等诸多领域的建模功能与方法.在专注于汽车.地面车辆.航 空.机械等行业的同时,还改进扩大了许多类型的工业应用可能性.随着更多的Modelica语言的支持,LMS Virtual.Lab rev13已经成为第一个提供最好的一流的方法的仿真平台. LMS Virtual.L

Linux平台项目中时间相关内容

由Linux内核提供的基本时间服务是计算自国际标准时间公元1970年1月1日00:00:00以来经过的秒数,以time_t类型表示,被称为"日历时间",time_t通常定义为一个int型或long型的量. 日历时间有几个典型的特性: 以国际标准时间而非本地时间计时. 可自动进行转换,例如变换到夏时制. 用一个time_t量保存时间和日期. 程序中获取日历时间使用time()函数,函数原型是: #include <time.h> time_t time(time_t *cal

迈瑞综合应用及流程管理平台项目

主题:迈瑞综合应用及流程管理平台项目技术框架交流 嘉宾:迈瑞集团 周舟 有些人一见钟情,有些人日久生情,迈瑞和K2就属于后者. 迈瑞的K2项目始于2010年,一开始和K2的情感磨合并不顺利,像所有父母之命媒妁之言的婚姻一样,一开始相敬如宾,直到一天天相处下来,摸透了彼此的脾气习性,才开始"天雷勾动地火",2012年掌握要领后,迈瑞开始出现爆发式的应用,仅当年就上线153个业务流程. 应用架构总览 技术架构-工作流引擎(WMP-2) 流程平台展示 技术架构-工作流引擎(WMP-1) (本