2017 年 1 月 9 日,微信小程序横空出世。随后,支付宝小程序、今日头条小程序、百度智能小程序、360小程序等纷纷推出,自此国内软件功能扩展领域进入到了小程序时代,小程序为丰富其宿主软件的功能和使用场景,做出了不少贡献,迄今依然是程序开发的一个热门分支,这股热潮甚至吹到了海外。这些小程序,都依赖其自身移动端超级App或PC端浏览器及其后台服务器提供支撑才能正常运行,一荣俱荣、一损俱损。

  浏览器作为互联网最核心的终端软件入口,有没有浏览器小程序呢?其实是有的,且听我娓娓道来。在2015年之前,其实就有类似当前时髦的小程序类型,只不过叫JAVA Applet。浏览器发展初期,因为自身功能较弱,所以提供了非常丰富的功能扩展开发接口,如以IE支持的ActiveX控件和Chorme/Firefox等支持的NPAPI插件为代表的浏览器插件技术,供第三方开发运行在浏览器之上的各类应用,这些插件应用,也可以说是小程序的鼻祖。随着互联网的高速发展,在TO B市场,基于浏览器的B/S(浏览器/服务器架构)信息化系统因为开发测试成本低、部署升级也容易、无需单独安装即可用,所以纷切把传统的C/S (客户端/服务器)系统纷换到B/S架构。那些无法在浏览器中直接实现的功能,又开发出了各式各样的浏览器插件来配合网页运行,甚至基于浏览器插件技术的JAVA Applet和Flash中间层的上层应用也多如牛毛,如曾经红火的网页游戏,因此又有力推动了互联网的更快发展和企业信息化系统的快速建设与使用,因此赢得了客户的信赖,培养了用户一切以浏览器为中心的使用习惯,甚至一度有浏览器将取代操作系统的说法。

  然而好景不长,曾经处于市场垄断地位的IE浏览器,因为微软对其不思进取而无法及时响应互联网的发展需求,不断被用户抛弃使用。而Chrome在成为主流浏览器之际,包括Firefox在内的浏览器于2015年以NPAPI插件不安全、不稳定原因先后痛下杀手,封杀了插件技术作为扩展浏览器功能的通道,依赖插件技术的浏览器小程序前途从此暗淡。这次对NPAPI插件的封杀,虽然名义上保护了大量个人用户,但也直接导致了依赖插件技术的企业信息化系统不能在升级后的浏览器中正常运行,JAVA Applet也因此退出历史舞台,国内有金主之称的银行的在线网银系统,也只能告诉用户继续使用体验差的IE浏览器或未升级版本的Chrome浏览器来访问。虽然Chrome还提供了PPAPI的插件技术作为替代方案,但其限制极其严格,根本无法满足企业用户的需求,加上Firefox等浏览器也不支持,也就成了鸡肋。这不Flash Player的 PPAPI插件,谷歌宣布在Chrome浏览器中2020年底彻底寿终正寝。

  为了能在Chrome等升级后的浏览器中继续加载有ActiveX控件的网页,奇虎公司率先推出了同时集成Chromium和IE内核的浏览器满足了部分用户需求,又在小程序的热潮来临之时,发布了依托于360浏览器的小程序号称打造PC端的小程序生态,其桌面浏览器的中国区市场份额内部人士自称3成左右。然而根据调查统计机构 Netmarketshare 发布的 2020 年 7 月桌面浏览器全球市场份额报告显示,谷歌Chrome的市场份额首次占据超过70%的市场份额,微软采用Chromium内核的Edge浏览器从7.86%微升至8.07%,Mozilla Firefox也从7.23%上升至7.58%。360小程序依托在不占主流市场份额的浏览器之上,是难有大作为的,况且微软开始发力直接在操作系统层面及其它各渠道砸重金推广Edge浏览器,势必会对360浏览器的市场份额造成不小的压力。

  2015年到现在整整5年时间过去了,作为替代ActiveX和NPAPI的浏览器插件技术,在浏览器开发商不断收紧其扩展接口的大趋势及无统一技术标准的现实之下,几乎变成了不可能,这也导致开发依赖插件技术的浏览器小程序,成了空中楼阁。然而就有人不信邪,这不,成都佐罗软件有限公司的创始人,曾经作为新浪微博手机客户端的技术负责人,对钻研技术如痴如醉。作为大龄程序员,继续带领团队钻研并保持全身心投入研发,数载春秋,甚至在卖掉一套房子才勉强维持团队生存的困难时期之后,终于在2020年7月13号,发布了跨浏览器的小程序系统—PlguinOK(牛插)中间件产品,成为替代ActiveX控件和NPAPI插件的浏览器功能扩展利器。说个题外话,这也证明了大龄程序员的市场价值,希望多少能改变国内企业对35岁以上程序员的歧视。依托PlguinOK中间件,针对不同的业务使用场景可以开发以下三种类型的浏览器小程序:

