Web Runtime:Windows桌面应用的一次变革

598 阅读19分钟

什么是Web ****Runtime?

Web Runtime**是一个面向桌面软件的运行时服务,通过对一类广泛存在于桌面应用系统之中的“有核窗口”进行“Web页面化”,互联网浏览行为 的外延得以进一步的扩展同时桌面应用 建立了 一致的途径衔接互联网服务Web Runtime定义了一个包容度最大的Web** **DOM模型,兼顾标准Web DOM的同时,使**有核窗口****充分的支持DHTML,Web ******Runtime将Win32对象作为Web DOM的新成员参与互联网内容制作,为桌面应用建立互联网内容生态奠定基础。

有核 窗口 :桌面软件的开发的盲点

有核窗口是具有如下特征的窗口****:至少存在一个 屏幕几何位置 仅与其 直接父窗口 有关的 子窗口 **(子窗口的运行时位置完全取决于其直接父窗口), **对应的子窗口称之为“窗口核”。从原子核、细胞核到星系核,在众多科学领域之中,“核”的概念对我们并不陌生,只要提出与“核”相关的概念,一定是对应领域里的关键概念。顾名思义,有“核”的地方必然有环绕在“核”周围的环绕物,解决与“核”有关的问题,无法摆脱对周围环绕物相关问题的深入研究。

        依据窗口核这个概念,窗口被分为两大类,其一是“无核”窗口,另外一类就是 “有核”窗口。通过对众多桌面软件进行分析,我们发现桌面应用之中,有核窗口是普遍存在的。以WinForm为例,每一个.NET控件都有Dock属性,Dock属性的值为“DockFill”或者“None”的那些控件都是窗口核,于是对应的WinForm或者包含该控件的父控件自然的就是“有核窗口”,MFC应用之中的CView派生对象,本质上就是一类窗口核,因此包含CView对象的父窗口都是有核窗口。我们在Office、Chrome、Edge浏览器、Eclipse以及其他典型的桌面应用之中,同样发现了大量的有核窗口(以及对应的窗口核)。

Web ****Runtime解决什么问题?

****有核窗口成为互联网内容的入口,是Web Runtime解决的最关键的问题Web Runtime将为您揭示每一个 窗口核 周围,环绕着一个 巨大、动态 的内容世界。 Web Runtime利用窗口核的位置特征实现了一类“几何”变换,使得在软件的运行时****窗口核的周围***呈现出(无穷)多层的“几何结构” *******,看如下图示: 

**对“有核”窗口而言,通过几何变换,让其窗口核在运行时“ **产生 ** **新的 几何空间是完全可能的,这里自然形成了多层次的 几何 填充技术,客观上使得动态(基于Web页面)描述驱动 有核窗口 成为可能,围绕着窗口核,新填充的对象与窗口核之间的互操作,就是JavaScript的问题……
通过Web ****Runtime的几何算法,Excel核心部位呈现出不同的“环绕”结构,这些结构是可以通过Web页面描述的,一旦新对象填充上去,就会形成“Web”页面 特有的动态 效应 ** **类似的场景在其他桌面应用之中普遍存在 ……

         在人类组成的社会群体里,必然会存在一些有“凝聚力”的人,其他周围的人愿意围绕在其周围,宇宙之中,大质量天体也会形成类似的现象。Web Runtime的理论依据是:窗口核的周围,会呈现出大量的可动态化描述的软件结构,一旦我们将思维聚焦到这个环节,窗口核就会变成动态内容的入口。也就是说,**窗口核是桌面软件衔接互联网内容的一个“管道” **,Web页面是描述这个管道的最合理的方案。Web Runtime针对窗口核实现的几何变换,使得大量的标准化可编程组件直接创建在窗口核周围环绕的“几何结构”之上,这一点导致新的动态内容得以在软件运行时呈现出来。

我们可以这样认为: 标准的Web技术让我们将思维聚集在Web视口之内 Web Runtime让我们将焦点 延申 到窗口核的“周围”。 现代互联网浏览器窗口只是****一类特殊的有核窗口********,从更加广泛的意义上看,互联网浏览的问题,应该提升到具有普遍性的 有核窗体 之上。

        对立足于本地的应用系统而言,一个显而易见的问题是:由于缺乏互联网基因,应用系统不能充分享有互联网时代产生的福利,Web Runtime使开发者用最小的代价,找到桌面 应用系统的互联网 ***** **对称性 *,也就是说,每一个本地应用系统,应该存在基于互联网对称的另一面,当有核窗口的Web对称性被挖掘出来,那些已经存在的桌面客户端,就会在互联网大环境之下重新找到增值空间,进而使得其价值进一步延续。Web Runtime的目标就是以最小的代码修改量给应用系统带来全方位的互联网支持、建立网络服务后端。

