用开发本地tcpip程序的思路开发webapp

简介: 本文关键字:the headless cms,b/s web to c/s web, headless webapp backend.

本文关键字:the headless cms,b/s web to c/s web, headless webapp backend.

不可否认的是,webapp已经是与desktop, mobile app并列的主流appmodel之一,但是,web却是一种典型的Appstack as os,webapp是在native server apps上打出的一个b/s洞,再在这个洞里发展出来的一整个世界(跟移动端APP一样比如安卓),,比如,它底下的appstack,分别属于native/desktop的范畴,负责gui的是nginx,db mysql,etc(代表webappstack的是服务端app,客户端只是“client side html,js resources”,它脱离了服务端,就没有自身存在的意义。不是一个独立可用的app)..

Vs nativeapp和nativedev,它从来没有自己的os,或任何标准的宿主定义。较之native app,它不算是一种有专门运行它的OS供它托管运行的“app”,你要说webapp的host是lamp,很明显,lnmp中的l并不属于web,是applicationserver?beanserver?,也不是,它是语言的组件服务器,换言之,只有nginx,mysql这样的东西属于web —— 只是说,技术上通过ln+np的组合,能搞出一种web程序。这跟移动开发类似,它们都是linux和一种虚拟机语言双重托管运行下的app,——— 本来嘛,web开发和移动开发是beyond native层面的,也只须这样。

web的设计与缺陷

在开发上,动态程序的web app是monolith的前后端整合的,叫page app,程序员在后端完成所有的程序开发,Webapp的框架逻辑无非是routing,template,orm,route,mvc这些框架逻辑。代表一种appmodel的,无非就是它的stack框架逻辑。因为它考虑进了浏览器是服务端和客户端一体app。web程序之间不用交互和复用,没有api机制,也没有web件,web as service(当然,这些后来也有。。。),只有语言源码级的复用。

应用上,和后端运维上,也都是整合在web的。用户在一个web界面上完成所有的事,比如cms后端管理。用户和内容也是集成在远程的。没有线下只有线上。
这也就是说,程序靠后端,内容靠用户,全民线上分布式,没有线下分布式,它整个就是monolitch的(而且采用http,js这些具体选型没有二选,使得webapp是fixed的)。

以上这引起都不是问题。也不是web的问题。就像Web刚开始一出来其实就是分发静态文档只是后来有人用它来强行运行webapp而已(而且分布式应用开发本来在工业上的实现就很破碎,历史上并不存在一个真正的分布式OS,也不存在一个分布式appserver,见《plan9一个真正的分布式OS》) ——— 历史上,长链接,webgl,streaming content,这些,一直都是从各个维度去克服web monolitch page appmodel,使之多元的努力,

只是,只能有线上分布,不能有真正的线下分布,web这个缺点是显而易见的。有完全适合将web置于线上的现实需要,也就存在与现实的web应用现实相左的需求,比如,存不存在一种线上线下合作分布式的webapp呢?那些在本地可以处理的就让它在不必在远程,比如后端管理,使之跳出browser? 就像git的分布式那样,——— 在前面,我们也不断讲到此类思路,比如用静态网站思路来开发webapp,用tcpip来开发b/s。

新webapp

这样的方案是存在的,网上有wordpress headless cms这样的项目,这样努力的结果就是重新将web置于规范级,将webapp重设计,它仅需要是一个http协议,也不必是一个b/s app,web只需是一个gui,而不应成为full appstack的全部。这样就分离了线上线下。线上线下分别开发,这二者通过api链接。

重新分离的好处多多,最明显的就是,开发上:

1)Web的服务端可以真正作为headless backend,变身as service服务。有api机制和复用。客服分离开发,用c/s方式和类nativedev方式开发,客服不再拘泥彼此的技术规范和语言技术选型。

2)简化了服务端开发和选型,显示逻辑分离,服务端web框架再不用mvc这样的东西及其它同时考虑处理客户端routing等的逻辑,Lnmp中也不再需要php了。可以在服务端用任何一种语言来实现。也可以有gitstack这种多选择的选型结构。或仅是其它采采用了http的其它非lnmp的xxxstack,所以,webapp的后端可以是任何东西。

