# 服務架構
* * * * *
**什么是服務?**
在計算機領域中服務這個詞應用非常廣泛,比如操作系統里面的服務,比如分布式架構中的服務,再比如不同語言或框架對服務的解釋也是有一定的出入。
咱們百度一下 服務 是啥意思, [釋義] 履行職務,為大家做事
那么服務在OneBase中的意義就是跟這個示意差不多啦 ^_^。
在OneBase中建議將可能需要擴展的一組功能封裝為服務, 就比如 支付服務,里面包含支付寶,微信 等,研發者可以擴展自己需要的支付。再比如短信服務,里面包含 阿里大魚 等 短信發送方式,研發者可以擴展自己需要的短信平臺。
服務封裝的場景很多,就是咱們服務里面有很多服務提供商的情況下,像云存儲,里面的服務提供商有 七牛,又拍云,阿里OSS 等,這樣說相信大家更容易理解。
那么省市縣三級聯動插件 為什么不封裝為服務呢?
因為省市縣三級聯動沒有服務提供商,網上各種代碼實現的效果也都是大同小異,最主要的是 三級聯動功能咱們不需要進行橫向擴展,頂多也就是將數據表中的城市信息更新一下,所以咱們就將ta封裝成插件,方便復用就好咯。
* * * * *
**什么是驅動?**

上圖中的driver目錄是TP5的驅動,OneBase的驅動是參考TP5的驅動設計的,如下圖。

這樣就很容易理解了吧,在OneBase里面 這些服務的提供者就是驅動,比如支付寶,比如七牛云 就是OneBase中的服務驅動,支付能力,云存儲能力 就是 OneBase中的服務。
Driver.php 中定義了該服務下所有驅動的對外統一接口,這樣研發者就只需要關注怎么實現驅動接口就好,以后新增一個支付服務驅動 比如 銀聯支付,只需要 實現 支付通知,獲取訂單 等接口方法就OK了,這樣咱們驅動內部具體實現代碼不管有多大變化 ,業務邏輯不管有多復雜,對上層提供統一調用方式,上層使用上毫無影響。
這算是在項目實戰中使用多態的一種方式,希望童鞋們可以掌握。

- 序言
- 基礎
- 安裝環境
- 安裝演示
- 規范
- 目錄
- 介紹
- 后臺介紹
- 后臺首頁
- 會員管理
- 系統管理
- 系統設置與配置管理
- 菜單管理
- 系統回收站
- 服務管理
- 插件管理
- 文章管理
- 接口管理
- 優化維護
- SEO管理
- 數據庫
- 文件清理
- 行為日志
- 執行記錄
- 統計分析
- 接口介紹
- 接口文檔
- 錯誤碼設計
- Token介紹
- 前臺介紹
- 架構
- 架構總覽
- 生命周期
- 入口文件
- 模塊設計
- 依賴注入
- 控制器架構
- 邏輯架構
- 驗證架構
- 服務架構
- 模型架構
- 行為架構
- 插件架構
- 配置
- 配置介紹
- 配置加載
- 配置擴展
- 請求
- 請求信息
- 日志
- 后臺行為日志
- 系統執行日志
- 框架日志
- 數據
- 數據庫設計
- 數據字典
- 數據庫操作
- 事務控制
- 混合操作
- 實戰
- 控制器
- 邏輯與驗證
- 視圖與模型
- 插件研發
- 服務研發
- 接口研發
- 雜項
- 數據導入導出
- 二維碼條形碼
- 郵件發送
- 云存儲服務
- 支付服務
- 短信服務
- 微信分享
- 生成海報
- 聊天室
- PJAX
- Demo
- Widget
- 附錄
- 常量參考
- 配置參考
- 函數參考
- 進階
- Redis
- 自動緩存
- 全自動緩存
- 索引
- 數據簽名
- 全自動事務
- 隊列