久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

詳解Composer+Git怎么創建 “服務類庫”

本文由composer教程欄目給大家介紹Composer 怎么結合 Git 來創建 “服務類庫”,希望對需要的朋友有所幫助!

導語

我一直認為,現在的 PHP 已經進展到了工程化的領域。以前的 PHP 開發者,以快為美,速度和規模永遠都是矛盾體。現在的 PHP 項目,特別是稍微大型一點的項目中,已經在逐漸演化成為需要兼顧工程化和規模化的層次了。一個代碼工程化,就意味著演化為逐漸復雜的架構。復雜的架構,微服務往往就是一個很好的選擇。

我在最近的一個項目中,就需要這個問題。我需要開發一個地圖服務,這個服務當然不是簡單的類庫形式,而是有自己的數據庫,自己的服務接口。這種情況其實最優的選擇就是服務化。服務化的方式當然有很多了,Thrift,Http 等。但是我評估了下當前的部門環境,PHP 是主流的語言,加上自己這個項目的進度也比較緊,在我眼中,Thrift,Http 等方式都是使用網絡協議實現服務的解耦合,這在我看來已經是重度解決方案了。我覺得在項目沒有明確清晰病入膏肓的情況下是沒有必要這種方式的。使用網絡協議服務化的劣勢在于引入了強大的復雜度。這個復雜度往往意味著人力,物力,時間上的投入。所以我希望,能夠提供一個 PHP 語言的 “服務類庫” 的形式進行開發。

我想到的就是 PHP 的 Composer。

Composer 的修改

創建服務類庫

首先,我需要把我的 “服務類庫” 從我的應用程序(起名為 xxx/main1)中獨立出來,這個獨立,我不是選擇在應用程序中創建一個目錄(事實我想過創建一個諸如 Services 的目錄)。但是,如果和業務程序在代碼上耦合起來,我覺得以人的惰性,很難從始至終都控制住自己能堅持不使用應用程序中方便的各種函數。所以我的選擇是在 Git 庫中新創建一個項目,起名為 xxx/mapService 。

composer.json

現在兩個 Git 項目(xxx/main1 和 xxx/mapService),我在 main1 中的 composer.json 文件中增加下面的語句:

詳解Composer+Git怎么創建 “服務類庫”

而在 mapService 的 composer.json 如下:

詳解Composer+Git怎么創建 “服務類庫”

這個配置告訴 main1 項目,mapService 的 Git地址,需要使用的版本。

當然需要注意下面幾點:

  • dev-master 意思是直接使用 mapService 的master分支。如果 mapService 有其他的 tag,這里完全可以使用 tag 信息
  • repositories 是說明項目的地址
  • 我這里的這個服務是放在我們公司自己搭建的 GitLab 上的
  • mapService 下面的 src 文件夾的命名空間為 xxxx\xxxx\MapService\ 并且支持 PSR-4
  • mapService 使用了 illuminate/database

最后使用 composer update -vvv 可以把我們需要的 mapService 下載下來放在 vendor 目錄下。

更新修改

我們現在編輯器在 main1 項目中,如果我們有對 mapService 這個項目有進行編輯修改,并且希望合并到 mapService 的 master 分支的化,就直接進入 vender/xxx/mapService 目錄,進行 Git 對應的操作。這樣就可以進行直接的代碼修改了。

獨立配置

這種結構的組合方式只是完成了萬里長征的第一步。后續更為重要的是在編寫這個服務的時候,我需要時刻記住不使用 main1 的所有東西,這樣才能保持 mapService 的獨立性(獨立性是服務化的必要條件之一)。比如我第一個遇到的問題就是配置文件需要獨立。

我的實現方式是直接在 mapService 中創建一個 Config 類,這個類中直接寫死配置。

這里一直覺得這個配置文件的實現方式有點挫,因為這樣,這個配置文件就進入到了 Git庫。但是確實沒有想到更好的方案了。Laravel 中有通過實現 ServiceProvider 將 Config 創建在 Laravel 的config 文件夾下的方式,但是這種方式僅僅只適用于 Laravel。沒有通用性。在另外一個方向,我想服務使用哪個數據庫這個本身也是服務的一部分,放在服務的 Git 庫中貌似也沒有什么。

目錄結構

詳解Composer+Git怎么創建 “服務類庫”

目錄結構如上

  • Configs 提供配置文件
  • Contracts 提供接口協議
  • Exceptions 提供異常
  • Supports 提供第三方方法或者類庫
  • Models 提供對數據庫的交互
  • Node.php 實現具體的接口

服務最重要的事情是接口協議。所以創建一個Contracts文件夾,將提供的服務接口化。

詳解Composer+Git怎么創建 “服務類庫”

接口的異常處理盡量使用異常,而不是錯誤碼的方式進行交互。而且這些異常盡量要自定義。這樣,在上層就有了統一處理的可能性。

思考

這個架構模式我定位為 PHP 代碼層面服務化的模式。適用的場景應該是:

  • 后期計劃服務化
  • 前期人力和思維都希望維持快速開發的場景

和 Git 的 SubTree 、SubModule 的區別

其實這三種方式說到底都是將一個項目作為另外一個項目的類庫來使用的。SubTree 和 SubModule 是 Git 的解決方案。而 Composer 是 PHP 語言的解決方案,它除了將某個項目加入到另外一個項目的功能之外,還提供了加入版本,依賴解決等方案。如果你的項目是 PHP 的,那么無疑,使用 Composer 是更優的選擇。

后期協議服務化

如果后期我的這個 mapService 想要協議服務化,那么這個 mapService 項目就可以簡化成為一個SDK,對于上層業務邏輯,只需要使用 composer update 進行更新就行。

服務注冊和發現

我這里所謂的 “服務類庫” 確實沒有解決服務注冊的問題,我無法知道到底有幾個項目使用了我的服務。這個可能需要額外的流程的工作了。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
久久久久久夜| 亚洲尤物在线| 久久精品99国产国产精| 91精品啪在线观看国产18| 精品一二三区| 久久精品国产精品亚洲毛片| 久久国内精品| 国产精品成人自拍| 久久精品九色| 色综合五月天| 亚洲成人va| 精品一区在线| 性一交一乱一区二区洋洋av| 免费黄网站欧美| 亚洲人亚洲人色久| 日韩精品久久久久久久软件91| 亚洲精一区二区三区| 日韩视频在线一区二区三区| 久久久9色精品国产一区二区三区| 播放一区二区| 欧美女激情福利| 亚洲日本久久| 国产亚洲电影| 成人三级高清视频在线看| 美女网站视频一区| 亚洲一区观看| 奇米色欧美一区二区三区| 中文av在线全新| 在线国产精品一区| 亚洲激情中文| 蜜桃av一区| 日韩高清三区| 久久91视频| 欧美国产偷国产精品三区| 久久国产小视频| 综合国产视频| 国产精品久久久一区二区| 成人午夜亚洲| 极品日韩av| 综合色就爱涩涩涩综合婷婷| 欧美日一区二区三区在线观看国产免| 久久99久久久精品欧美| 亚洲天堂一区二区| 老司机精品久久| 国产日韩一区二区三区在线| 激情国产在线| 视频一区二区中文字幕| 国产日韩视频在线| 国产成人77亚洲精品www| 黄色精品网站| 国产日韩中文在线中文字幕| 日韩精品久久久久久久电影99爱| 99国产精品视频免费观看一公开| 日韩成人精品一区二区三区 | 久久中文字幕av一区二区不卡| 日韩精品中文字幕一区二区| 国产精品欧美在线观看| 精品国模一区二区三区| 视频一区视频二区中文字幕| 国产精品免费99久久久| 国产综合激情| 久久av电影| 夜久久久久久| 精品国产欧美| 在线免费观看亚洲| 国产精品久久久久久久久妇女| 国产女优一区| 中文字幕高清在线播放| 日韩一区精品| 亚洲天堂黄色| 精品三级国产| 亚洲a级精品| 一区二区三区四区在线看| 日韩av资源网| 日韩午夜高潮| 中文在线а√天堂| 日本亚洲视频在线| 欧美成a人免费观看久久| 91成人在线| 丝袜a∨在线一区二区三区不卡| 久久影院午夜精品| 国产精品久久久久77777丨| 日韩中文字幕一区二区三区| 婷婷激情一区| 日韩专区视频网站| 亚洲一级少妇| 欧美资源在线| 夜鲁夜鲁夜鲁视频在线播放| 国产精品一区二区精品| 久久激情网站| 久久精品资源| 国产视频一区二| 亚洲精品精选| 国产亚洲一级| 亚洲福利专区| 日韩深夜视频| 国产一区二区三区探花| 红杏一区二区三区| 中文字幕一区二区av| 中文字幕一区日韩精品| 日韩精品高清不卡| 国产日韩欧美一区| 麻豆精品少妇| 久久久久久色| 日韩国产在线观看| 欧美日韩伊人| 国产精品2区| 福利一区二区| 日韩精品水蜜桃| 一区福利视频| 亚洲精选av| 国产日产精品_国产精品毛片 | 在线日韩一区| 欧美激情国产在线| 久久97视频| 国产精品.xx视频.xxtv| 日本不卡一二三区黄网| 日本不卡中文字幕| 日韩欧乱色一区二区三区在线| 亚洲视频国产精品| 亚洲日本三级| 青草国产精品| 国产精品videossex久久发布 | 欧美特黄视频| 99国产精品99久久久久久粉嫩| 合欧美一区二区三区| 欧美精品一线| 蜜桃久久久久久| 深夜福利一区| 国产精品美女在线观看直播| 久久久国产精品网站| 国产传媒在线| 亚洲天堂久久| 日韩精品一卡二卡三卡四卡无卡| 蜜臀精品久久久久久蜜臀| 亚洲精品免费观看| 欧美日韩中出| 久久亚洲道色| 国产a亚洲精品| 欧美xxxx中国| 99精品电影| 在线亚洲欧美| 亚洲一区区二区| 中文一区一区三区免费在线观| 在线看片日韩| 日韩高清三区| 麻豆国产欧美一区二区三区| 欧美韩日一区| 伊人成人在线视频| 日本不卡的三区四区五区| 国产精品成人3p一区二区三区| 高清日韩欧美| www.51av欧美视频| 激情五月色综合国产精品| 首页亚洲欧美制服丝腿| 青草国产精品久久久久久| 久久亚洲精精品中文字幕| 午夜久久中文| 美女网站久久| 欧美日韩亚洲一区在线观看| 美女性感视频久久| 99精品综合| 亚洲深夜福利在线观看| 国产精品亚洲人成在99www| 黑人精品一区| 亚洲一区二区动漫| 久久精品凹凸全集| 超碰在线99| 久久国产成人| 久久天堂影院| 亚洲成人三区| 欧美一区二区三区久久精品| 日本不卡免费高清视频在线| 老鸭窝毛片一区二区三区| 欧美精品97| 日韩精品乱码av一区二区| 欧美在线黄色| 国产精品高清一区二区| 99综合视频| 最新日韩欧美| 欧美日韩午夜| 韩国精品主播一区二区在线观看| 亚州av乱码久久精品蜜桃| 日韩av资源网| 久久久久91| 日韩av黄色在线| 久久国产小视频| 国产精品一在线观看| 在线成人直播| 欧美激情三区| 99视频精品| 免费看一区二区三区| 伊人久久亚洲美女图片| 欧美激情麻豆| 在线精品一区| 日韩欧美一区二区三区在线观看| 日韩精品免费一区二区夜夜嗨| 日韩高清欧美| 日本精品在线播放| 99精品视频在线观看免费播放|