构造你自己的个性化桌面应用加载器(Application Launcher)

        现代桌面应用存在一类基于Application Launcher的设计思路,以Electron、Eclipse、PWA等流行的技术为例,事实上,以上几类桌面应用存在一个共性,即每一类应用都有自己的“公共”宿主可执行文件(以及一组必要的动态链接库),例如eclipse.exe。有了“Application Launcher”,一个具体的应用,事实上就是一种基于“文件夹”结构的配置,在Electron、Eclipse等相关的技术文档里面有非常具体的体现。
        构造您自己的Application Launcher,意味着您的应用可以充分的个性化。一直以来,我们很少想到设计自己的Launcher,很多时候我们都是利用已有的Launcher或者我们就是Launcher的消费者。
        只要看一看我们已知的几种具有Launcher行为的应用技术,我们就可以明确的感觉到Launcher的重要性,毋庸置疑,每一种Launcher,都对应一类“软件生态”,仅此一点就足以说明问题。当我们想到或者我们可以构造自己的“Launcher”的时候,我们对一个桌面应用的构造应该有不同于以前的认识,我们会考虑应用发布的具体目录、与之匹配的一组组件、初始化文件、必要的数据文件甚至应用系统的存储结构等等,具体说来,我们需要考虑一个软件生态需要具备的那些结构、元素、数据以及网络服务……,可以说,Launcher意味着一种“进化”。
当我们提供一种“Launcher”的构造技术的时候,我们需要明确的是,我们要构造一种应用范围更大、不同于“Electron”、“Eclipse”、“PWA”等已有的技术机制,我们需要考虑已存在的那些公共技术,需要照顾到开发者的习惯,同时还要考虑技术的易用性以及可调度资源的广泛性。


新的Launcher应该充分考虑对互联网技术的支持

    将Launcher的主进程设计成现代浏览器的浏览进程,这一点确保了对桌面互联网的最基本的支持,为此,我们考虑100%的包含Chromium的源代码,这一点不同于Electron以及那些源于CEF框架的解决方案。Chromium被完整的包含进来意味着Launcher本身就是一款现代浏览器,不同于Chrome以及Edge,我们提供了扩展的DOM技术(DOM Plus),扩展了Html元素的类型,.NET控件、COM控件以及Form窗体等等都可以视为DOM元素,Launcher支持的页面是一类“Application Web Page”,如图所示:

面向应用的Web页面,使得组织应用内容更加容易

如下图所示,页面可以作为其他窗口的子窗口,“浏览器标签组”是一种用户体验非常好的组织内容的方式,开发者可以将这种技术直接用于具体的应用窗体之中: 

(强大的应用组织能力)

新的Launcher从Web页面的角度支持WinForm以及MFC FormView

        众所周知,MS Office的最重要的特色之一是对VBA的支持,VBA使得Office形成了强大的生态能力。由于VBA技术不再商业化了,所以我们给新的应用程序结构提供了WinForm集成能力,也就是说我们希望WinForm承担VBA Form2的角色,同时JavaScript承担VBA宏语言的角色。为此,我们允许JavaScript可以很好的处理.NET对象(以及其他Win32对象)的方法、事件、属性、消息,这一点意味着,桌面.NET组件(以及其他Win32对象)拥有本地基于.NET代码(Native代码)编程能力的同时,还具备基于Web的可编程能力,类似于物理学之中的“波粒二象性”。我们将这一点称之为基于互联网的“对偶编程能力”,也就是说,桌面应用编程,存在“本地”与“Web”的双重侧面,现阶段的编程技术,可能只考虑了其中的一个侧面,所以使得桌面软件与Web软件形成了巨大的反差。由于Launcher的出现,您的桌面应用可以拥有Web后端了……
        Launcher可执行程序的基础环节是用MFC框架实现的,之所以这样,是为了表达对经典技术的致敬。这种考虑的额外收获是:我们可以将MFC框架的CView类对象做为Web页面的一类DOM元素,因此MFC FormView自然做为一种Form类型成为Launcher对应的应用系统的重要特色之一。


新的应用体系是以Web为中心的、开放的技术框架

        Launcher必须依赖的核心组件库形成了一个开源项目,项目源代码 。


构造自己的Launcher.exe

        Launcher对应的可执行文件,是一个极为简洁的MFC工程,源代码包含在二进制包里面,直接编译即可,如果您需要符合自己需求的Launcher,可以直接修改源代码,或者按照我们提供的步骤重构。对不熟悉C++的开发者而言,替换一下图标直接编译即可。
    当你自己的Launcher构造完毕之后,就可以依据不同的场景构造个性化的应用了,如下图所示: 

(当你有了一个Launcher,具体的场景之中,您可以配置一个或多个窗口类型、Web页面……)

对.NET开发者而言,需要开发一个或者多个动态链接库工程,里面包含一组Form、UserControl,有了这些二进制组件,就可以写应用页面了。
        事实上,您熟悉的DIV,CSS等,也是编译好的二进制组件,对Chrome而言,这些组件由Chrom.dll提供,Edge浏览器这些组件由msedge.dll提供,只要看一下如下图片:

(这里我们看到很多熟悉的元素,是Chrome.dll的一部分)

当我们看到如上图片,我们基本上也看到了msedge.dll工程结构的一部分,其实换个角度看我们开发的那些动态链接库,我们似乎就是在考虑一个途径:常规的动态链接库输出的对象,相当于新的DOM元素,我们大可以将我们自己开发的各种控件、视图当作“二进制的DIV”,如此考虑,常规的组件技术就会在Web页面环节得以延续,这一点意味着,新的Launcher架构,为我们提供了一个“极大”的DOM元素集合,我们需要脑洞大开,将那些应用窗体、控件等等全部看作Web页面的一部分,如此,你的应用系统就会弹性十足,过去看上去二进制的静态窗体,现在都是动态的,可以基于Web页面动态描述、创建,……
 

供参考的二进制下载:
1 csdn下载地址:CSDN下载
2 完整源代码(包含核心组件源代码)下载: GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Web++

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

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

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

打赏作者

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

抵扣说明:

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

余额充值