一旦我们将聚焦点放在 有核窗口 之上,那么围绕着窗口核的概念,各类软件窗口核周围会呈现出前所未有的的动态变化,这些新变化是新Web世界的一个缩影,标准的Web世界,是新Web世界的“冰山一角”……

 Web Runtime使得有核窗口转化为一类新型的浏览器窗口,让开发者用Web页面技术充分处理有核窗口**** ,换句话说,Web Runtime为有核窗口提供了全新的Web视角,从而使得其最大限度的Web化

Web ****Runtime使得Windows桌面应用直接转化为现代互联网浏览器

        一个应用系统一旦连接了Web Runtime服务,Web Runtime的内置机制使得应用系统的主进程变成现代互联网 浏览器的浏览进程,这一点意味着,应用系统本身可以像浏览器一样访问互联网,从广义的角度看,Web Runtime是将互联网浏览器作为桌面软件的初始化起点,其本质就是将Web页面看作软件系统的公共描述引擎,** **JavaScript 自然就是软件系统的公共脚本引擎。

        不同于WebView、WebView2、CEF等技术,Web Runtime是一个针对桌面软件的全局运行时服务,而WebView、WebView2以及CEF等是针对特定窗口的组件。我们在Web Runtime内部保留了Chromium的全部代码,确保了桌面应用在可执行代码的基础设施环节就支持一个标准现代浏览器的全部功能,与标准浏览器的差异是:我们允许应用系统存在开发者定义的Win32窗口,同时给开发者提供充分的控制能力。在Web Runtime的作用域之内,所有的有核 窗口,都相当于一个浏览器窗口。也就是说,在绝大多数情况之下,有核 窗口承担着内容入口的角色,进而使得绝大多数窗体Web动态化。

突破标准Web ****DOM的边界约束 ** **从Web ****DOM到DOMPlus

        标准的Web DOM已经创造了一个绚丽多彩的互联网内容世界,与所有的重要技术进化过程一样,当一个技术发展到一个成熟期的时候,制约发展的瓶颈也就随之出现。数学史告诉我们,当数系从有理数扩展到实数系的时候,数学理论得以长足的进化,然而,到了一定的阶段,很多问题变得非常明显,特别,如下最简单的方程在实数系之内就是不可解的:

x2 + 1 = 0

为此,数学家引进了一个想象之中的新成员“i”做为上述方程的解,进而形成了数学领域的一次巨大的变革。众所周知:

 这个公式可以说是一个数学经典,欧拉的过人之处是,将x替换为“ix”,进而得到

受这个思路的启发,人们开始将x替换为一个n阶矩阵,甚至替换为一个无穷维的线性变换等等。新成员“i”,使得人们看到很多在当时看来前所未有的东西,特别是指数函数与三角函数在无法想象之中建立了奇妙的联系。Web技术发展到今天,对桌面软件提出了致命的挑战,而且桌面软件与Web软件之间的差异在互联网时代变得十分突出。从科技进化的过程上看,虚数“i”扮演着极为关键的角色,毫不夸张的说,没有这个元素,也就没有今天的科学技术。我们希望Win 32 对象在Web世界之中扮演着类似“i”的角色,如同突破实数系的边界到复数系一样,Win 32 元素成为Web DOM的新成员,能够彻底填平Web技术与桌面软件技术之间的鸿沟,同时也进一步挖掘了应用程序的价值:我们看到窗口核周围形成的全新动态内容,将会使得Win32 Native组件与标准Web技术之间形成和谐的互操作,新的Web世界由此拉开帷幕。

        当Win32对象被看作Web DOM新成员的时候,标准DOM的边界被突破了,以此为基础,我们将新的DOM称之为D OMPlus ******( ****DOMPlus = DOM + Win32) **。如同实数系进化到复数系一样,原本无解的那些方程,现在变得可解了,这一点意味着看问题的视角改变了,对象的属性也就变化了。Win 32 对象成为Web ****DOM的一员意味着在Web页面之中可以动态的描述Win 32 GUI对象,例如MFC窗体、WinForm窗体、Usercontrol、WPF等等,都是Web控制的元素,JavaScript可以动态实例化这些对象、处理这些对象的事件、消息

        进化意味着进步的同时也体现出对已有成分的包容,所以Web Runtime意义下的Web页面完全支持标准的Web页面。但是如同实数系到复数系的演变一样,桌面应用的很多方面也会变得与过去不同。应用的启动是从Web页面开始的,使得每一个桌面应用演变为一种新型的Web应用。

        当页面可以充分的描述应用结构的时候,桌面软件的主窗口会发生明显的变化,固定的主窗口差不多消失了,你的第一个启动页面,决定了你的桌面软件的一个运行时状态。一个软件拥有任意多个运行时状态,不同的运行时状态可以有完全不同的表现力,尽管还是同一个exe文件。