3)将客户端开发独立成线下,不再将webapp视为一个monolith的appmodel,类c/s web,可以用任何语言实现将html视为编辑器中的asserts,不仅是浏览器了。,可以是其它独立的客户端app,

4)变“瘦服务端开发”“强客户端开发”,比如Wordpress,插件可以在客端做,不用开源了。或者反之,那种复杂的线上交互网站,也是可以的(可是,那还有其它方法来解决不是?比如将动态部分也弄成一个headless “chat”,headless “comment”,headless “xxx”??)。

应用上:

1)cms可以发展为headless cms在本地管理,拥有真正独立的客户端app,可以fully Turn into functional in-browser application.

2)如果是展示型网站如cms,远端web程序也只需是个存储空间。比如阿里云OSS这种。这样,一个静态空间就可以解决cms托管的问题,而且更专业。

还有更多。。

其实,上面几点就“treating b/s webapp as c/s webapp in nativedev manner”一个意思。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
Web App开发 监控 Serverless
十分钟上线-基于函数计算开发 Restful web api & asp.net core web app
.NET Core是一个开源通用的开发框架,支持跨平台, 阿里云函数计算推出了 dotnetcore2.1 runtime, 使用 C# 编写 serverless 函数, 除了很好地支持通常意义上的函数外, 还可以基于函数计算开发 asp.
5722 0
|
Web App开发 JavaScript 测试技术
手机端webApp开发本地调试环境搭建
背景 手机端WebApp开发阶段,用chrome devtools模拟手机设备,很多兼容性问题不能提前发现。考虑到很多同学在开发时不便经常发版,方便设备可通过ip地址直接在移动端调试,提前发现问题,且不用发版到 test/pre 环境。
1783 0
|
JavaScript Java C#
C#开发移动应用系列(2.使用WebView搭建WebApp应用)
原文:C#开发移动应用系列(2.使用WebView搭建WebApp应用) 前言 上篇文章地址:C#开发移动应用系列(1.环境搭建)   嗯..一周了 本来打算2天一更的 - - ,结果 出差了..
1334 0
|
JavaScript 前端开发 API
2018开发最快的Webapp框架--BUI交互框架
这是你看下去的动力, 我用BUI仿照QQ的手机截图做出来的一个demo, 包含QQ的常见交互, 侧滑边栏,TAB切换,侧滑列表,下拉刷新,下拉菜单,弹窗搜索等交互操作, 这几种操作很多UI框架都有, 但几种操作结合在一块, 不同方向之间的交互冲突, 不是那么简单的事情. 使用BUI耗时1天.
2086 0
|
数据采集 JavaScript 中间件
|
移动开发
【精】H5移动端webapp开发(快装app)项目案例
现代人生活品质愈来愈高,之前想要了解家居的话,必须去实体门店,现在各类app如繁花乍现,也改变了人们的生活理念。app在手,全都不愁。如是利用了HTML5+css3开发了一个快速装修移动端app,界面新颖、功能不错,利用iscroll实现页面上拉刷新、下拉加载,swiper实现区块轮播。
12135 0
|
Web App开发 关系型数据库 Java
《Kotlin极简教程》第七章 Kotlin 集成 Springboot开发WebApp
本章请参考: 正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item.
1239 0
|
JavaScript 开发工具 Python
webapp开发时问题的总结1
其实这个话题的答案本应该是:萝卜白菜个有所爱,欢迎有新浪微博的大家踩一下我的app:http://readgame.sinaapp.com/ 但是,事实往往没有想象中的那么简单 服务器端 服务器端的程序你要调用,新浪和qq微博的api吧,那么你只有两个选择:1用现有的sdk(不管是官方的还是第...
768 0
|
移动开发 JavaScript Java
08. WebApp2.0时代启程:倒立者赢,NativePixi,所见即所得的开发方式
紧接上文,在终端设备中,不管是游戏引擎还是UIKit,图形图像都是基于跨平台的OpenGL ES技术,区分不同的场景,图形图像分为两个分支,一个以高性能的图形显示为目标的cocos2d-x引擎,一个是以省电节能适合App的UIKit框架。 ####一)今天我们继续逆向思维 Game VS App,既然都是基于OpenGL ES,那我们找出共同点,是否可以让二者的界限,变得更模糊?既
2362 0