浅聊各种平台的技术选型

抱一只橘 1.1K 0
温馨提示

本篇为个人it思维提升的第一篇,此篇从计算机技术发展角度为线索,并站在总体的现实人类活动观察视角,对一些技术的应用价值作出了探究。

一.网页端(bs架构,web2.0)

 

0.前言

浏览器才是通用的,或者说chromium有统一客户端的趋势。前端服务器为ngnix只管返回html页面(js引擎)。后端服务器为webapi连接数据库处理业务逻辑只管返回json格式。
  • 原则:
    • 开发: 可复用性可拓展性(实现:解耦和内聚),可维护性(实现:规范)、健壮性(实现:测试)、敏捷性(实现:云原生Devops)
    • 后端三高:高并发(高性能服务器)、高可用(合理利用cpu和内存资源应对多的请求、负载均衡、微服务)、高性能(利用中间件提速、数据库、服务器调优)
    • 前端:热部署、美观人性化、兼容性强、响应块。
  • 如何提速:
    • redis:减少io多用内存
    • ngnix:多用高性能服务器能压榨cpu
    • netty:一种非阻塞io技术,广泛应用于应用服务器
    • 前后端分离:并行网络请求少等待延迟。
    • 把逻辑处理交给客户机:安全低但是省去网络传输延迟和分担服务器压力到客户机。广泛应用在游戏、工控。
    • 把逻辑处理交给服务器:对网络要求极高,云计算趋势,现有的应用有云游戏、云渲染。

 


1.前端

  • 前端服务器:只用ngnix,分担后端服务器编译出dom页面的cpu和内存压力、加载图片视频的io压力。
    • apache:十年前在用,但只支持静态网页。
    • ngnix:基于c开发。目前主流,对硬件压榨能力极强。

 

  • 浏览器
    • chrome(Google):webkit+v8引擎,基于chormium。性能巅峰
    • firefox(Mozilla):浏览器元老,内核不一样是Gecko。
    • edge(microsoft):新起之秀,ie的替代品。
    • safari(webkit渲染内核):需要单独做样式
    • 国产:uc、qq、夸克。特点是内核无改变、主攻移动端、推出资讯、网盘、文档处理工具等附加模块。

 

  • 前端技术分析
    • ngnix速度快多了
    • ssr Server-Side Rendering:node.js可再次分担浏览器渲染压力,提升seo排名。
      • 在为你的应用使用 SSR 之前,你首先应该问自己是否真的需要它。这主要取决于首屏加载速度对应用的重要程度。例如,如果你正在开发一个内部的管理面板,初始加载时的那额外几百毫秒对你来说并不重要,这种情况下使用 SSR 就没有太多必要了。然而,在内容展示速度极其重要的场景下,SSR 可以尽可能地帮你实现最优的初始加载性能。
    • vue(2015-2019-2020):轻量级框架,组件式开发,配合elementui、axios飞速上手业务代码。
    • react(Netflix)(2013-2022):纯js方式构建页面,jsx,虚拟dom开创者,适合构建大型项目。
    • 小程序:由微信制定平台了接口、内容审核规范
    • uniapp(2021):开发跨端应用,小程序开发。
    • react-native:编译原生安卓应用。
    • fluter:谷歌推的dart表现层语言,谷歌对接了其他所有端的内核层开发。
    • electron:运行一个Chromium渲染环境+nodejs操作系统环境,在此基础上构建出桌面页面。

2.后端

  • Windows server:付费。跑iis服务器,支持.net环境和asp。

 

  • linux
    • ngnix服务器支持静态资源和php
    • Apache服务器支持php
    • Tomcat服务器支持java
    • Jboss:企业级java服务器
  • oss:静态资源存储源站
  • cdn:静态资源托管和分发,分担服务器压力同时,加速(网络快,0拷贝)。
    • 配置:购买流量包——访问的域名——源站ip(或静态资源oss)
  • 后端的技术分析
    • mvc
      • view层:即传统的jsp、asp、php、cshtml动态页面,进阶的blazor组件页面。
      • controller层:即控制器层,完成业务逻辑的调用和数据的封装返回
        • service层:解耦,复用业务逻辑VO、DTO、原生表Model。
        • adapt适配器:提供json自动封装,自己封装RESULTVO。
        • view resolve视图解析器:提供动态页面的编译。
      • model层:即dao层,完成对数据库的直接语句操作,返回对象或布尔,并需要事务支持。
        • basedao/Dbhelper:封装对数据库的连接池管理。
        • mapper.xml:封装sql语句,只接受参数。封装orm映射。
    • jsp(oracle):tomcat是一个性能瓶颈,他编译页面会提高服务器cpu和内存压力,同时速度不够快(虚拟机)。
    • asp(microsoft):性能强于jsp,但差不多,且生态绑定严重。
    • ngnix负载均衡:充分利用多服务器硬件资源解决高并发高可用问题。但仍然产生大量内存和cpu浪费。
    • 微服务:解决tomcat复制以后多出来很多无用服务占用内存的问题,还是解决高可用高并发
      • 开发解耦:单模块的拓展更容易、负载均衡能有针对性。
      • 负载均衡的副作用:数据库本地事务失效、微服务本地锁失效、会话失效、微服务的会话同步(jwt)、
    • 中间件:
      • redis:提高内存利用率,提高数据库访问速度
      • mq:提高并发性,常用于订单处理、秒杀,实现业务解耦,提高响应速度
      • elasticsearch:存储文档(模糊搜索、键值对),提高搜索速度
    • Nio
      • 比较差的:同步、两段复制到用户空间、直接io
      • 好的:直接内存映射、异步。
    • golang(google)
      • 吃java市场,垃圾回收,性能高,开源。
      • 目前应用:web框架gin、中间件。

 