JavaScript做为桌面应用的公共脚本引擎

一旦Web DOM被扩展了,Javascript的问题就会是一个关键的问题。我们扩展了DOM,事实上也扩展了Javascript的作用域,Javascript处理新DOM元素的事件、Win32消息就是一个无法规避的问题,Web Runtime实现了双向委托的模式,很好的解决了这些互操作的问题,开发者可以基于JS控制应用程序的各种行为,包括.NET对象的事件,运用双向委托,Web Runtime很好的将桌面应用的相关功能合理的委托给Web页面,进而实现了应用功能的Web化。

Web Runtime会带来哪些变化

  1. 桌面应用设计前端化,或许这是最明显的变化,桌面应用一旦衔接了这个服务,Web页面就会逐渐的成为应用开发的主要工作,当然完全可以保留本地代码的工作模式,需要在本地编程与Web编程之间逐步达成一个平衡;
  2. 应用系统的设计会逐步侧重Web的一面,这样处理会容易使得原有应用系统形成面向用户的互联网服务;
  3. 标准Web以及.NET Framework相关的组件资源会成为公共资源,即使您的应用系统不是基于.NET开发的,您可以将最好的Web技术以及.NET技术用于您的桌面系统;
  4. 内置的互联网浏览器使得您的应用具备了完整的基于互联网的多维应用生态,您不用担心您的系统缺失了说明,基于Web的生态能力足以弥补您缺失的一切;
  5. Web Runtime直接让您的应用系统成为.NET、Java、Web的混合集成平台,事实上,每一个衔接Web Runtime服务的应用系统本身就是一个Eclipse Launcher,您可以充分利用最好的Java技术扩展您的应用系统;
  6. 您的应用系统是一个强大的扩展平台,任何开发者都可能在您的应用系统之上用现有的技术扩展您的应用;
  7. Web Runtime将使得您的应用是一款极为强大、灵活的GUI平台,Windows领域最好的GUI技术,都会是您系统的一部分。

**. **NET Framework 、COM、MFC与Web ****Runtime

我们不会忽略这三个经典框架,为了表达对经典的敬畏,DOMPlus给出了对这三个框架最友好的支持,我们允许开发者直接在Web页面上用Web的方式处理.NET对象与COM对象,特别是GUI(WinForm、Usercontrol、WPF、ActiveX Control)对象,同时DOM Plus也给出了对MFC CView对象的最合理的支持。

我们将Web Runtime设计成一个极为简单的运行时服务,对.NET开发者而言,仅仅需要修改一行代码(当然需要对源代码工程做一些必要但非常简单的工程配置方面的调整):

**对. **NET 应用而言,连接Web ****Runtime服务的代码工作就是一行代码的工作量

对C++开发者而言,基本上就是应用程序类的基类替换(这里指MFC应用),Web Runtime只提供64位版本。

连接Web ******Runtime服务的MFC应用,可以最大限度的基于Web技术控制应用系统的方方面面,例如,应用系统可以通过Web页面定义任意数量的文档模板,可以用Web技术使得View对象变得更加富有弹性,同时可以在MFC应用系统之中自如的使用. **NET GUI 对象,类似于Office的VBA技术一样……

全新的Web页面:Web页面是桌面软件的公共描述引擎

        由于DOM改变了,页面的表现方式也会与标准页面完全不同,一个典型的案例如下:

这里我们看到了不同于标准浏览器的场景,浏览器内部出现了与常规浏览页面看上去差异比较大的应用结构,当一个桌面应用连接了 Web Runtime 服务,那么类似的页面就会成为宿主应用的资源,当系统出现功能不足或者增加新功能的时候,开发者不用修改应用系统的主体,只需给出一个URL,那么对应的应用页面即可服务于用户……

这类页面是由DOMPlus之中的元素按照Web页面的规范合成的,我们可以用实数系里面增加了“i”做类比,实数系到复数系,看起来就是一个元素的增加,其实是“看似一小步实则一大步”的经典之笔。如上图所示,.NET GUI元素成为新型页面的一部分,从DOM到DOMPlus,导致DOM的边界被突破了,可想而知,依据Web页面的规则,将会形成比标准Web页面更大的页面集合。DOMPlus概念奠定了新Web页面的基础,开发者可以写出包容标准Web页面的全新的Web页面。由于是描述驱动的,全新的页面形成了庞大的、松耦合的应用内容加工机制,WebRuntime的责任就是使得这些页面更加规范、基于可编程的方式可控。应用程序可以打开任意多个这类的应用页面,也就是说,除标准的Web页面之外,大量的新型应用页面会随着应用系统的展开,以新的方式服务于用户,事实上,你的应用系统与现在流行的Web应用一样,可以动态的基于Web站点提供应用服务,这一点也是应用程序需要互联网访问的重要因素。

