# MeEdu 服务化架构
## 初衷
MVC 是 PHP 开发当中流行了数十年的设计模式。但是,现如今,随着业务的复杂度的提高,传统的 MVC 架构已经无法有效的满足在保证代码清晰的同时,能够很好的
兼顾业务。基于此,延伸出了许多代码层面的架构和设计。比如说:引入 Service 的概念,将传统的 Model 与业务逻辑分开。这种代码层面的架构在许多的公司项目
中都有见到,但是随着业务复杂度的提高和需求的持续迭代,我们会发现,Service 层的代码越来越臃肿,变得难以维护!所以,聪明的 PHPer 开始尽可能的抽离Service
,划分好每个 Service 的职责范围。但是系统毕竟是由团队合作开发的,其中参与的每一个人都无法达到高度的思想统一!所以,一个项目维护时间长久之后,随着团队
人员的变动,后来者看到代码,脑子中只有一个词:“重构”!。
MeEdu 在设计之初,代码层面的架构其实也脱离不了 MVC 的范畴,你可以处处看到它的影子。作者在持续维护 MeEdu 的过程中,随着技术提升和视野的转变,对于系统
有了更深入的了解,于是决定对 MeEdu 进行一次变化较为彻底的重新架构设计:服务化设计!引入该设计的目的是使 MeEdu 的代码耦合度更低,更易于维护,单元测试
覆盖率更高!
## 目标
+ 代码耦合度更低
+ 业务职责划分更为彻底
+ 微服务架构设计,服务替换无感知
+ 达到更高的单元测试覆盖率
+ 让支持 MeEdu 的小伙伴花费最少的时间参与 MeEdu 的开发
## 服务列表
| 服务 | 说明 |
| --- | --- |
| `Base` | 系统底层服务,主要有:缓存,配置服务等 |
| `Member` | 会员服务,负责 MeEdu 系统的会员注册/登录/找回密码/会员等级等 |
| `Course` | 课程服务,主要提供课程/视频在线观看 |
| `Order` | 订单服务,主要提供课程/视频/会员的在线购买服务 |
| `Other` | 其它服务,主要是系统的一些小功能,包括像:上传,短信发送等 |
## 规则
+ 除了 `BaseSerice` 可以被其它服务任意调用之外,其余的服务之间**禁止**互相调用。
+ 单个服务内的 `Service` 可以互相调用。
+ 所有的服务都必须通过注入的方式使用。
+ 所有服务的返回值都必须为基础数据类型,如:数组,布尔值等。禁止返回诸如 Model对象,Collection对象等。
+ 应用其它层可以任意的调用各种服务。
+ 全局只可以使用 `Auth::id()` 和 `Auth::check()` 方法,禁止使用 `Auth::user()` 来获取当前登录用户,因为这个方法返回的是 `Model` 对象。
## 规则解释
+ 问:为什么禁止使用 `Auth::user()` 方法?
答:因为 `Auth::user()` 返回的是 `UserModel` 对象,该对象可以直接操作数据库!这是不允许的,所以的操作数据库行为都必须写在相应的 `Service` 里面。
+ 问:为什么服务方法必须返回基础数据类型?
答:微服务设计不仅仅要考虑到Laravel或者PHP开发的应用,也有可能还有其它的语言!因此,为了服务的通用性,服务方法必须返回基础数据类型。
执刀人的工具库
- 粉丝: 1456
- 资源: 1590
最新资源
- 西门子S7-300博途植物萃取饮料生产线控制系统程序案例,编程软件采用博途STEP7加博途WINCC RT Pro 内有CAD工艺流程图和PDF版电气图供参考 博图版本V15.1及以上
- 西门子S7-1200博图程序案例,具体为一个3轴伺服螺丝机程序,画面采用西门子KTP700组态,程序语言采用SCL,程序结构清晰,写法十分经典,参考价值高 ,打开版本TIA V14及以上
- 西门子PLC1200伺服库卡机器人12工位博图程序例程,组态采用昆仑通态触摸屏,详细中文注释,PDF电路图参考,设备操作说明,物料BOM ,PLC和一台库卡机器人profinet通讯 PTO模式控制
- 西门子PLC-PVC送料配料系统控制程序画面实例,结构采用S7-314C+Wincc 程序内容包括1.配料系统物料分配 2.模拟量转,监测压力,称重程序, 3.PROFI
- 合资品牌汽车尾翼组装线(sw16可编辑+工程图+bom)全套技术资料100%好用.zip
- 147-西门子S7-1200博图程序案例, PID 恒温恒压供冷却水程序.触摸屏画面TP1200组态 霍尼韦尔电动比例阀PID控制水温,与两台西门子v20变频器模拟量PID控制水压 包括程序和Ep
- No.943 基于S7-300 PLC和Wincc Flexible触摸屏温室大棚控制 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- FX5U程序框架模板(10轴) 程序由老工程师费尽心力的整理,把控制允许整理成简单的模板架构程序 程序讲解 1 轴的参数初始化 2 自动启动条件 3 安全条件(台湾称许可条件,这个可以避免运动打架
- 2022最新款程序,切条机切带机选用中达优控定长送料触摸屏一体机程序 三菱work2编辑软件,能用于超声切带和热切 配有触摸屏软件 送料方式可以自由选择,根据实际切长的用夹手加滚筒送料,切短的用滚
- 三相三电平PWM整流器闭环控制策略,采用三电平SVPWM算法
- 二极管箝位型三电平逆变器,NPC三电平逆变器 主要难点:三电平空间矢量调制(SVPWM),中点电位平衡调制等 MATLAB Simulink仿真模型,可提供参考文献
- 基于PLC的三部十层群控电梯,采用博途编写,提供程序,画面,接线图,设计报告,以及PPT,详情见图 需要的话,点击“加好友”和我加好友吧比心
- BootLoader IAP 上位机使用C#语言编程,下位机以STM32 系列为例,方便移植到其他厂家的MCU芯片,采用YModem协议传输文件 实现完成一键下载,含有上位机源码及MCU源码 企业
- 基于plc的污水处理厂控制系统,全部采用博途仿真完成,提供程序,画面,接线图.流程图,报告,PPT等相关文档 最终运行效果,详见上方演示视频
- fx5u 完整项目案例 包含触摸屏 ,6路脉冲控制 程序简单 适合新手学习
- Mitsubishi 三菱电机马达PMSM电机负载观测转矩前馈simulink 基于Luenberger降阶状态观测器,包含PMSM数学模型,PMSM双闭环PI矢量控制,并添加了前馈控制,采用SVP
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