混合App开发,还能用计算机之父的那套理论

news2024/11/24 14:19:16

随着移动互联网的蓬勃发展,传统的原生应用和Web应用逐渐融合,冯诺伊曼结构则为此提供了坚实的理论基础。通过将应用的核心逻辑和数据存储在云端,实现了应用的分离,不仅为开发者带来了更便捷的维护和更新方式,也为用户提供了更加轻量级的体验。小程序技术则进一步推动了这一趋势,以其低入门门槛和快速开发的特点,让开发者可以更加灵活地构建功能丰富的应用。

然而,云端混合应用的发展也面临一些挑战。网络连接的稳定性、安全性、用户隐私等问题需要仔细考虑和解决。同时,技术的发展也应该紧密结合用户需求,确保应用的性能和用户体验能够得到持续提升。云端存储、小程序技术等元素的融合,正在引领着移动应用开发的新潮流。未来,我们可以期待更多创新和突破,让移动应用的开发变得更加智能、便捷和符合用户期待。无论是开发者还是用户,都将在这个变革的浪潮中获益。 越来越多的软件都是以saas或者云端的形式提供,因此,混合App的开发占比越来越大,大厂们纷纷都转向此类的开发。最近看到一些文章,混合App的开发,还能用计算机之父的那套理论--冯诺依曼结构来开开脑洞。 本篇文章,我们来大概介绍一下。

前置科普:哪些App能上架至应用市场?

苹果上架很多人都有误区,认为只要不是原生开发的App(哪怕一点点功能),均无法上架。

实则不然。苹果接收的软件不区分Web App、混合App还是原生App: 1、Web App:App里面webview打开远端的网站。Web App最大的缺点是:加载资源都是远端每次都要重新加载速度会变慢,俗称网站打包的APP。 2、混合App:App里面webview打开本地的H5、js、css和图片资源,不用读取远端的数据。加载的资源的减少大大加快App打开的速度,俗称混合开发的APP 3、原生App:逻辑框架和图片资源在本地,数据读取很少,在提交应用市场审核的时候,因为其均为本地打包加载,故没有很多的业务流程在App上架后能够进行改变,所以原生App不能灵活的应对市场需求,这也是为什么现在许多App,甚至是大厂需要转战混合App开发的重要因素之一。

​混合App开发方式-1:webview加载网页

WebView 是一种在移动应用中嵌入网页内容的组件,用于实现Hybrid混合App开发。在Hybrid开发中,你可以将本地的原生应用代码(通常使用诸如Java(Android)或Swift/Objective-C(iOS)等语言编写)与Web技术(如HTML、CSS和JavaScript)相结合,以便同时利用原生应用和Web内容的优势。

WebView 的工作原理大致是: 1、嵌入网页内容:这是最基本的组成。开发者可以使用WebView组件来创建一个视图,以便现实制定的网页(本地或远程); 2、加载HTML、CSS和JavaScript以便创建交互性更强、动态的界面,从而增强应用的用户体验; 3、通信桥梁创建,原生功能的调用:JavaScript代码可以通过调用原生接口来使用设备的本地功能,例如访问相机、位置信息、存储等。原生代码可以将这些功能暴露给JavaScript脚本,以便在WebView中使用; 4、性能和安全: WebView虽然能够嵌入Web内容,但其性远不如完全的原生应用。此外,WebView本质上运行在应用的沙盒环境中,与应用的其余部分分离开来,安全性倒是在一定程度上可以保障。 这类App,在互联网2.0阶段之初,网页盛行的时候,其技术层一度受到开发者的青睐,但随着应用市场审核机制的完善及进步,此类App开发完成后,需要经过多次的审核方能上架,甚至永远无法通过。 于是,使用Java classload这类的混合App开发的便开始进入了App开发的主流。

混合App开发方式-2:java classload类加载机制

使用Java的类加载机制从网络流读取字节码加载类,通常被称为远程类加载(Remote Class Loading)。这种技术在特定情况下可以用于实现混合App开发,尤其是在需要动态更新应用功能或模块时。下面是其基本原理:

  1. 生成和传输字节码: 在混合App开发中,你可以将一些Java类的字节码编译成二进制形式,并通过网络传输到移动应用。这些字节码表示你要引入的一些新功能或模块,或者用于更新已有功能。

  2. 自定义类加载器: 在应用中,你需要实现一个自定义的类加载器,以便从网络流中读取字节码并加载对应的类。Java的类加载机制允许你通过扩展ClassLoader类来创建自定义的类加载器,它可以覆盖加载类的默认行为。

  3. 类加载过程: 当应用代码需要使用某个类时,首先会通过自定义的类加载器进行查找和加载。如果该类尚未加载,类加载器会从网络流中读取相应的字节码,并将其转化为Class对象。加载后的类可以在应用中被实例化和使用,就像通过常规方式加载的类一样。

  4. 安全和隔离性考虑: 远程类加载涉及到安全性和隔离性的问题。你需要确保只有受信任的字节码才能被加载,以防止恶意代码的注入。此外,你还需要注意避免类冲突和内存泄漏等问题。

  5. 动态更新和模块化: 远程类加载使得你可以在不重新发布应用的情况下,通过更新远程字节码来引入新的功能、修复bug或者修改现有功能。这在需要快速响应用户需求或者进行A/B测试时非常有用。