二.桌面端(cs架构,web1.0)

0.前言

后端是可以通用的,但终端用户分为四大阵营(浏览器、桌面应用、移动应用、嵌入式设备)

  • 终端:
    • 性能要求:生产工具(渲染引擎)>桌面游戏(GPU)>移动游戏(GPU)>桌面应用>移动应用>浏览器、chromium跨平台应用>嵌入式应用
    • 钱的要求:10k+>6K>2K=2K>1K>?

 

1.windows

  • C++图形开发:性能最高。
    • mfc、qt:性能最快,但c++开发难度大。最主要是生态极差。
    • unity:涉及底层库开发,难
    • ue4:生态同unity一样好,面向3d游戏(难)
  • .net框架C#:支持游戏桌面应用
    • winform:性能中,但是开发更易
    • unity:需要引擎,引擎强大,2d易上手。
    • wpf:mvvm模式,开发难度略大,用的是direct引擎
  • java:需要装虚拟机、jre
    • swing包开发:开发难度大、性能不如原生、组件落后。
    • 应用:某211的签到系统、finalshell

 

  • 跨端
    • electron:性能不如原生,但够用,界面美观度无敌。
    • fluter:性能接近原生,移动端跨平台首选,吊打uniapp。
    • uniapp:生态成熟,可兼容vant等组件库。但是不如fluter原生ui美观。
    • react native:国内不受欢迎,有ant组件库。对前端程序员要求较高。

 

 

  • 后端:两种模式
    • 在本地直连数据库:后端逻辑基于事件在客户端执行,安全风险大、维护成本高,但是性能足。
    • 服务器通信:需要用json作为通信方式,安全性高,开发难度大。Android和商业级Windows软件常用。
      • c++:cgi程序,常见于游戏服务器,运行于apache服务器之上,只发json(游戏封包)性能高。

2.linux

  • 现状:客户端生态小,用户极少,有一个特例是安卓,但权限管理也混乱。某些手机谷歌框架的缺失导致标准无法建立。
  • Android:需求少,原生开发越来越内卷
    • 普通软件开发:四大组件和应用层服务调用搭配常用网络框架。
    • 音视频开发:需要调用底层库JNI,以及图形学、音视频编码等知识。
    • Kotlin:google为了版权因素而专用的编译器和语言,一样是生成字节码文件。
    • 和传统桌面开发对比:一样是事件驱动模式,架构差不多都是布局-观察控制器的模式。但Android更加解耦并增加了事件种类、动画效果。

3.ios

  • 现状:应用权限申请极为严格,存在统一标准(AppStore)和审查机制。
  • swift:代替object-c成为开发首选。

 


 

三.需求分析(项目)

  • 需求分析:需要功能模块图、总体流程图
  • 总体设计:el图、包设计图、技术架构图、uml的总体状态图、uml的总体用例图
  • 详细设计:数据库逻辑设计、数据库物理设计、uml的活动图、uml的详细用例图、uml时序图(数据流图)
  • 编码开发:实际使用的工具类、重用性高的接口、类设计、上下层解耦。
  • 测试:参数检查、用例测试、压力测试、操作指引文档
  • 故障:硬件、网络、改数据库、查内存删资料、

 

1.企业内网开发

  • 技术选型
    • 首选C#的winform、WPF(开发简单快,可监控后台数据)。数据库Mysql
    • 次选electron或qt。数据库SQL server。
    • 采用web的b/s架构也行,看跑的环境有无要求;调用api能力如何。

 

  • ERP&OA:详情看下一篇文章分析。
  • MES:详情看下一篇文章分析。
  • APS:详情看下一篇文章分析。

 

 

