傳統的項目的后端模塊定義結構通常是mvc架構,很清晰的分離出來了業務層C,數據層M,展示層V。同時因為模塊分離導致互相調用數據需要了解各個模塊的功能,而且使得互相調用變的復雜,通過分離出來一個單獨提供服務的模塊,業務層需要的數據可以在服務層做好業務處理,返回給調用方,這樣結構更加清晰。
給出一個結構如下:(注意服務層service)
├── Console
│ ├── Commands
│ │ ├── Data.php
│ │ └── SyncData.php
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ │ ├── Api
│ │ │ ├── UserController.php
│ │ ├── Auth
│ │ │ ├── LoginController.php
│ │ ├── Controller.php
│ │ └── IndexController.php
│ ├── Kernel.php
│ └── Middleware
│ ├── EncryptCookies.php
│ ├── RedirectIfAuthenticated.php
│ ├── TrimStrings.php
│ └── VerifyCsrfToken.php
├── Jobs
│ ├── Programs.php
├── Listeners
│ └── Listener.php
├── Models
│ └── Version.php
├── Providers
│ ├── AiServiceProvider.php
├── Rpc
│ ├── RpcBase.php
│ ├── RpcClient.php
│ └── RpcServer.php
├── Services
│ ├── CommonService.php
│ ├── ConfService.php
│ ├── RPC
│ │ ├── RpcServerService.php
│ │ └── RpcClientService.php
│ ├── RedisService.php
│ ├── CacheService.php
│ └── order.txt
├── Traits
│ ├── AliPay.php
│ ├── CalculateGpa.php
│ ├── CalculateLuggage.php
│ ├── Esearch.php
│ ├── FlightWare.php
│ ├── GoogleMap.php
│ ├── OssClient.php
│ ├── SendSms.php
│ ├── VideoStreaming.php
│ ├── WechatPay.php
│ └── YahooWeather.php
└── helpers.php
單獨分離出來服務層,好處如下:
- 服務層完成業務的處理;
- 控制器做業務轉發和參數獲取,模板調用,渲染。
- model層做數據獲取,各個model層做關聯,rpc業務等
同時在文件目錄上又添加了Traits工具,做一些工具,服務單獨分離,容易管理。