混合App开发方式-3:参考冯诺伊曼结构,网络传输的包既可以是数据也可以是代码

参考冯诺伊曼结构,将代码和数据存储在云端进行混合App开发,可以实现一种类似于"云端混合应用"的架构。这种架构的基本原理是将应用的核心逻辑和数据存储在云服务器上,而移动设备上的应用则主要负责展示界面、用户交互和与云端通信。

以下是其基本原理:

  1. 分离前端和后端: 在这种架构中,移动设备上的应用主要充当前端角色,负责用户界面的展示、用户输入的响应以及与云端的通信。而应用的核心逻辑和数据存储则放在云端服务器上,充当后端角色。

  2. 云端逻辑和数据: 应用的核心逻辑、业务处理和数据存储都在云端进行。这包括应用的业务逻辑、数据库、文件存储等。移动设备上的应用通过与云服务器进行通信来获取所需的数据和执行必要的操作。

  3. 移动端界面: 移动设备上的应用主要负责展示用户界面,以及接收用户输入并将其传递给云端。移动端应用可以使用本地技术(如原生UI组件或本地的WebView)来构建用户界面,同时通过网络请求向云服务器发起请求。

  4. 云端通信: 移动设备通过网络连接与云服务器进行通信。这可以通过HTTP协议、WebSocket等方式进行。移动端应用发送请求到云端,云端根据请求执行逻辑并返回相应的数据或结果。

  5. 动态更新和维护: 在这种架构下,应用的核心逻辑和数据存储在云端,因此可以实现动态更新应用的功能、修复bug或引入新的特性,而无需用户手动更新应用。这样可以更快地响应用户需求和市场变化。

现代超级App如微信、支付宝、百度、美团等,其构建技术便是类似的理念:小程序+App壳子

相比于传统的原生应用开发技术,小程序技术具有轻量、快速开发、跨平台、无需安装、更便于用户使用等优势。小程序不需要用户下载安装即可使用,同时小程序的开发成本相对更低,开发速度更快,也更易于维护更新。小程序技术还支持跨平台运行,可以同时在多个移动设备上运行,极大地扩展了应用的覆盖范围,为企业和开发者带来更大的商业价值。市面上一些比较知名的小程序容器技术产品包括:微信、支付宝、百度、抖音小程序等,他们都是以完善大社交平台自有小程序生态的技术底座,能提供第三方进行私有化部署的有:FinClip、mPaaS等产品。据了解,FinClip自行研发的小程序容器技术,能够让企业的App能具备快速运行小程序的能力,他们家的SDK还能嵌入除App以外的职能设备终端中(如 Linux、Windows、MacOS、麒麟等操作系统上运行)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊加购软件之添加购物车对亚马逊卖家有什么好处

亚马逊对卖家而言,购物车功能可以带来以下一些好处: 1、提高销售机会:当买家将商品添加到购物车中,这意味着他们对这些商品感兴趣并考虑购买。这为卖家提供了更多的销售机会,因为购物车中的商品可能会最终被购买。 2…

橙河:海外賺美金的项目有哪些?

大家好,我是橙河老师。现在呢,很多人去国外打工,大家在短视频上也经常能看到,他们在国外挣了几年钱,回来就能买车买房。 其实呢,他们在国外的工作,工资也就是几千块一个月,不过他们…

15-模型 - 一对多 多对多

一对多: 1. 在多的表里定义外键 db.ForeignKey(主键) 2. 增加字段 db.relationship 建立联系 ("关联表类名","反向引用名") from ext import db# 一 class User(db.Model):id db.Column(db.Integer, primary_keyTrue, autoincrementTrue)us…

「MySQL-05」MySQL Workbench的下载和使用

目录 一、MySQL workbench的下载和安装 1. MySQL workbench介绍 2. 到MySQL官网下载mysql workbench 3. 安装workbench 二、创建能远程登录的用户并授权 1. 创建用户oj_client 2. 创建oj数据库 3. 给用户授权 4. 在Linux上登录用户oj_client检查其是否能操作oj数据库 三、使用…

CSPM认证是什么?

​CSPM项目管理专业人员能力等级评价是由中国标准化协会(全国项目管理标准化技术委员会秘书处)和中国国际人才交流基金会联合发起的。 是依据《项目管理专业人员能力评价要求》(GB/T 41831-2022)国家标准,按照项目管理专业人员应具备的职业道…

六、性能测试之CPU分析

性能测试之CPU分析 一、回顾:性能测试分析的思路二、cpu知识1、影响cpu性能的物理因素:架构、主频、核2、结构:主要物理结构是3个,实际是有4个3、内存说人话(总结)4、内核&线程&架构5、查看cpu信息…

