国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.Net Core 6 WebApi 項(xiàng)目搭建(二)

這篇具有很好參考價(jià)值的文章主要介紹了.Net Core 6 WebApi 項(xiàng)目搭建(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

書接上文,上文寫了個(gè)簡單的.net core api程序創(chuàng)建流程,今天來寫一下簡單項(xiàng)目搭建步驟。

一.Autofac反射程序集方式服務(wù)注冊(cè)

我們這里還是使用Autofac容器,具體使用教程可參考文章《.NET Core基礎(chǔ)知識(shí)-依賴注入(Autofac)》這篇文章介紹的比較詳細(xì)了。下面我說一下在.net core6里是怎么創(chuàng)建注入的。

1、Autofac在.net core6里依賴注入

1.1 先導(dǎo)入包

.Net Core 6 WebApi 項(xiàng)目搭建(二)

1.2 在Program中反射程序集方式服務(wù)注冊(cè)Autofac
#region Autofac程序集注入
//添加Autofac容器
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());



//builder.Host.ConfigureContainer<ContainerBuilder>(container => { container.RegisterType<LoginServices>().As<ILoginServices>(); });
//builder.Host.ConfigureContainer<ContainerBuilder>(container => { container.RegisterType<LoginRepositorys>().As<ILoginRepositorys>(); });
//.net core6 Autofac程序集掃描注入
Assembly service = Assembly.Load("Services");
Assembly repository = Assembly.Load("Repositorys");
builder.Host.ConfigureContainer<ContainerBuilder>(container =>
{
    container.RegisterAssemblyTypes(service, repository).Where(t => t.Name.EndsWith("Services"))
          .AsImplementedInterfaces();
});
builder.Host.ConfigureContainer<ContainerBuilder>(container =>
{
    container.RegisterAssemblyTypes(service, repository).Where(t => t.Name.EndsWith("Repositorys"))
    .AsImplementedInterfaces();
});
//早期.net core Autofac程序集掃描注入
//public void ConfigureContainer(ContainerBuilder builder)
//{
//    Assembly service = Assembly.Load("Services");
//    Assembly repository = Assembly.Load("Repository");
//    //containerBuilder.RegisterAssemblyTypes(service).AsImplementedInterfaces().InstancePerDependency();
//    builder.RegisterAssemblyTypes(service, repository).Where(t => t.Name.EndsWith("Service"))
//          .AsImplementedInterfaces();
//    builder.RegisterAssemblyTypes(service, repository).Where(t => t.Name.EndsWith("Repository"))
//    .AsImplementedInterfaces();
//}
#endregion

通過掃描程序集注入,我們可以達(dá)到避免一條一條注入的煩惱,這個(gè)功能也比較實(shí)用。

二.Freesql在.net core6中的使用

2.1 先導(dǎo)入包

.Net Core 6 WebApi 項(xiàng)目搭建(二)

2.1 在Program中依賴注入
#region Freesql注入

Func<IServiceProvider, IFreeSql> fsqlFactory = r =>
{

    IFreeSql fsql = new FreeSql.FreeSqlBuilder()
        .UseConnectionString(FreeSql.DataType.SqlServer, r.GetService<IConfiguration>()["ConnectionStrings:CloudDB"])
        .UseMonitorCommand(cmd => Console.WriteLine($"Sql:{cmd.CommandText}"))//監(jiān)聽SQL語句
        .UseAutoSyncStructure(true) //自動(dòng)同步實(shí)體結(jié)構(gòu)到數(shù)據(jù)庫,F(xiàn)reeSql不會(huì)掃描程序集,只有CRUD時(shí)才會(huì)生成表。
        .Build();
    return fsql;
};
builder.Services.AddSingleton<IFreeSql>(fsqlFactory);


#endregion

var app = builder.Build();

