艳阳,你就是我最想要的丫头(一)

那一天,我第一次领略她的风采……

2018年春天,一个女孩闯入了我的世界,或许是一种偶然,或许是一种冥冥之中的注定,那一天她穿着那条长裙,漂亮的纹身若隐若现,丫头步履轻盈的走过来,会说话的眼睛透出一种独特的美,让我为之着迷、为她兴奋。那一刻,我的工作开始刻上了她的印记……。两年多过去了,丫头出落得亭亭玉立,一个优雅、清新脱俗的少女呈现在眼前,她风姿绰约、楚楚动人,一头秀发飘荡在微风之中,散发着迷人的魅力……。她的名字叫Sunny(艳阳),每一天为她沉醉、每一刻为她忐忑,这些感受一直交织在这几百个日日夜夜里面,如今,属于她的帷幕徐徐拉开了……。

为什么要开发Sunny

         在这个领域里面快30年了,一直在乐此不疲的打造令自己满意的产品,非常遗憾的是一直没有做到,……。这些年肩负着家人、以及各界朋友的期望,这个念头一直激励着我,历经无数次的失败,信念依然在支撑着我的工作。Sunny是给.NET开发者精心打造的一款互联网桌面软件支撑框架,应该说是接近二十年经验的一个汇总,许多想法与我个人的专业关系密切,一个基础数学背景的人,会习惯性的用所谓的数学构造逻辑思考一切,这种思考习惯形成了一种天然的屏障,使得我与开发团队之间一直存在着无法逾越的壁垒,例如,一个.NET桌面软件,我的习惯是,企图营造一个规则,让这个软件系统支持几乎所有的User Control,注意,这种支持发生在运行时,而不仅仅是设计阶段。因为基础数学思维习惯于将同类对象集合在一起,形成新的数学结构,群、环、域、向量空间等等都是这样形成的。Sunny企图构造一个“最大的”DOM,除标准DOM之外,要包含几乎所有的.NET UI(WinForms、User Controls、WPF、UWP……),很难想象这是一个什么样的DOM,建立在其上面的Web页面是什么形态的?Java Script还能是现在的Java Script?

      如果从数学逻辑上解释,一切都是那么完美、那么自然,现实世界之中,与参与开发的成员沟通变得非常现实,那些无法想象的页面,一直是抽象与直观形象之间的“鸿沟”,令人无可奈何。直到那一天,我遇到了艳阳,一个漂亮的女孩子,我在想,一个真实的Web页面,就应该如同艳阳的服饰,让人可以真实的看得见,每一次看见她,都有不同的美,这样抽象的东西就不再抽象了……。