每一个衔接WebRuntime服务的应用系统,都拥有自己的基于DOMPlus的内容加工模式,进而拥有一个丰满的、近乎包罗万象的内容空间(几乎所有的基于动态链接库的可编程组件,都可能成为Web页面的一部分),如同那些拥有无限维度的数学结构一样(设想一下,一个无穷维Hilbert空间拥有的元素个数),庞大的内容生态意味着应用结构有了颠覆性的改变。

DOMPlus支撑着一个全新的页面内容加工机制,面向应用的Web页面,是由可编程组件与标准DOM合成的新页面,当我们从浏览器窗口这个“壳”带来的约束解放出来的时候,我们看到的所有窗口几乎都是动态内容入口,Windows桌面就是一个巨大的互联网应用内容管道聚        集地……

         突破了DOM元素的边界之后,Web页面的呈现方式也随之变了,Web页面呈现的内容不再被“框在”浏览器窗口的内部,事实上,由于思维观点变了,过去看起来不是页面的那些元素,现在都是Web页面了 ** **无解的方程变得有解了 ** **。通常情况下,如下图:

如果Web页面只能显示在标准的浏览器窗口或者浏览器控件之内,我们的思维就会被“囚禁”在一个紧箍咒之内,那么,Web世界就很难被突破,2 5 年的时间,对软件世界来说已经足够漫长了,应该到了突破禁忌的时间点了。

 或许按照现在的观点:只有类似上面图片显示的才可能是Web页面,如果这样,我们相当于被已有的Web观念“画地为牢”,那么,新突破就不会形成。事实上,如下显示的场景,在WebRuntime模式之下,就是一组Web页面:

我们需要改变观念,页面显示的内容 未必必须在浏览器窗口之内 ** ******一个常规意义下的Win 32 窗口或者WinForm,都可能是一个Web页面或者是Web页面的一部分,当我们改变策略,用一组页面组织应用的时候,桌面应用就是一个Web站点,几乎所有的窗口都是Web化的,很好的实现本地与网络的隔离……

一旦我们去掉浏览器窗口的约束,也就相当于去掉了束缚在我们已有观念之上的“紧箍咒”,如此,一个全新的Web页面世界就会呼之欲出,采用新的视角看问题,会让更多的对象成为新观念之下的Web页面(或者是Web页面的一部分),如此,Web描述一切的可编程时代就来了。

应用页面作为子窗口,使得应用程序窗口呈现出前所未有的动态特征,浏览器的标签化,是现代浏览器的最好的特色之一,当这个特色用于组织窗口内容的时候,我们扩大了浏览器优势的外延,使得常规的窗口变成了互联网内容的入口,Web ****Runtime的最重要的责任之一是在常规的Win 32 **GUI之中找到这类动态内容的入口,非常幸运, **这类入口大量、普遍的存在 ,正因为这个原因,我们预计桌面应用应该到了属于自己的Web时代……
面向应用的Web页面,是由可编程组件与标准DOM合成的新页面,新的页面技术,使得传统MDI应用有了全新的特征,完全可以基于Web技术为其指定任意数量的子窗口类型……

在新的视角下,过去那些看上去不变的对象,例如WinForm、MFC窗体等等,都会在Web意义下变得极具动态性,这一点就是Web Runitme的魅力。

Web ****Runtime使得一个普通的WinForm窗体具有无穷多个运行时状态,这个特点将导致不同的应用场景应用系统会有完全不同的应用对策
Web ****Runtime将极大的颠覆我们对桌面软件的认知,让我们看到一个充满变化的全新的桌面应用世界
突破了浏览器窗口的约束,我们看到的世界就是Web ****Runtime倡导的新型Web页面带来的新世界,当每一个桌面应用都定义了Web后端,那么应用世界就会进入全新的互联网时代……

当更加一般化的普通窗口可以与浏览器窗口处于“平行”的位置,那么浏览器窗口之内发生的几乎所有事情,也会在普通窗口之内对等的发生,这个过程不是简单的“平移”,在新规则之下,GUI对象的内部会呈现出与标准Web页面类似的动态特征,这个特征是标准Web技术的延续,如同数学史上的每一次数学结构演化一样,互联网内容的演化,预示着桌面软件与Web软件之间的差异会渐渐消失。

开放的Web ****Runtime

        Web Runtime是一个开放的项目,如同Web世界在内容上没有边界一样,您可以在我们的Gi t站点找到全部源代码。Web Runtime仅仅是一个起点,如果我们为您打开了一扇门,那么新世界的里面,您就会为其他人点燃一盏灯,如此下去,全新的Web世界就不再是遥不可及的。

技术支持

        有问题的朋友,可以微信联系: