开发者社区> minlearn2016> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用开发本地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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
鸿蒙系统应用开发入门HelloWord(DevEco Studio怎么启动项目以及程序的运行过程)
使用DevEco Studio新建项目之后,会自带HelloWorld(其他语言需要我们自己写),由于项目使用的模拟器不是在我们本地,而是部署在华为的服务器中,所以我们需要登录华为账号并实名认证才可以使用
0 0
MULE ESB环境搭建和例子(通过装插件的方式)
环境搭建和例子: Download mule standaloe from web site: 1.    http://www.mulesoft.org/download-mule-esb-community-edition 2.    Unzip to a path(such as: D:\mulesl312)   Installing Mule IDE in Eclips
1394 0
使用delphi 开发多层应用(十一)使用kbmMW 开发webserver
用kbmMW 开发webserver也是非常方便的。 还是以前面的简单服务器为基础,我们先要通过kbmMW的service wizard 来建立web 服务。 如图,先选择web server service 点下一步,出现选择文件目录的界面 我们这里用webfiles 相对路径,就是在网页文件放到可执行文件目录下的webfiles 目录。
750 0
DotNet4应用程序打包工具->升级版【三】宿主程序分析+全部源码下载
索引 DotNet4应用程序打包工具->升级版【三】宿主程序分析+全部源码下载 DotNet4应用程序打包工具->升级版【二】安装工具分析 DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路   ...
616 0
DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路
先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布源码了,但是与第五篇相关的代码我还没有完成, 现在又花了一个周末的时间来写这篇文章 原谅...
678 0
插件架构学习体会(一) -- 宿主程序说:插件你得听我的
看了一段时间的#develop,首先接触到的就是程序的插件架构。园子里也有许多不错的资料可以学习。随时把自己的认识写下来和大家交流,无疑会有很大帮助。闲话就不说了,进入正题。     说到插件架构,首先要有一个整体印象,到底什么才是插件架构?这个问题的答案很好找,找个插件架构的程序看看就可以了,比如VS,MyIE,再比如千千静听。
463 0
+关注
minlearn2016
https://gitee.com/minlearn/minlearnprogramming/:minlearn的一云多端云OS/统一编程栈方案。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载