1)、无界面交互的无窗口小程序(dll),实现为进程内COM组件,可用于封装各种硬件设备的驱动库及Windows API等,此类型小程序和PluginOK运行于同一服务进程,拥有较高的系统访问权限,一般不能访问当前桌面登录用户的注册表及相关配置;

2)、有界面交互的弹窗小程序(exe),此类型小程序是普通的Win32执行程序,主要是封装打印机、扫描仪、高拍仪等的驱动控件给前端调用,以弹出类似网页新窗口的形式运行,权限和普通桌面应用一样;

3)、有界面交互的内嵌网页窗口小程序(exe),此类型小程序也是普通的Win32执行程序,主要是封装如视频播放、办公软件的ActiveX控件给前端以内嵌网页的形式运行,体验效果和原ActiveX控件及NPAPI插件一致。

  这个中间件的发布,给广大企业用户带来了福音,尤其是各类硬件厂家、办公及文档管理等信息化集成商、工业软件开发商等,终于可以让原有业务完美支持高版本的Chrome、Firefox、Edge等浏览器了。在中间件发布的同时,为了示范浏览器小程序的开发,同时提供了C++及C#语言的无窗口和弹窗小程序的范例代码。而内嵌网页窗口的小程序范例,提供了Flash Player、IE控件和新标签小程序案例,其中Flash Player可以用来替换官方发布的Flash Player PPAPI插件,避免2021开始无法使用的尴尬事情发生。IE小程序,可以在Chrome中实现程序驱动的双内核浏览器,让信息化系统开发商来决定哪些网页需要用IE的哪个版本内核来加载,一切都是自动的。这明显区别于目前市场上的其它双核浏览器,是用户手工来决定哪些网页用IE加载。

现在让我们来看看这个浏览器小程序系统都有啥特色吧。

  首先,此中间件采用了全球领先的创新思路来突破了现有浏览器的局限,让中国人在浏览器领域实现了重大技术创新,而不是仅仅用开源的Chromium内核来做个浏览器的外壳。此项独创技术,也申请了软件发明专利保护,避免模仿滥用,以确保长久的生命力。作为跨浏览器的功能扩展小程序系统,完全不依赖任何浏览器的扩展接口,所以才能对Chrome、Edge、Firefox、IE、360、Oprea、QQ、搜狗等浏览器实现统一的兼容运行,彻底规避各个浏览器升级带来的潜在风险;

  其次,功能强大,通过此中间件可实现网页前端脚本无障碍操作本地电脑的各种硬件、调用本地系统API及各种DLL函数,大量已成熟的ActiveX控件及自动化程序(如微软和金山的办公软件、AutoCAD工业软件等)都可以继续实现内嵌到网页中继续运行,让浏览器几乎无所不能;

  此外,良好的兼容能力,不仅仅体现在对众多浏览器之上的兼容运行,不管是32位还是64位的系统或浏览器都可正常工作,操作系统最低还可在Windows XP系统中运行,Windows 10系统最新版自然也毫无压力,服务器系统最低可支持Windows Server 2008。随着屏幕越来越大,分辨率越来越高,系统桌面经常会使用125%、150%等比例显示放大运行,PluginOK中间件也进行了兼容处理。

  最后,大家必然有这样的疑问,既然因为安全和不稳定原因浏览器取消了原来的插件技术支持,谷歌、微软等公司会不会对PluginOK这样的小程序系统进行封杀呢?答案是不太可能,首先这个中间件的应用场景主要在企业领域,开发的小程序都是需要经过严格测试才会部署到企业的IT网络中,企业客户是不允许小程序有病毒或木马等特征功能的;其次PluginOK对小程序的运行权限进行了严格限制,PluginOK只允许经过授权的小程序方可运行;再次,小程序的运行是独立于浏览器进程之外的,不会导致浏览器不安全或不稳定的情况发生,对浏览器本身无危害,反而大大扩展了浏览器的应用场景,让浏览器离替代操作系统的梦想更进一步;最后,PluginOK的小程序,是不需要依托浏览器开发商的服务器来发行的,自然无需对这些小程序的运行结果负责。那么小程序如何分发呢?在PluginOK的架构里,企业有完全自主可控的权利,只需要在开发阶段到PluginOK的发行商那里去登记注册获得授权,即可自行在企业网络中进行发布和使用,是无需连接外部网络的。

浏览器小程序功能演示视频:http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4