//在項(xiàng)目啟動(dòng)時(shí),從容器中獲取IFreeSql實(shí)例,并執(zhí)行一些操作:同步表,種子數(shù)據(jù),FluentAPI等
using (IServiceScope serviceScope = app.Services.CreateScope())
{
    var fsql = serviceScope.ServiceProvider.GetRequiredService<IFreeSql>();
    //fsql.CodeFirst.SyncStructure(typeof(Topic));//Topic 為要同步的實(shí)體類//同步實(shí)體類到數(shù)據(jù)庫
}

數(shù)據(jù)庫鏈接寫在了appsettings.json中,注入的話可以直接抄官方文檔

    Func<IServiceProvider, IFreeSql> fsql = r =>
    {
        IFreeSql fsql = new FreeSql.FreeSqlBuilder()
            .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=freedb.db")//@"Data Source=freedb.db"這里可以直接寫數(shù)據(jù)庫鏈接語句,如果想寫在appsettings.json中的話,可以看下上面我的那種寫法。
            .UseMonitorCommand(cmd => Console.WriteLine($"Sql:{cmd.CommandText}"))//監(jiān)聽SQL語句
            .UseAutoSyncStructure(true) //自動(dòng)同步實(shí)體結(jié)構(gòu)到數(shù)據(jù)庫,F(xiàn)reeSql不會(huì)掃描程序集,只有CRUD時(shí)才會(huì)生成表。
            .Build();
        return fsql;
    };
    services.AddSingleton<IFreeSql>(fsql);

三.架構(gòu)分成

.Net Core 6 WebApi 項(xiàng)目搭建(二)

3.1 Models層

這一層就是實(shí)體類,我這里使用的是Freesql,實(shí)體類配置可查閱官方文檔(也可以使用SQLSugar),這兩種我比較常用。

3.2 LoginRepositorys層

這一層是用于數(shù)據(jù)處理,里面分兩個(gè)文件夾,IRepositorys接口層和Repositorys實(shí)現(xiàn)層。具體用法如下:

//IRepositorys接口層
    public interface ILoginRepositorys
    {
        Task<int> Login(string Account,string Password);
    }
//Repositorys實(shí)現(xiàn)層
 public class LoginRepositorys : ILoginRepositorys
    {
        private readonly IFreeSql _fsql;
        public LoginRepositorys(IFreeSql fsql)
        {
            this._fsql = fsql;
        }
        //登錄查詢
        public async Task<int> Login(string Account, string Password)
        {
            var curd = (await _fsql.Select<UserInfo>().Where(x => x.Account == Account && x.Password == Password).ToListAsync()).Count();
            return curd;
        }
    }
3.3 Services層

這層就是來寫業(yè)務(wù)了,里面也是分兩個(gè)文件夾,IServices接口層和Services實(shí)現(xiàn)層。具體用法如下:

//IServices接口層
public interface ILoginServices
    {
        Task<int> Login(string Account, string Password);
    }
//Services實(shí)現(xiàn)層
public class LoginServices : ILoginServices
    {
        private readonly ILoginRepositorys _loginRepositorys;

        public LoginServices(ILoginRepositorys loginRepositorys)
        {
            this._loginRepositorys = loginRepositorys;
        }
        //登錄查詢
        public async Task<int> Login(string Account, string Password)
        {
            int Msg = 0;
            try
            {
                if (string.IsNullOrWhiteSpace(Account))
                {
                    throw new Exception("賬號(hào)不能為空!");
                }
                if (string.IsNullOrWhiteSpace(Password))
                {
                    throw new Exception("密碼不能為空!");
                }
                if (await _loginRepositorys.Login(Account,Password)> 0)
                {
                    Msg = 1;
                }
            }
            catch (Exception ex)
            {
                return Msg;
            }
            return Msg;
        }
    }

這里我們只需要做業(yè)務(wù)處理即可,如碼所示,當(dāng)我們處理業(yè)務(wù)時(shí)只需要調(diào)用LoginRepositorys層即可,這樣充分展現(xiàn)了高內(nèi)聚、低耦合的設(shè)計(jì),而且后期易于維護(hù),當(dāng)數(shù)據(jù)庫發(fā)生變化時(shí),只需要修改LoginRepositorys層,就不用修改業(yè)務(wù)層了。

