<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Jackyfei

      如何做一個(gè)純凈版的ABP vNext 腳手架

      大家好,我是張飛洪,專注.NET開發(fā)十來(lái)年。感謝您的閱讀,我會(huì)不定期分享我的學(xué)習(xí)心得和職場(chǎng)經(jīng)驗(yàn),希望我的文章能成為你成長(zhǎng)路上的助力。讓我們一起精進(jìn),共同進(jìn)步。

      視頻

      今天想和分享的是如何基于一套自定義的模版,用來(lái)快速搭建項(xiàng)目的腳手架。

      1.各種搭建方式

      我們知道ABP 有提供了自己的腳手架搭建方式,有很多種方式,比如像下面這種操作:

      1.1命令行

      • 創(chuàng)建控制臺(tái)項(xiàng)目
      abp new Tota.Microservices -t console -o Tota.Microservices -v 9.3.0
      
      • 創(chuàng)建Module模板項(xiàng)目(Mysql+無(wú)界面)
      abp new Tota.Gdpr -t module --no-ui --dbms mysql -cs "Server=192.168.11.11;Port=3306;Database=JackfeiDb;Uid=root;Pwd=JackfeiDb;"  -v 9.3.0
      
      • 創(chuàng)建WebApi項(xiàng)目
      abp new Tota.File --no-ui -dbms mysql -cs "Server=192.168.11.11;Port=3306;Database=JackfeiDb;Uid=root;Pwd=JackfeiDb;"  --separate-auth-server -v 9.3.0
      

      1.2第三方工具

      你也可以采用第三方工具,比如AbpHelper來(lái)快速搭建,比如下面這種操作:
      image

      1.3官網(wǎng)

      還有一種,就是你到官網(wǎng)配置并下載

      image

      1.4其他

      當(dāng)然,還有其他方式,比如基于老項(xiàng)目進(jìn)行復(fù)制,采用abp studio進(jìn)行創(chuàng)建等等

      2.自定義搭建

      以上搭建方式十分方便,但是我想實(shí)現(xiàn)的是結(jié)合公司自己的規(guī)范,希望腳手架能夠包含更多自己的最佳實(shí)踐,比如:

      2.1每個(gè)類都有完整的注釋

      /// <summary>
      /// 數(shù)據(jù)集應(yīng)用服務(wù)
      /// <para>版 權(quán):藍(lán)略數(shù)字科技有限公司(https://www.lanlue.cn)</para>
      /// <para>作 者:張飛洪</para>
      /// </summary>
      public class DataSetAppService : ApplicationService, IDataSetAppService
      

      2.2給每個(gè)接口增加注釋

      private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration)
      {
          context.Services.AddAbpSwaggerGenWithOAuth(
              configuration["AuthServer:Authority"]!,
              new Dictionary<string, string>
              {
                      {"DataIntegration", "DataIntegration API"}
              },
              options =>
              {
                  options.SwaggerDoc("v1", new OpenApiInfo { Title = "DataIntegration API", Version = "v1" });
                  options.DocInclusionPredicate((docName, description) => true);
                  options.CustomSchemaIds(type => type.FullName);
      
                  // 引入 XML 注釋文件
                  var xmlContractFile = $"Tota.DataIntegration.Application.Contracts.xml";
                  var xmlHttpApiFile = $"Tota.DataIntegration.HttpApi.xml";
                  if (File.Exists(Path.Combine(AppContext.BaseDirectory, xmlContractFile)))
                      options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Tota.DataIntegration.Application.Contracts.xml"));
                  if (File.Exists(Path.Combine(AppContext.BaseDirectory, xmlHttpApiFile)))
                      options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Tota.DataIntegration.HttpApi.xml"));
      
              });
      }
      

      2.3 給每個(gè)接口一個(gè)默認(rèn)模版,比如像下面這樣

      /// <summary>
      /// 創(chuàng)建連接器
      /// </summary>
      /// <param name="input">創(chuàng)建連接器入?yún)?lt;/param>
      /// <returns>創(chuàng)建后的連接器</returns>
      [HttpPost]
      public async Task<ConnectorOutput> CreateAsync([FromBody] CreateConnectorOutput input)
      {
          return await _connectorAppService.CreateAsync(input);
      }
      

      當(dāng)然還有很多可能你想要預(yù)先內(nèi)置的規(guī)范,這里不一一羅列了,重點(diǎn)來(lái)了,這里要怎么實(shí)現(xiàn)呢?

      3.如何實(shí)現(xiàn)

      3.1 準(zhǔn)備模版項(xiàng)目

      這個(gè)工作還是不可避免的,因?yàn)闆](méi)有人知道你的規(guī)范是什么,我這里簡(jiǎn)單介紹一下我們公司自己的規(guī)范,因?yàn)橐?guī)范很多,下面截圖只是冰山一角。
      比如 DDD 每層的規(guī)約:
      image

      又比如,DTO 內(nèi)部的規(guī)約:
      image
      這些規(guī)約是一個(gè)公司十分重要的規(guī)范,但是你如果只是讓新人看文檔,可能不是很有感覺,如果這些規(guī)范能內(nèi)置到腳手架里面,那就太好了。

      3.2 采用生成工具

      • 把我的模版項(xiàng)目和工具拷貝到你的目錄下,比如叫 src目錄:
        image

      • 輸入配置參數(shù)
        image

      這個(gè)時(shí)候,下面會(huì)多出一個(gè)項(xiàng)目文件
      image

      • 打開并運(yùn)行項(xiàng)目

      新生成項(xiàng)目目錄
      image
      image

      對(duì)比模版項(xiàng)目目錄
      image

      關(guān)于生成小工具,也放在我的知識(shí)星球當(dāng)中:

      posted @ 2025-08-20 09:09  張飛洪[廈門]  閱讀(985)  評(píng)論(4)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲成av人片天堂网老年人| 人妻精品动漫H无码中字| 人妻中文字幕精品系列| 亚洲熟妇精品一区二区| 国产亚洲一二三区精品| 久久a级片| 把女人弄爽大黄A大片片| 无码专区视频精品老司机| 猫咪AV成人永久网站在线观看| 国产超碰无码最新上传| 欧美、另类亚洲日本一区二区| 亚洲精品国产美女久久久| 国产熟女老阿姨毛片看爽爽| 婷婷久久香蕉五月综合加勒比| 99久久久无码国产精品免费| 淮阳县| 91久久亚洲综合精品成人| 久久精品国产福利一区二区| 7m精品福利视频导航| 国产成人精品性色av麻豆| 国产无码高清视频不卡| 蜜臀av性久久久久蜜臀aⅴ麻豆| 天天躁夜夜躁av天天爽| 成人国产精品中文字幕| 国产综合久久99久久| 国产 一区二区三区视频| 亚洲区福利视频免费看| 中国女人熟毛茸茸A毛片| 久久99久久99精品免视看国产成人| 亚洲精品福利一区二区三区蜜桃| 亚洲午夜性猛春交xxxx| 真人无码作爱免费视频| 99在线国内在线视频22| 日韩av综合免费在线| 最近高清中文在线字幕在线观看| 国产偷窥熟女高潮精品视频| 中文字幕日韩国产精品| 国产成人高清在线重口视频| 国产亚洲情侣一区二区无| 国产精品久久久一区二区| 天堂av资源在线免费|