既然已经来到全栈,无论是从前端到后端,还是从后端到前端,咱们应该都是有一定编程基础的,所以这个系列的风格将是短平快,比较少解释性的阐述,大多数问题使用代码来说明,尽量少废话。但是,第一章关于C#和TS/UTS语言的学习,会细碎一些,首要目标是覆盖到绝大多数知识点,其次才是尽量简明扼要。
一、技术栈选择
- **后端语言和框架:**C# + Furion(AspNetCore) + SqlSugar + PostgreSql + redis,同时借鉴ABP领域设计的思想和方法。如果需AI,可考虑使用SemanticKernel,本系列不涉及。
- **前端语言和框架:**JS/TS/UTS + uniapp/uniapp-x(vue) + unicloud,web端的组件库使用uni-ui、ElementPlus和vxe-table,小程序/APP端的组件库使用uni-ui和TMUI。uniapp开发的web,是单页面,只适合管理后台,如需高并发的TOC端web,可考虑使用nuxt.js,本系列不涉及;如需桌面端,可考虑使用electron,本系列不涉及。
- **部署:**使用nginx或YARP做负载均衡、跨域、HTTPS等;后端部署到Linux的Docker容器;数据库自行部署主从库或者租用服务商的云数据库(推荐,数据最重要);前端web部署到unicloud,前端小程序和APP部署到相应平台或中心;云存储、推送、短信、实人认证、手机一键登陆、RBAC等使用unicloud。
- **特别说明①:**UTS是uniapp-x使用的语言,在TS的基础上做了一些定制,另一个类似的是鸿蒙的ArkTS。相对于TS,即有约束、也有扩展,但语法层面的差异不大,注意,我说的是语法层面。TS是类型化的JS,本系列说语言时,JS和TS两者会混在一起。
- **特别说明②:**RBAC模块,使用了unicloud的uni-id,通过jwt和后端对接。主要原因有三:①AspNetCore的后端框架,对接支付、短信、推送、手机一键登陆、微信登陆等国内三方资源比较麻烦;②unicloud提供了完整的RBAC方案、简单的三方资源对接、以及配套的客户端操作API(页面、菜单和按钮权限);③unicloud挺好的,但是它使用serverless和MongoDB,对于企业应用,不建议将主业务逻辑和数据放在unicloud。AspNetCore+Unicloud,在系统的性能、扩展、经济性、易操作性和安全稳定方面,我觉得是当前比较务实的方案,如果你也像我一样喜欢C#的话。
二、技术栈选择的原因
- C#,优雅和简洁
- AspNetCore,性能
- Furion,轻量
- SqlSugar ,操作数据库的极爽感
- PostgreSql,性能、功能和开源的平衡
- unicloud,完整的RBAC和丰富的第三资源
- uniapp/uniapp-x,用vue开发web、小程序和APP。注:目前,uniapp-x开发APP还不够成熟,但它可能是未来跨Android、iOS、HarmonyOS的最好方案之一。未来uniapp和uniapp-x很可能合并,使uniapp以原生姿态跨web、小程序和APP。
三、内容规划
- 语言:C#和TS/UTS语言对比
- 前端:html、css和vue
- 前端:uniapp
- 前端:uniapp-x和UTS插件
- 中台:unicloud
- 后端:AspNetCore
- 后端:SqlSugar和EFCore
- 后端:Furion及其与unicloud的对接
- 部署:linux、docker和nginx
- 实操:1-2个全栈小项目