虚拟应用平台的开放性
不同于虚拟机(服务器)、虚拟操作系统、虚拟桌面,“虚拟应用”解决方案面向终端用户,提供应用级云计算服务,能够实现细颗粒度的资源管理和安全性管理,占用资源最少,是目前较为理想的企业/机构信息化平台的私有云解决方案。但是,与其它终端模式的虚拟化方案一样,也存在客户端资源的接口(例如设备驱动)以及功能扩展接口的问题。面临这一类问题,没有通用一次性解决方法,而是要求虚拟化平台具有一定的开放性,提供二次开发接口以及相应的工具(SDK),以便设备生产和应用软件开发、集成厂商开发制作客户端软件(插件)。
SDK软件开发工具包
SDK(Software Development Kit 软件开发工具包),指辅助开发某一类软件的相关文档、范例和工具的集合。它可以简单的为某个程序设计语言提供应用程序接口 API的一些文件,也可能包括能与某种嵌入式系统通讯的复杂的硬件。
VA SDK通讯原理
“云海VA虚拟应用管理平台”继发布其WEB二次开发接口后,发布了VA SDK开发工具包。VA SDK二次开发支持服务端分发和加载客户端插件,并在服务端和客户端之间建立通讯通道,实现服务端与客户端的无缝衔接,提高VA应用的可扩展性。
在VA应用服务器运行的应用程序与客户端插件之间的通讯,通过服务端ARH、VA SDK-S,与客户端AR应用执行器、VA SDK-C来共同完成。通讯原理如下图所示:
通过上述方式实现一对一的双向通讯,使会话隔离,保证应用的可靠性和安全性。
VA SDK编程功能
VA SDK编程依赖于VASDK.dll和VAUtils.dll动态链接库,它为服务端和客户端的开发提供了一组功能支持,目前支持C语言(动态调用),Pascal等可以调用动态链接库的语言。
VAUtils.DLL导出函数功能
序号 | 函数 | 功能 |
1 | GetVAEnv | 获得VA运行环境字符串 |
2 | GetVAEnv2 | 获得VA运行环境字符串 |
3 | VACheck | 检测是否在VA环境下运行 |
4 | VACheck2 | 检测是否在VA环境下运行 |
5 | GetVABindCode | 此功能供合作版使用 |
6 | GetVABindCode2 | 此功能供合作版使用 |
7 | GetSessionID | 获取本次应用的会话ID |
8 | GetConsoleSessionID | 获取服务器控制台的会话ID |
9 | IsRunOnConsole | 判断程序是否运行在控制台下 |
10 | VaDPnt | 直接端口打印,主要用于Pos打印机VA会自动映射到客户机的打印机上 |
11 | VaDPntW | 直接端口打印,主要用于Pos打印机VA会自动映射到客户机的打印机上 |
VASDK.DLL导出函数说明
序号 | 函数 | 功能 |
1 | S_Open | 打开SDK服务端 |
2 | C_Open | 打开SDK客户端 |
3 | S_LoadPlugin | 加载SDK客户端插件 |
4 | S_UnloadPlugin | 卸载SDK 客户端插件 |
5 | S_OpenAndLoadPlugin | 打开SDK服务端,并加载SDK客户端插件 |
6 | CloseSDK | 关闭已打开的SDK服务 |
7 | SendData | 向已打开的接收方发送数据 |
8 | SendString | 向已打开的接收方发送字符串数据 |
9 | SendStrList | 向已打开的接收方发送字符串列表数据 |
10 | SendBIN | 向已打开的接收方发送二进制数据 |
11 | SetWaitMode | 设置发送方发送数据后等待返回的模式 |
12 | SendAndWait | 通过通讯通道发送数据并等待接收方响应 |
13 | RegCallBackProc | 注册数据接收方的回调函数 |
14 | GetReceiveDataPackCount | 获取发送方发来数据的包数 |
15 | GetReceiveDataPackSize | 获取发送方发来数据的首包长度 |
16 | GetReceiveDataPack | 获取发送方发来的数据 |
17 | FreeDataPack | 释放发送数据的缓冲区 |
18 | GetReceiveDataPackToBuf | 获取发送方发来的数据 |
19 | FreeBuf | 释放调用GetReceiveDataPackToBuf所申请的缓冲区 |
20 | IsRunOnConsole | 判断程序是否运行在控制台下 |
21 | GetLastError | 获取SDK最后一次出错信息 |
作者:云海一门
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。