91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用ASP.NET的Core注入框架

發布時間:2021-10-11 21:10:13 來源:億速云 閱讀:166 作者:iii 欄目:開發技術

本篇內容介紹了“如何使用ASP.NET的Core注入框架”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • 一、IoC框架

  • 二、IoC-Autofac

  • 三、.NET Core中自帶DI的使用

  • 四、Autofac 使用

  • 五、批量注入

一、IoC框架

先說說常見的Ioc框架吧。
Autofac: 目前net用的比較多,好多大佬的項目比較優先選擇的框架。
Ninject: 已經很少用了,還時在很早的文章中見過。
Unity: 比較常見的了,好多地方有用到的,
Core: Core中自帶的,業務邏輯不太復雜的情況下,還是比較方便的。

二、IoC-Autofac

Autofac.NET領域最為流行的IOC框架之一,傳說是速度最快的一個。

優點:

  • 它是C#語言聯系很緊密,也就是說C#里的很多編程方式都可以為Autofac使用。

  • 較低的學習曲線,學習它非常的簡單,只要你理解了IoC和DI的概念以及在何時需要使用它們。

  • XML.Json配置支持。

  • 自動裝配。

  • Asp.Net MVC 集成。

  • 微軟的Orchad開源程序使用的就是Autofac,從該源碼可以看出它的方便和強大。

大多數講Autofac框架的文章中都會提及上面幾點優點,可見其框架的優秀。

三、.NET Core中自帶DI的使用

1.首先創建一個 ASP.Net Core Web Api項目(選用的.NET 5.0),整體如下,紅色部分為Core中自帶DI使用的部分。

如何使用ASP.NET的Core注入框架

2.新建類庫項目,分別添加一個接口文件和類文件。

接口:

public interface ISayHelloService
    {
        string SayHello(string name);
    }

類:

public class EnglishSayHelloService : ISayHelloService
    {
        public string SayHello(string name)
        {
            return $"Hello,{name}!";
        }
    }

3.在 Startup 里面的 ConfigureServices 方法內注入。

 services.AddScoped<ISayHelloService, EnglishSayHelloService>();

4.然后在控制器中使用剛剛注入的服務。

[Route("api/[controller]/[action]")]
    [ApiController]
    public class HelloController : ControllerBase
    {
        public readonly ISayHelloService sayHelloService;

        public HelloController(ISayHelloService sayHelloService)
        {
            this.sayHelloService = sayHelloService;
        }

        [HttpGet]
        public string CoreDI()
        {
            return  sayHelloService.SayHello("CoreDI");
        }

    }

注意: 路由訪問地址,出現404錯誤時,可能是路由問題,路由可根據自己的實際需要自己在[Route("api/[controller]/[action]")]處修改。

5.訪問測試。

如何使用ASP.NET的Core注入框架

這里使用的接口測試軟件是Postman,Api測試很方便,網上可以搜索到,找不到我到的可以聯系我。

四、Autofac 使用

1.在新建一個ASP.Net Core Web Api項目(選用的.NET 5.0)用于區分前面的Core自帶的DI。

如何使用ASP.NET的Core注入框架

2.引用引用 Autofac 的包,看看這下載量,還是很哇塞的

如何使用ASP.NET的Core注入框架

3.在 Program 中改用 Autofac 來實現依賴注入

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

4.在 Startup 類中添加方法:ConfigureContainer,注入我們之前的服務。

   public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }
        //在這里注入
        public void ConfigureContainer(ContainerBuilder builder)
        {
            builder.RegisterType<EnglishSayHelloService>().As<ISayHelloService>();
         
        }
     
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
            
    }

5.控制器這里基本不需要更改。

   [Route("api/[controller]/[action]")]
    [ApiController]
    public class HelloController : ControllerBase
    {
        public readonly ISayHelloService sayHelloService;

        public HelloController(ISayHelloService sayHelloService)
        {
            this.sayHelloService = sayHelloService;
        }

        [HttpGet]
        public string CoreDI()
        {
            return  sayHelloService.SayHello("AutofacDI");
        }

    }

6.運行項目繼續用Postman測試接口。

好了關于Autofac的基本使用基本就講完了,是不是還是挺簡單的。

五、批量注入

簡單的幾個服務寫著還可以接受,當服務到幾十個,甚至上百個時,想想就可怕。這就不得不說到批量注入了,Autofac的優勢就體現出來了。

1.在服務中分別在添加一個接口,和類。

接口:

   public interface IUseAutofacService
   {
       string UseAutofac(string name);
   }

類:

   public class UseAutofacService : IUseAutofacService
   {
       public string UseAutofac(string name)
       {
           return $"{name}批量注入測試!";
       }
   }

2.回到我們之前的Startup 類中修改方法:ConfigureContainer

   public void ConfigureContainer(ContainerBuilder builder)
       {
           //builder.RegisterType<EnglishSayHelloService>().As<ISayHelloService>();

           //服務項目程序集
           Assembly service = Assembly.Load("Autofac.Service");
          
           //服務接口項目程序集
           Assembly iservice = Assembly.Load("Autofac.Service");

           builder.RegisterAssemblyTypes(service, iservice).Where(n => n.FullName.EndsWith("Service") && !n.IsAbstract)
               .InstancePerLifetimeScope().AsImplementedInterfaces();

       }

注意: 如果需要注入的服務沒有 IXXXService的接口 ,那么 builder.RegisterAssemblyTypes 就只需要傳一個程序集。如果服務與接口同在一個項目,那也是要傳兩個程序集的。

3.接下來在剛剛的控制器中略作修改。

   [Route("api/[controller]/[action]")]
    [ApiController]
    public class HelloController : ControllerBase
    {
        public readonly ISayHelloService sayHelloService;

        public readonly IUseAutofacService useAutofacService;

        public HelloController(ISayHelloService _sayHelloService, IUseAutofacService _useAutofacService)
        {
            this.sayHelloService = _sayHelloService;
            this.useAutofacService = _useAutofacService;
        }

        [HttpGet]
        public string AutofacDI()
        {
            return sayHelloService.SayHello("AutofacDI");
        }

        public string BathAutofacDI()
        {
            var name = sayHelloService.SayHello("AutofacDI");
            return useAutofacService.UseAutofac(name);
        }
    }

4.用Postman測試注入的情況。

 如何使用ASP.NET的Core注入框架

“如何使用ASP.NET的Core注入框架”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泗水县| 五莲县| 遂宁市| 虎林市| 汤原县| 柳林县| 鹤庆县| 海伦市| 若尔盖县| 东平县| 庄浪县| 黄石市| 碌曲县| 临安市| 若尔盖县| 博客| 杭锦后旗| 平远县| 田阳县| 大方县| 阿克| 平塘县| 小金县| 拜城县| 松桃| 炎陵县| 平和县| 襄垣县| 科技| 海丰县| 盐城市| 阿克陶县| 尉犁县| 天门市| 怀柔区| 松潘县| 普兰店市| 天等县| 维西| 容城县| 烟台市|