爬虫逆向实战(二十五)--某矿采购公告

一、数据接口分析 主页地址:某矿 1、抓包 通过抓包可以发现数据接口是cgxj/by-lx-page 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个param的加密参数 请求头是否加密? 无响应是否加密? 无c…

TypeScript配置-- 1. 新手处理TS文件红色波浪线的几种方式

Typescript 规范化了JS的项目开发,但是对一些项目的一些新手来说,确实是不怎么优好,譬如我:将我之前珍藏的封装JS代码,拿进了配置了tsconfig.json的vue3项目,在vscode下,出现了满屏的红色 &…

css学习7(盒子模型)

1、盒子模型图&#xff1a; Margin(外边距) - 清除边框外的区域&#xff0c;外边距是透明的。Border(边框) - 围绕在内边距和内容外的边框。Padding(内边距) - 清除内容周围的区域&#xff0c;内边距是透明的。Content(内容) - 盒子的内容&#xff0c;显示文本和图像。 <!DO…

接口自动化测试 —— Jmeter 6种定时器应用

①定时器是在每个sampler&#xff08;采样器&#xff09;之前执行的&#xff0c;而不是之后&#xff0c;不管这个定时器的位置放在sampler之后&#xff0c;还是之下&#xff0c;都在sampler之前得到执行 ②定时器是有作用域的&#xff0c;当执行一个sampler之前时&#xff0c;…

机器学习---决策树算法(CLS、ID3、CART)

1. 决策树 决策树&#xff08;Decision Tree&#xff09;又称为判定树&#xff0c;是运用于分类的一种树结构。其中的每个内部结点 &#xff08;internal node&#xff09;代表对某个属性的一次测试&#xff0c;每条边代表一个测试结果&#xff0c;叶结点&#xff08;leaf&am…

Flutter实现StackView

1.让界面之间可以嵌套且执行动画。 2.界面的添加遵循先进后出原则。 3.需要使用AnimateView&#xff0c;请看我上一篇博客。 演示&#xff1a; 代码&#xff1a; Stack: import package:flutter/cupertino.dart;///栈&#xff0c;先进后出 class KqWidgetStack {final Lis…

Excel显示此值与此单元格定义的数据验证限制不匹配怎么办?

总结&#xff1a;1、在编辑excel文档的时候&#xff0c;弹出此时预测单元格定义的数据验证&#xff0c;限制不匹配的提示。2、这是我们点击菜单来的数据菜单。3、然后点击数据工具栏的数据验证下拉按钮。4、在弹出的菜单中选择数据验证的菜单项。5、然后在打开的窗口中点击左下…

【附安装包】Adobe XD2022安装教程

软件下载 软件&#xff1a;Adobe XD版本&#xff1a;2022语言&#xff1a;简体中文大小&#xff1a;346.8M安装环境&#xff1a;Win11/Win10&#xff08;1809版本以上&#xff09;硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff0c;不支持7代以下CPU&#xff09;下载通…

正中优配:新能源股票为何跌跌不休

从前在A股商场炙手可热、涨势如虹的新能源股票&#xff0c;比方光伏、风电、新能源轿车板块的股票&#xff0c;本年以来却是跌跌不休。有些从前的龙头股&#xff0c;看看K线图&#xff0c;走势用“疑是银河落九天”来描述好像也不为过。可是另一方面&#xff0c;这些新能源股票…

头条移动端项目Day06 —— kafka及异步通知文章上下架

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

3d素材库素材资源平台大大节省老师备课时间

教育元宇宙相信大家有所耳闻&#xff0c;3D素材云库通过数字三维建模技术将现实中的物体、天气、灯光等1&#xff1a;1模拟还原到虚拟场景中&#xff0c;让人们在教育元宇宙平台中可视、可见、可感。 在元宇宙爆发的大背景下&#xff0c;3D互联网传播内容也将迎来一次全面升级&…

uniapp启动微信小程序开发者工具报错Enable IDE Service (y/N) 

下载安装好微信小程序开发者路径 配置好启动路径后 报错[微信小程序开发者工具] ? Enable IDE Service (y/N) [27D[27C 解决办法 因为微信开发者工具的服务端口号没有打开

人机对抗智能-部分可观测异步智能体协同(POAC)-(1)

环境链接&#xff1a;数据中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/data_center/show/10 1.环境配置 Ubuntu 20.04 Anaconda python版本3.6 1.1 安装torch0.4.1失败 参考文章&#xff1a; 安装torch0.4.1的神坑_torch0.4.1_DEMO_Tian的博客-CSDN博客 co…

PostgerSql

建表修改字段等语句 1.建表 create table student ( id int, name varchar(30), birthday date, score numeric(5,2) ) 2.修改表名称 alter table student rename to student1; 3.修改表中列的类型 alter table student1 alter column name type varchar(40); 4.删除表的…