什么是Asp.net core web

1:什么是.Net Core

  ASP.NET Core 是一个开源的、跨平台的 .NET 实现。而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework 的一个开源、跨平台的实现。

  ASP.NET Core分为两大块:1).NET Core Framework,2).NET Core Runtime。

2..Net Core的优势

具体优点

  1)生成webui和webapi的统一场景,

  2)集成新式客户端框架和开发工作流,

  3)基于环境的云就绪配置系统,

  4)内置依赖注入,(可以使用第三方替换)

  5)轻型的高性能模块化的HTTP请求管道,

  6)能够在IIS,nginx,Apache,docker上进行委托管或在自己的进程中进行托管,

  7)定目标到.net core ,时可以使用并行应用版本控制,

  8)简化新式的web开发工具,

  9)开源代码和以社区为中心

且.net core 完全作为nuget包提供,借助nuget包可以将应用优化减少到只包含到必须的依赖项,提升了安全性,减少了维护和提高性能

asp.net core 鱼客户端框架 angular react bootstrap 可以无缝集合

3.一个asp.net core web网站包含哪些文件

 根目录/文件说明
.vscode目录VS Code项目配置目录,相当于.vs、.idea文件夹
bin目录编译输出目录,相当于Java项目的target目录
obj目录编译配置与中间目录,用于存放编译配置与编译中间结果
Properties目录用于存放项目配置
wwwroot目录静态文件目录
helloweb.csproj文件项目描述文件
Program.cs文件应用程序入口类文件
Startup.cs文件ASP.NET Core Web应用启动类文件,用于项目启动前进行相关配置

 

 

 

 

 

 

 

 

 

4.asp.net core web网站启动的过程

 

 

5: 什么是依赖注入

依赖的一个设计原则:依赖于抽象,而不是具体的实现,这个后面会具体解释的

Output类需要Rely类来帮助它实现输出的功能,这样Output类对Rely类产生了依赖,可以理解为Output依赖于Rely

Rely类
  public class Rely
    {
        public Task Test(string testMessage)
        {
            Console.WriteLine(testMessage);
            return Task.FromResult(0);
        }
 }

Output类
public class Output
    {
        Rely rely = new Rely();
        public async Task Out()
        {
            await rely.Test("這是一個測試消息");
        }
    }

简单来说就是别人对依赖创建实例化,我自己只负责使用,别人创建好了给我使用,这么一个过程可以理解为注入

在这里Output类不去实例化Rely类,而是通过其他人传递给我,我只用就好。到底怎么理解注入呢?

修改Output类

public class Output
    {
        private Rely _rely;
        public Output(Rely rely)
        {
            _rely = rely;
        }
        public async Task Out()
        {
            await _rely.Test("這是一個測試消息");
        }
    }

6.什么是中间件

中间件是组装到应用程序管道中以处理请求和响应的软件。

每个组件:

选择是否将请求传递给管道中的下一个组件。

可以在调用管道中的下一个组件之前和之后执行工作。

请求委托(Request delegates)用于构建请求管道,处理每个HTTP请求

7:中间的顺序是怎么样的

ASP.NET Core请求流程由一系列请求委托组成,如下图所示

 

8:asp.net core 依赖注入有几种方式

//依赖注入
            services.AddScoped<ICount, Count>();//范围注入
            services.AddTransient<ICount, Count>();//暂存注入
            services.AddSingleton<ICount, Count>();//单例模式注入

9:编写自定义中间件的过程

Models文件夹新建两个类分别是Count和ICount, DefaultModule

而Count类 继承ICount类

DefaultModule 类代码如下

public class DefaultModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            base.Load(builder);
        }
    }

然后在Startup类下 public IServiceProvider ConfigureServices(IServiceCollection services) 方法 写上代码 如下

public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            //依赖注入
            services.AddScoped<ICount, Count>();//范围注入
            services.AddTransient<ICount, Count>();//暂存注入
            services.AddSingleton<ICount, Count>();//单例模式注入

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddMvc();
            var containerBuilder = new ContainerBuilder();
            containerBuilder.RegisterModule<DefaultModule>();
            containerBuilder.Populate(services);
            var container = containerBuilder.Build();
            return new AutofacServiceProvider(container);

        }

之后就可以运行Index页面了

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值