3.4 控制器層(API層)
[Route("api/[controller]/[action]")]
    [ApiController]
    public class HomeController : ControllerBase
    {
        private readonly ILoginServices _loginServices;

        public HomeController(ILoginServices loginServices)
        {
            this._loginServices = loginServices;
        }
        [HttpGet]
        public string Word()
        {
            return "Hello Word!";
        }
        [HttpGet]
        public string Login(string account, string password)
        {
            string Meg = "我是測(cè)試!";
            if (account == "admin" && password == "123456")
            {
                Meg = "測(cè)試成功了!";
            }
            return Meg;
        }
        [HttpGet]
        public async Task<int> Logins(string Account, string Password)
        {
            //使用MD5加密
            string Passwords = MD5Helper.MD5Encrypt64(Password);
            return (await _loginServices.Login(Account, Passwords));
        }
    }

主要思想:前端—>控制器層(API層)—>Services層—>LoginRepositorys層
目前是寫了個(gè)比較簡單的框架搭建Demo,后續(xù)會(huì)繼續(xù)補(bǔ)充,也會(huì)繼續(xù)開發(fā)別的框架Demo,學(xué)無止境!文章來源地址http://www.zghlxwxcb.cn/news/detail-479037.html

到了這里,關(guān)于.Net Core 6 WebApi 項(xiàng)目搭建(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • asp.net core框架搭建1-搭建webapi,對(duì)數(shù)據(jù)增刪改查接口模板(附源碼)

    asp.net core框架搭建1-搭建webapi,對(duì)數(shù)據(jù)增刪改查接口模板(附源碼)

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131458922 asp.net core 框架搭建2-搭建webapi ,本文章介紹asp.net core webapi框架搭建,然后開發(fā)增刪改查和工具接口,將一步步帶著大家,實(shí)現(xiàn)目標(biāo)。所有操作過程將展現(xiàn)在本篇文章,下面咋們一起來實(shí)現(xiàn)它吧。 asp.ne

    2024年02月13日
    瀏覽(21)
  • .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問題解決

    .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問題解決

    之前做了一個(gè)WebAPI的項(xiàng)目,我在文章中寫到的是Docker方式部署,然后考慮到很多初學(xué)者用的是iis,下面講解下iis如何部署WebAPI項(xiàng)目。 iis ASPNETCoreModuleV2 重點(diǎn) .NET Core Runtime iis的配置這里就不講了,主要講解.NET Core項(xiàng)目部署之后Swagger無法訪問問題。 ASPNETCoreModuleV2 安裝: https:/

    2024年03月09日
    瀏覽(24)
  • 基于.NET6搭建WebAPI項(xiàng)目

    基于.NET6搭建WebAPI項(xiàng)目

    ?點(diǎn)擊運(yùn)行后自動(dòng)打開瀏覽器,看到如下信息: 系統(tǒng)啟動(dòng)日志如下: 此數(shù)據(jù)對(duì)用戶不友好。 nuget安裝? Microsoft.AspNetCore.Mvc.NewtonsoftJson ? 安裝成功: ?只需要在Program.cs 文件下添加幾行代碼 找到 builder.Services.AddControllers() ? 代碼如下: ?測(cè)試結(jié)果如下: 打開Xml文件生成,右鍵

    2023年04月08日
    瀏覽(19)
  • .Net Core WebApi

    目錄 MiniMalAPi Demo Program.cs Swagger 文檔+信息 Program.cs API版本控制 ApiVersion.cs Version1Controller.cs Program.cs 生成注釋 解決跨域 .Net 后臺(tái)請(qǐng)求封裝 返回?cái)?shù)據(jù)壓縮 默認(rèn)壓縮 Gzip壓縮 緩存 接口緩存 靜態(tài)文件緩存 最小的api, 請(qǐng)求都寫在Program.cs中, 可以做微服務(wù) 該例子僅供參考 這里其他版

    2024年02月14日
    瀏覽(38)
  • ASP.NET Core SingleR Core:WebApi + .net 客戶端開發(fā)

    ASP.NET Core SingleR Core:WebApi + .net 客戶端開發(fā)

    我之前稍微研究了一下SignalR Core。用起來還行。簡單來說SignalR就是用來解決實(shí)時(shí)通訊的問題的。 ASP.NET Core SingleR:初次體驗(yàn)和簡單項(xiàng)目搭建 SignalR支持三種客戶端,C#,Java,JavaScirpt?;緣蛴昧?。本身就是微軟開發(fā)的,肯定支持自己的語言。因?yàn)槭荳ebsocket的上層封裝,所以也要支

    2024年01月20日
    瀏覽(575)
  • .NET Core WebAPI 基礎(chǔ) 文件上傳

    .NET Core WebAPI 基礎(chǔ) 文件上傳

    昨天分享了一個(gè)在WebApi中如何接收參數(shù)的文章 傳送門,然后有新人小伙伴就問了,那文件上傳呢,這個(gè)怎么弄,借此我寫了一個(gè)小demo,分享給大家。 通常來說,上傳文件,我們是使用POST,還是老規(guī)矩先上代碼: 這是需要上傳的txt文件。 這里有一個(gè)需要注意的地方,就是上

    2024年02月11日
    瀏覽(20)
  • .NET Core WebAPI中封裝Swagger配置

    .NET Core WebAPI中封裝Swagger配置

    創(chuàng)建一個(gè)Utility/SwaggerExt文件夾,添加一個(gè)類 在SwaggerExt類中添加方法,將相關(guān)配置添寫入 調(diào)用封裝的方法

    2024年02月20日
    瀏覽(28)
  • .net 溫故知新【14】:Asp.Net Core WebAPI  緩存

    .net 溫故知新【14】:Asp.Net Core WebAPI 緩存

    緩存指在中間層中存儲(chǔ)數(shù)據(jù)的行為,該行為可使后續(xù)數(shù)據(jù)檢索更快。 從概念上講,緩存是一種性能優(yōu)化策略和設(shè)計(jì)考慮因素。 緩存可以顯著提高應(yīng)用性能,方法是提高不常更改(或檢索成本高)的數(shù)據(jù)的就緒性。 在最新的緩存控制規(guī)范文件RFC9111中,詳細(xì)描述了瀏覽器緩存和

    2024年02月05日
    瀏覽(91)
  • .Net Core WebApi 系列:過濾器Filter

    .Net Core WebApi 系列:過濾器Filter

    過濾器有什么作用,在什么場(chǎng)景下適合用到它? 假設(shè)一個(gè)項(xiàng)目進(jìn)展到快結(jié)束的時(shí)候,項(xiàng)目leader為了保證程序的穩(wěn)定性和可監(jiān)控和維護(hù)性要求將所有的方法加上日志,如果項(xiàng)目比較龐大,方法非常多,那豈不是得費(fèi)很大得勁來完成這樣一件事情。不過不用擔(dān)心,咋們遇到的問題

    2024年02月05日
    瀏覽(22)
  • .NET Core WebAPI中使用Swagger(完整教程)

    .NET Core WebAPI中使用Swagger(完整教程)

    1.1-什么是Swagger? Swagger是一個(gè)規(guī)范且完整的框架,用于生成、描述、調(diào)試和可視化Restfull風(fēng)格的Web服務(wù)。 Swagger的目標(biāo)是對(duì)Rest API定義一個(gè)標(biāo)準(zhǔn)且和語言無關(guān)的接口,可以讓人和計(jì)算機(jī)擁有無需訪問源碼、文檔或網(wǎng)絡(luò)流量監(jiān)控就可以發(fā)現(xiàn)和連接服務(wù)的能力。當(dāng)通過Swagger進(jìn)行正確

    2024年02月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包