浏览器小程序(Browser Applet)闪亮登场的更多相关文章

  1. Java网页小程序——Java Applet

    Java Applet是编译过的Java程序,可以在所有支持Java的浏览器中运行. 1.Applet的使用 import java.applet.Applet; import java.awt.Gr ...

  2. WordPress版微信小程序3.5版发布

    最近花时间对WordPress版微信小程序做了一些完善和调整,修复不少程序的问题.一个程序的完善是持续和渐进的,没有最好,只有更完善.虽然会采纳一些用户的建议和意见,但我会从一个产品角度去考虑,哪些功 ...

  3. 如何 通过 userAgent 区别微信小程序

    微信内置浏览器: 微信小程序: 有micromessenger是微信内置浏览器,有micromessenger和miniprogram的是微信小程序.  (ios不适用) if(navigator.u ...

  4. [干货] 有了微信小程序,谁还学ReactNative?

    版权声明:本文由贺嘉原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/145 来源:腾云阁 https://www.qclou ...

  5. 微信小程序排行榜

    哪类微信小程序使用量最多?小程序是附属在微信上,微信小程序排行榜跟微信的用户属性有很大的关系,微信用户对新闻资讯.情感.养生表现出了极大的兴趣,所有我们从新闻资讯小程序.视频小程序.情感类微信小程序. ...

  6. 微慕WordPress小程序增强版

    2017年1月9日,张小龙在2017微信公开课Pro上发布的微信小程序正式上线.在过去的2年多的时间里,微信小程序领头,各大互联网平台也不甘落后,陆续推出自己的小程序.2018年7月4日,百度智能小程 ...

  7. 微信h5支付/jsapi支付/小程序支付

    一. 介绍------------------------------------------------------------------ 微信支付官方开发文档:  https://pay.wei ...

  8. js判断移动端浏览器类型,微信浏览器、支付宝小程序、微信小程序等

    起因 现在市场上各种跨平台开发方案百家争鸣各有千秋,个人认为最成熟的还是hybird方案,简单的说就是写H5各种嵌入,当然作为前端工程师最希望的也就是公司采用hybird方案当作技术路线. 所谓的hy ...

  9. 微信小程序如何实现点击链接跳转到手机自带浏览器

    最近遇到一个需求.公司有一个业务,制作的小程序需要跳出微信打开一个指定的我们自己的页面,拿到这个需求后我们团队分开去找资料研究方案,通过微信的开发文档.腾讯的第三方开发文档我们都查阅过资料但是最终只找 ...

随机推荐

  1. 死磕以太坊源码分析之rlpx协议

    死磕以太坊源码分析之rlpx协议 本文主要参考自eth官方文档:rlpx协议 符号 X || Y:表示X和Y的串联 X ^ Y: X和Y按位异或 X[:N]:X的前N个字节 [X, Y, Z, ... ...

  2. 【C++】归并排序

    性能分析: 时间复杂度:O(n*log(n)) 空间复杂度:O(n) 归并排序算法来自于分而治之思想,"归"是"递归"的意思,"并"是&qu ...

  3. 利用perspective 和 transform 里面的几个参数来实现旋转照片墙

    旋转照片墙 首先,来看下,是什么效果吧,上效果图 ↓ 其实这个东西,很容易制作,先说下思路, 把照片都给叠在一起,然后 rotateY 旋转,给每张图片 旋转不一样的角度能构成一圈, 然后transl ...

  4. Java中的接口与抽象类的区别

    由于随着jdk版本的更新,在jdk1.8时,接口也增强了,所以我们分别来说明一下. (1)jdk1.8之前 在jdk1.8之前,接口里面只能定义抽象方法和常量:而抽象类比普通类有一点不同,就是抽象类里 ...

  5. H3CNE认证(题库)

    H3CNE考试的题库,均为发烧友收集的,拥有将近认证考试的百分之八十五的题,但答案不具备官方性,但是题库具有解析. https://huxiaoyao.lanzous.com/b01tr2skd 密码 ...

  6. cheat.sh在手,天下我有

    前言 作为程序员需要了解的东西有很多,日常编码和写脚本脱离不开各式语言与 Linux 命令.为了记住一些杂乱的或不被经常使用的知识点,我们迫切需要一个"小抄"/备忘录,小抄内容多了 ...

  7. rest-framework:权限组件

    一 权限简介 只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制 二 局部使用 from rest_framework.permissions import BasePerm ...

  8. JZOJ2020年8月7日提高组反思

    JZOJ2020年8月7日提高组反思 T1 暴力枚举 枚举起点和\(p\) 然后就 过了?! 根据本人不严谨的推算 时间复杂度\(O(\dfrac{n^7}{4})\) 数据太水就过去了QAQ T2 ...

  9. 使用react终端运行npm start时报错

    npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! my-app@0.1.0 start: `react-scripts start` npm ERR ...

  10. Centos7 之间的文件拷贝

    环境: 内网了两台cenots7主机 scp命令 scp [参数] [原路径] [目标路径] scp -P 22022 /home/file.war root@192.168.253.172:/hom ...