目录
前言
一、WebRuntime是什么?
二、使用步骤
三、具体案例
总结
前言
让自己的应用拥有对接互联网的能力,应该是绝大多数开发者的愿望。这里给大家推荐一个开源项目:WebRuntime,通过这个项目,开发者可以在完全保留自己应用架构基础之上,通过一行代码的修改,即可使得自己的应用变成完整的互联网浏览器。与标准浏览器(Chrome、Edge)等的差异是应用程序的第一个窗口,这个窗口是开发者自己应用系统的主窗口,用户启动第二个程序实例或者基于自己的代码、超链接等,可以打开任意多个内置的浏览器窗口。应用系统的对象模型,直接成为Web DOM的一部分。给应用提供了极大的弹性。
一、WebRuntime是什么?
WebRuntime是一个开源项目。这个项目的核心目标是:让开发者将现代浏览器做为一个应用的起点,也就是说,在Chromium Project基础之上构建自己的应用系统。对.NET开发者而言,我们给出了最简单的方案:开发者只需下载本项目的二进制支持包,同时将“Application.Run“调用替换为“Cosmos.Run”。
二、使用步骤
本文只针对.NET开发者(当然WebRuntime也支持Win32),我们提供了 ”一分钟视频教程“。通过这个视频教程,开发者可以为自己的.NET工程提供内置的浏览器基因。
三、具体案例
我们在 二进制包(下载TheUniverse.zip) 之中,提供了最简单的示范应用FirstApp,exe,开发者可以在Git上下载FirstApp源代码,或者自己创建一个最简单的工程。
正确运行FirstApp.exe,我们现有一个初始化WebPage:”FirstApp.index.html“,页面的代码如下:
欢迎您进入一个全新的.NET世界, 我是您的朋友WebRuntime
欢迎您来到FirstApp的 .NET桌面软件生态世界!
点击以下超链接 体验全新的Web页面...
The First WebPage for Application
让您的应用系统拥有互联网基因
新的Web页面,新的表现力
让Web应用与桌面应用之间的鸿沟渐渐消失
冲破约束,一片新天地呼之欲出
您可以做更多的事情,你的Web你做主
页面无处不在
您的创造力无限……
这里的规则是:每个”exeName.exe“需要一个初始化页面:”exeName.index.html“。
有了FirstApp.index.html,现在可以运行FirstApp.exe了。
启动FirstApp.exe,我们看到:
对比一下Form1设计器界面:
我们发现,运行时窗体增加了很多元素,这一切都是如下Web页面元素:
产生的效果,其中,panel1是Form1上的一个控件,这里给出的设计是,当Form窗体页面化的时候,其中心位置的控件,可以被Web页面进一步动态化。点击Form1窗体上给出的一组”超链接“,可以直接激活内置的浏览器:
(应用页面,是由.NET控件与标准DOM元素合成的)
(调试界面)
(新标签页 New TabPage)
我们在FirstApp.index.html的如下部分确定每个新页面的基本样式:
(ntp 节点,ntp=”New TabPage“)
在下载的二进制包之中,提供了一个有一些复杂度的初始化页面”FirstApp1.index.html“,您可以将这个文件替换FirstApp.index.html(修改一下名字),看看更加综合的效果。
总结
我们希望:
- 每个.NET应用在完整保留原有结构的基础上,用最简明的途径给每个应用提供内置的全功能Chromium-Based互联网浏览器;
- 每个浏览器都可以将.NET GUI元素当作Web页面的DOM元素,Javascript可以响应这些GUI元素的事件;
- 提供基于目录的部署机制,使得没有文件夹之下,应用都有完全不同的Web配置、部署;
- 当用户工程之中,Application.Run被Cosmos.Run替换之后,用户的系统就完全实现基于Web技术的应用扩展机制,拥有自己的Web生态,每一个WinForm窗体都可以基于Web技术实现Web页面类似的动态表现力,在FirstApp.exe之中,我们看到了panel1表现出的动态性;
- 事实上,由FirstApp.exe,我们可以确信,每一款.NET桌面应用,都是一个Web内容引擎,如图标准浏览器一样。也就是说,WebRuntime揭示出桌面应用的双重性,其一是本地特性、其二是Web特性。
- 当WebRuntime被应用系统引用之后,扩展性就是一个普遍性问题,应用系统的原有模型被Web技术无限扩大了,这一点与原有系统形成本质的差异;
- FirstApp是一个极简的WinForm示范,事实上互联网时代,.NET桌面应用的潜力应该是“极为广阔“,如果浏览器是最小的应用,那么WebRuntime就会给开发者带来无限的创造力……



