Thinfinity VirtualUI:跨平台应用的革命性解决方案

随着用户逐渐从传统的桌面环境迁移到移动设备,将Windows应用程序迁移到Web平台成为了扩大用户基础的关键一步。然而,这一过程通常需要大量的软件修改,既耗时又昂贵。现在,Thinfinity VirtualUI提供了一种解决方案,只需一行代码即可将Windows应用程序交付给任何设备上的用户。它允许Windows应用程序在任何支持HTML5的Web浏览器上运行,无论在哪个平台上,都不会有任何功能或视觉上的妥协。

系统概览

Thinfinity VirtualUI由一个Http/Websockets服务器、一个HTML5 Javascript客户端和一个ActiveX库组成。VirtualUI服务器是一个http(s)/websockets服务器,通过VirtualUI应用程序SDK库与Windows应用程序通信,将GDI/GDI+/DirectX重定向命令发送到Web浏览器。VirtualUI HTML5客户端负责在Web浏览器画布上进行实际的绘制,并与最终用户的鼠标和键盘事件进行交互。VirtualUI应用程序SDK是一组库,它插入到开发者的编程框架中,以将Windows调用和绘图命令重定向到远程HTML5画布。它还提供了一个对象远程框架(jsRO),旨在简化Windows应用程序和Web之间的集成。

执行环境

应用程序可以从Windows Shell执行,也可以在开发环境(如Microsoft Visual Studio或Embarcadero Delphi)下执行。在开发模式下,VirtualUI运行一个服务器,允许单个用户访问正在运行的应用程序进行调试和测试。如果应用程序在VirtualUI服务器上注册,可以通过指向应用程序分配的URL来启动Web浏览器中的应用程序。应用程序的GUI将嵌入到Web页面中,用户可以像往常一样与之交互。

基础编程

任何可以访问COM接口的语言(例如Visual Basic、FoxPro、Gupta等)都可以实例化VirtualUI。为C#、VB.NET、C++和Delphi提供了特殊的源代码接口。以下是使用一行代码初始化的示例:

C#: using System; using System.Windows.Forms; namespace MyApp { static class Program { static void Main() { new Cybele.Thinfinity.VirtualUI().Start(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Delphi: program MyApp; uses Windows, Forms, VirtualUI_AutoRun, MyApp.Main in MyApp.Main.pas; begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.

Web适配应用程序

Thinfinity VirtualUI提供了多个对象、属性和方法,允许为最佳最终用户体验准备应用程序。例如,应用程序可以通过发送打印作业到浏览器、允许通过本地文件打开/保存对话框进行文件访问以及下载/上传方法来与本地资源交互。它还提供了必要的信息,以适应不同的表单因素、方向等,通过访问浏览器和屏幕的尺寸、方向、用户代理。它还允许在浏览器的cookie中检索或持久化信息,或提供自己的认证方案。

可扩展性和Web集成

Javascript远程对象(jsRO)允许增加应用程序的能力,将其扩展到Web环境。这是通过发布从应用程序中以编程方式定义的数据模型来实现的,这些数据模型公开属性、方法和事件,简化了Web和原始应用程序之间的对话。

C#: // 创建远程对象 ro = new JSObject("ro"); // 添加方法 ro.Methods.Add("multiply"); // 返回JSMethod .AddArgument("a", IJSDataType.JSDT_FLOAT) // 第一个要乘的数字 .AddArgument("b", IJSDataType.JSDT_FLOAT) // 第二个要乘的数字 .OnCall(new JSCallback(delegate(IJSObject parent, IJSMethod Method) { float a, b; a = Method.Arguments["a"].AsFloat; b = Method.Arguments["b"].AsFloat; Method.ReturnValue.AsFloat = a * b; })).ReturnValue.DataType = IJSDataType.JSDT_FLOAT; ro.ApplyModel(); Javascript: $(document).ready(function () { var jsro = new Thinfinity.JsRO(); var ro = null; jsro.on('model:ro', 'created', function () { ro = jsro.model.ro; }); function multiplyRemote(x, y) { ro.multiply(x, y, function (result) { alert("Result is " + result); }); }; });

Web组件

Web组件是一项新的令人兴奋的技术,它将众所周知的“可重用软件组件”概念带到了Web上。有了这个HTML5规范,可以构建HTML+Javascript片段,并将其作为自定义HTML元素使用。在Thinfinity VirtualUI中,可以轻松地在Windows应用程序中嵌入Web组件。一些Web组件的例子包括:原生视频流组件、原始打印组件、QR组件、签名组件、Google Maps组件等。

文件系统和注册表虚拟化

文件系统虚拟化帮助开发者只发布相关的共享文件夹,并提供基于认证的私有文件夹。此外,共享文件夹可以重定向到磁盘上更安全的位置,并且/或被写保护。文件系统虚拟化涉及两个步骤。首先,开发者创建文件系统映射设计,创建真实路径和最终用户将看到并访问的重定向路径树之间的关系。其次,将创建的映射定义包含到应用程序程序中。

注册表虚拟化允许开发者以安全和隔离的方式在Windows注册表中存储最终用户信息,并提供基于认证的注册表条目。此外,共享注册表条目可以重定向到Windows注册表中更安全的位置。与文件系统虚拟化类似,注册表虚拟化也涉及两个步骤。首先,开发者创建映射定义,创建原始注册表条目和重定向注册表条目之间的关系。其次,将创建的映射定义包含到应用程序程序中。

文件系统虚拟化和注册表虚拟化都有助于开发者为多用户使用准备他们的应用程序,其中最终用户可能需要拥有他们的私有文件和注册表条目。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485