約定新專案的搭建流程
對於個人而言,專案檔案結構我比較關心,一方面我能熟練操作各塊資料夾,當需要改動時,能夠立馬進入到相應資料夾進行修改,另一方面,有新的成員後,能夠看到專案檔案結構,可以快速適應到環境中來,參照了一些名氣很高的框架如Abp,EshopOnContainers等,也從中提煉一些專案檔案結構,來約定好自己的搭建習慣,或許不是每個人的預期想法,也或許感覺我的專案檔案結構很怪,不要感到奇怪,畢竟沒有一勞永逸的事情,每件事情都在動態發展中(強力甩鍋)。
一、約定專案檔案結構
預期專案檔案結構如下,約定之後,或許我的每一個demo都會遵從如下的結構來設計,如果說開發過程中發現有些問題,也將慢慢調整,參照了Abp來設計,但是隻是用到裡面最深的那一級,對於大小專案而言,能夠先在標準化的道路上走,才有可能實現超車或起飛,因此先跑起來。
結構說明:
對於docker資料夾,目標是使用到其中的docker compose相關的一些檔案,如使用docker-compose.yaml再加一個.yaml檔案組合使用用來構建多個服務所需要的映象,同時使用docker-compose.yaml再加一個service.yaml來構建服務,在docker中可以通過docker stack deploy來啟動多個服務,同樣在k8s中也是使用的相應的.yaml檔案。
對於src資料夾,主要是用來放專案相關的,如介面或是mvc之類的應用程式及其相關的類庫等,對於對外服務的應用程式,每一箇中都指定了Dockerfile,這個Dockerfile檔案無需手動配置,雖然也可以錦上添花,但我覺得用VS生成的已滿足我的需求了,然後約定expose的埠為80,雖然有了compose檔案後,這個埠指定與不指定已經意義不大了,畢竟優先順序有限。
對於test資料夾,針對測試人員或是開發人員好單獨管理單元測試或整合測試而單獨分割出來的一部分,方便管理。
對於tools資料夾,針對運維人員執行資料庫的遷移準備的,至於可能有更多的其他輔助類的專案加入進來也是有可能的,比如監控工具等。
對於其他檔案,對於整個專案權重不佔比太大,故不再提及。
二、搭建一個標準化專案
首先重申下這句話,對於專案搭建按照標準化的流程去設計,不管專案多大,按照固定標準化去設計,規避一些錯誤,使得針對專案開發的速度提高。
或許每個人的搭建方式都會不一樣,按照我的習慣來搭建會是如下過程:
1、首先在碼雲或是GitHub中先建好一個倉庫,並克隆倉庫到本地;
2、其次,新建一個空白解決方案,這是很重要的一環,不要先建設Web然後再來改解決方案名字,會出現適得其反的效果;
3、在空白方案下新建解決方案資料夾src和test的資料夾,建完後直接檢視資料夾內發現並沒有生成資料夾;
4、然後在解決方案中選中src資料夾,右鍵新增專案,選中Asp.Net Core應用程式,取完應用程式名字,對預設路徑做修改,在尾巴上加上\src,將其放置在src資料夾下,選擇完畢後,應用程式加入,相應的資料夾下也出現了src資料夾,同樣test資料夾也是如此;
注意:雖然在解決方案下新增也可以指定檔案存放路徑,同樣在相應的資料夾內,但是生成的應用程式是在解決方案下,需要手動拖入,為避免這一煩擾,最好使用固定流程,先建立資料夾,然後再資料夾內選擇新建專案,這樣一來生成的應用程式將直接是處於該資料夾下,標準化軟體開發設計必備的資料夾,具體的app專案和類庫分別建設到這兩個資料夾下;
5、其次,在src和test資料夾同級建立docker資料夾,不將其引用到解決方案中,避免在window下除錯,docker資料夾中應包含整個解決方案的docker compose相關的指令碼資訊,如有必要可以在docker下在建立mvc資料夾,在其中放置指令碼,當有多個版本出現時,可以用來區分,但是為了標準化來講,如果這麼做了,在Jenkins構建指令碼時得注意資料夾路徑(我不會選擇分成多個資料夾),建議是可以分成多個.yaml,取成不同名字來處理映象和服務。
6、選擇Web.MVC或Web.Host點選右鍵新增Docker支援,加入Dockerfile檔案,內部原有埠改為80埠,如果有埠需求可以改為其他,預設的話就統一約定為80埠;
7、對於docker檔案加入.yaml檔案,點解決方案選擇新增容器業務流程協調程式支援,選擇Docker Compose,加入到指定資料夾中,(本地我沒有這個項,我是採用手工方式直接加入到docker資料夾中,很low)。
8、對於docker-compose.yaml中針對映象生成的部分,按照現在的搭建流程來將,其中的build引數的相關資訊得指定成如下所示,注意不要在.yaml檔案中使用Tab按鍵:
build: context: ../ dockerfile: src/Surround.Web.Host/Dockerfile
路徑說明:context的路徑指定為本yaml檔案上兩級,為專案資料夾,然後指定為src下具體程式然後專案內Dockerfile。
最後,再次重申這句話:對於專案搭建按照標準化的流程去設計,不管專案多大,按照固定標準化去設計,規避一些錯誤,使得針對專案開發的速度提高。
本文地址: ofollow,noindex">https://www.cnblogs.com/CKExp/p/9940457.html
歡迎關注微信訂閱號,有新的文章將同步到訂閱號中
2018-11-27,望技術有成後能回來看見自己的腳步