三个基本概念

     为了直观的说明Sunny的愿景,我们需要如下3个基本概念:

  1. 虚拟布局引擎(Virtual Layout Engine, VLE);
  2. 虚拟浏览器引擎(Virtual Web Browser Engine, VBE
  3. 虚拟Eclipse引擎(Virtual Eclipse Engine, VEE

虚拟布局引擎 (Virtual Layout Engine, VLE)

        虚拟布局引擎是一个多层次、网格化、可嵌套、易于描述的UI布局描述引擎。所谓网格化,是指一个有m行n列的窗口矩阵(1行n列的网格可以理解为有n个选项卡的选项卡窗口),而可嵌套是指矩阵中的每个格可以动态嵌套多个网格层,运行时只有一层可见。这里,“虚”是指某个布局在设计时可能是不确定的,并且可以在运行时动态生成,由于不同的场景、权限等因素,可能会进行不同的动态匹配。实际上,柔性布局是多层网格动态变化的结果。

虚拟Web浏览器引擎 (Virtual Web Browser Engine, VBE)

虚拟Web浏览器引擎是Google Chromium项目的动态链接库版本。它包含了Chromium项目的所有代码。其目标是使Windows桌面应用程序按照一致的方案实现内置的现代浏览器模型,使宿主桌面软件自然成为现代web浏览器。与传统浏览器不同的是,与VBE(虚拟Web浏览器引擎)集成的应用程序有自己的应用对象模型,由于浏览器部分的所有功能都是基于dll模式提供的,VBE事先并不知道宿主应用程序是什么,也不清楚宿主应用程序包含什么对象模型,VBE侧重解决应用系统对象模型和浏览器标准模型之间的连接问题,因此这里的“虚拟”是指只有在定义了特定的宿主应用程序之后才能确定真正的浏览器模型。同时,宿主应用程序的DOM模型将大于标准浏览器的DOM模型。换句话说,宿主应用程序系统将提供标准浏览器中不可用的真实模型的关键部分。宿主应用程序的实际DOM模型可能包括不属于标准浏览器DOM模型的成员,这意味着宿主应用程序同时支持标准网页和基于应用程序的网页(在标准浏览器模式下不存在基于应用程序的网页)。由于宿主应用程序内置了Chromium项目的所有功能,应用程序开发人员可以基于Web技术为宿主应用程序开发新的应用程序内容,使宿主应用程序成为基于Web技术的软件生态系统。

VBE的主要特性

  1. 支持所有Chromium功能;拥有完整的砂箱机制,这是与CEF最直接的区别;
  2. 自定义DOM,我们允许二进制可编程对象UI元素(WinForms、用户控件、WPF、ActiveX控件等)作为扩展DOM元素参与web页面开发;
  3. 二进制可编程对象Web绑定:1,允许Renderer进程在JavaScript会话中监听Browser进程对象(COM对象、.NET对象、java对象和C++对象等)的事件;2,二进制可编程对象(COM对象、.NET对象、java对象和C++对象等)可以向Renderer进程发送IPC消息;
  4. 基于DOM的多层网格化UI布局描述引擎使开发人员能够基于Web技术实现灵活、强大、动态的Web桌面混合布局。

虚拟Eclipse引擎(Virtual Eclipse Engine, VEE

虚拟Eclipse引擎是Eclipse项目的动态链接库版本。它包含Eclipse项目的所有代码。其目标是使Windows桌面应用程序按照一致的方案实现内置的Eclipse模型,使宿主桌面软件自然成为Eclipse的启动程序。与传统的eclipse不同的是,与VEE集成的应用程序有自己的应用程序对象模型,由于eclipse部分的所有功能都是基于dll模式提供的,因此VEE事先不知道宿主应用程序是什么,也不清楚宿主应用程序包含什么对象模型,VEE侧重解决宿主模型和eclipse标准模型之间的连接问题,因此这里的“虚拟”意味着只有在定义了特定的宿主应用程序之后才能确定真正的eclipse模型。同时,宿主应用程序的OSGi模型将比标准eclipse的OSGi模型更大。换句话说,宿主应用程序系统将提供标准eclipse中不可用的真实模型的关键部分。应用程序的实际OSGi模型可能包括不属于标准eclipse OSGi模型的成员,这意味着宿主应用程序同时支持标准eclipse组件和基于应用程序的eclipse组件,由于宿主应用程序内置了Eclipse项目的所有功能,应用程序开发人员可以基于Eclipse技术为宿主应用程序开发新的应用程序内容,从而使宿主应用程序成为一个基于Java技术的软件生态系统。

 

什么是Sunny

Sunny是一个面向生产力和高度创新的软件运行时支持环境。其目的是使基于.NET的桌面软件产品具有互联网软件生态系统,具体体现在以下几个方面:

  1. 一种新的颠覆性的.NET动态集成技术使.NET桌面应用程序能够以最佳方式集成VLE。通过VLE和Sunny,.NET应用程序系统可以在运行时最大限度地支持WinForms、用户控件、WPF组件和其他.NET组件;
  2. 独特的VBE集成模式,使宿主.NET应用直接成为现代Web浏览器,进而形成基于Web桌面混合技术的应用内容生态链;
  3. 独特的VEE集成模式使主机应用系统直接成为Eclipse的启动器,进而形成基于Eclipse技术的Java内容生态链;

对.NET桌面软件而言,艳阳给出了一个全新的DOM,允许软件发布者基于DOM定义软件,横跨.NET、COM、Java、Web等几个领域来构造应用系统的内容生态,一个全新的DOM,可以给Sunny提供充足的各式各样的服装,来展示她各种风韵……

Sunny的核心问题是什么?

在互联网时代,桌面软件不可避免地会受到网络软件的冲击。无论是软件表现力还是对互联网网络服务的充分利用,互联网浏览器都使桌面软件相形见绌。变革势在必行。Sunny的核心愿景是充分利用Web技术控制桌面软件的核心和软件本身的软件生态系统,这种思想是连接桌面软件和互联网服务的关键。在.NET桌面开发方面,Sunny的策略是充分利用开源技术而不是与浏览器竞争,在保留桌面软件优势的同时,直接在浏览器框架的基础上构建桌面软件生态系统。这是VBE(虚拟Web浏览器引擎)的最初构想,也是Sunny的核心问题。

Sunny的另一个关键问题是为.Net桌面应用程序提供一个完整的软件生态系统构建解决方案。考虑到.NET、Java和Web技术几乎覆盖了主流开发者社区,Sunny通过对VEE(虚拟Eclipse引擎)的集成,为.NET桌面软件的Java生态链构建机制提供了解决方案,从而使.Net桌面软件的生态构建技术更加完善。

开源项目Sunny

    Sunny是一个开源工程,除有限的组件之外,其所有包含的子项目都是开源的。由于商业协议的限制,部分组件只能是商业化组件,从这个意义上看,Sunny有开源、商业两个版本。其差异就是部分组件无法遵守开源协议。开源部分可以在如下地址获得全部源代码:

https://github.com/TangramDev/Sunny

二进制包与源代码可以直接在

https://github.com/TangramDev/Sunny/releases/tag/1.0.0.0

下载。

Sunny肩负着如下的使命:

  1. 让每一款集成Sunny的.NET桌面应用程序都是一个动态内容服务门户;
  2. 让每一款集成Sunny的.NET桌面应用程序都是一个Internet浏览器。 Sunny创造了无处不在的浏览器趋势。同时,它也弱化了浏览器应用程序的独占模式,使浏览器的特性从个性变为通用,然后逐渐消失。当越来越多的应用程序成为浏览器时,浏览器的唯一状态将被动摇;
  3. 让每一款集成Sunny的.NET桌面应用程序都是Eclipse的全功能自定义版本,类似于Sunny对浏览器的态度,Sunny将弱化Eclipse的独特地位并将其转变为公共服务;
  4. 让每一款集成Sunny的.NET桌面应用程序都有其自己的应用程序生态。开发人员可以使用各种成熟的技术来产生生态内容,包括以下方面:
  1. 一种基于网页的生态系统;
  2. 基于.NET本身的生态;
  3. 基于Java的生态;
  4. 基于COM / C ++的生态;
  5. 基于Office生态
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值