在三维系统的开发中,要求系统在多个屏幕上进行显示,每个屏幕上的内容是不相同的,屏幕之间还需进行联动,或是在大屏系统中,整个屏幕需要几台计算机的内容进行显示,内容之间也需要互动,这就需要在开发过程中,使用分屏的技术。
当然,技术都是通用的,不一定是做te的三维系统,其他的系统也会有这种需求。
同一个系统,在开发中,也可以分成几个子系统开发,这样能将一个大系统分成几个进程,能够充分利用计算机的资源。
同样,在大屏上运行的系统,需要一个手机或者pad进行控制,也是涉及到分屏的操作。
根据以上的应用场景,下边说一下,在技术上怎么实现,按照CS的模式。
1、同一台计算机的不同进程程序:在windows的操作系统中,进程之间的通信,是可以通过C#调用windows的api进行开发的,这个可以在互联网上搜索到,通过windows中的进程名称或者窗体名称,进行指定的传播;
2、不同计算机的程序:要保证这些计算机的网络是互联互通的,要不然只能是从计算机的硬件层面上去解决的,通过互联网的UDP、TCP或者http协议都可以进行通信,计算机中的应用程序实现了这些协议的操作,就能够进行协作,上边说的同一台计算机,也可以通过这种方式,就是网络地址都是同样的;
3、移动端的协作:手机或者pad的系统开发中,同样支持UDP、TCP或者http这些协议的开发;
4、使用消息队列:“MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。”,这是比较专业的方式,效率也很高,常用的有rabbitmq、Kafka 等,在网络中搭建消息队列服务器,计算机中的程序按照api实现传递消息;
同一台计算机程序,使用不同的进程,在窗口的移动过程中,要实时计算其他程序的位置,保证窗口看起来是一致的;
地图位置的同步,通过传递坐标,进行位置定位,也能达到一致的效果。
程序中的api调用,尽量使用异步的执行方式,防止程序出现假死的状态,可以对传递的信息进行简单的存储,防止丢失;
消息可以组织成xml或者json格式,现在此类信息的解析类库很方便,总体来说json要比xml的数据量要小。