2.工具软件开发

  • 原则必用c++、c#库,因为可能用到通信协议如RFID、蓝牙、nfc。

 

  • 上位机
    • 基于通信协议和其他硬件设备的控制系统。
    • 高级:含有算法部分,带有运动控制和建模分析。

 

  • 音视频处理:图像检测、修改
    • 美颜软件:bili、抖音等都有
    • 播放器
      • moboPlayer
    • 直播功能:ffmpeg

 

  • 练手为主
    • 小程序游戏:H5的webGL开发、后台java。
    • 音乐播放器:前端玩组件、安卓玩组件。
    • 云盘:不懂
      • 超星云盘
    • 浏览器:前端的识别、对象、网络内容。
      • 油猴:没写过,主要是自动刷视频赚广告费。
      • 插件开发:接触过,主要是原生js去写,Chrome开放了很多api。

 

  • 实况通讯:
    • telegram:权限管理、内容检索
    • 小程序:用uniapp api和云数据库

 

  • 外挂:逆向分析,单机、网络慎重
    • ce

 

3.企业OA开发

  • 技术选型:首选Sass成本低、部署快、容易维护,次选Iass

 

  • 员工考勤系统:基于Android移动设备
    • 需要记录考勤时间,总计天数时长。
    • 超时判定、后台修改、人数统计、地点方式限定。

 

  • 财务系统:基于开销成本和营收

 

4.商业软件开发(互联网)

  • 技术选型:首选b/s架构,开发易,多端应用。
    • 后端:三高,支撑足够多用户群。大数据
    • 前端:美观,组件开发快,保证上线速度。

 

  • 教育:文化周边、功能付费、知识选购、直播视频互动。
    • 中公:职业培训领域
    • 猿题库:ocr+题库、应试培训领域
    • 慕课网:笔记系统、与高校对接的课程资源。
    • 作业帮:传统的付费看答案模式

 

  • 通信:增值业务、多平台模块
    • 三大运营商:售卖通信服务

 

  • 金融
    • 理财:数据可视化、平台对接。
    • p2p借贷:已弃用。
    • 银行:数据加密、高并发、数据一致性、系统架构设计。

 

  • 电商:b2c、大数据营销系统、元宇宙、社区、物流、金融绑定

 

  • 视频内容:
    • 版权影视:完善的付费和广告系统
      • 爱奇艺:拥有自创平台
      • 芒果tv:背靠湖南娱乐资源
    • 视频创作
      • youtube:极高质量创作者、背靠Google广告体系、大数据
      • bilibili:文化周边、大数据、付费服务业务,一众优秀的中文创作者(目前在娱乐鬼畜和地理历史和数码计算机领域)
    • 直播:元宇宙、推流技术、礼物系统、pw系统
      • huya:游戏板块
    • 盗版影视:必须精通广告嵌入以及引流技术
      • 套壳影视网站:需要掌握seo技巧和基础运维
      • 资源网站:精通资源加密、文章引流技术
    • 短视频:完整的大数据算法、2400*1080p创作
      • 抖音:背靠电商
      • 快手:独家创作者
    • nsfw:同版权影视部分,需要强大的数据库、高带宽高并发。
      • 某1:反爬虫、隐私版权问题、内容审查
      • 某board:纯靠广告、多半转入付费模式
      • 某pan:服务器和网络成本高。
      • 某msf:靠广告、

 

  • 社交
    • 博客:基于用户、话题、内容检索的内容创作与浏览
      • wordpress:个人博客,完善的文章编写和内容管理体验和强大的插件功能。
      • twitter:强大的组件交互、简洁的页面,拥有众多高质量用户。
      • weibo:偏日常化、微型化的创作。中文互联网言论的缩影
      • 小红书:基于图片的娱乐消费领域的创作。
      • instagram:基于图片的娱乐日常创作。
    • 论坛:基于共同领域的内容创作与浏览
      • reddict:卡片式内容浏览,并支持长文章创作。
      • tiebe:庞大的社区文化
      • 其他小众社区:kr、
    • 问答式社区:基于问答和长文章创作。
      • 知乎:开创知识付费体系,消费咨询、职场话题的首选。
    • 熟人社区:QQ空间、微信朋友圈

 

  • 粉丝付费
    • fanza:
    • onlyfans:基于高质量创作者

 

  • 交通:o2o模式,多用户、大数据、队列。
    • 物流:
      • 货拉拉
      • 跑腿
    • 打车:
      • 哈喽
      • 滴滴
    • 外卖:
      • 美团
      • 饿了没

 

  • 面向开发者:
    • 培训:收藏夹的培训机构公司
    • 社区平台:博客园、csdn、gin-vue、
    • 开发工具:uniapp、
    • 开发插件:vscode插件(TS)、

5.区块链(web3.0)

  • 元宇宙:虚拟货币+虚拟形象+数据开放+个人创作。
    • 核心:3d建模、社交性、信息流通度
    • 技术核心:虚幻引擎、unity
    • 例子:soul、淘宝人生

发表评论 取消回复
表情 图片 链接 代码

分享