四大部件

(WebHost,Startup,launchSettings,wwwroot)

WebHost

简单理解是一个socket,

https://www.cnblogs.com/neverc/p/7988226.html  (好)

Startup

Startup.cs文件是ASP.NET Core的启动入口文件,想必尝试过OWIN开发的一定不会陌生。项目运行时,编译器会在程序集中自动查找Startup.cs文件读取启动配置。除了构造函数外,它可以定义Configure和ConfigureServices方法。

ConfigureServices  

给程序员添加一些服务的代码区

比如AddMvc查看mvc源码

        internal static void AddViewServices(IServiceCollection services)
{
DataProtectionServiceCollectionExtensions.AddDataProtection(services);
AntiforgeryServiceCollectionExtensions.AddAntiforgery(services);
EncoderServiceCollectionExtensions.AddWebEncoders(services);
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IConfigureOptions<MvcViewOptions>, MvcViewOptionsSetup>());
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IPostConfigureOptions<MvcViewOptions>, MvcViewOptionsConfigureCompatibilityOptions>());
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IConfigureOptions<MvcOptions>, TempDataMvcOptionsSetup>());
ServiceCollectionDescriptorExtensions.TryAddSingleton<ICompositeViewEngine, CompositeViewEngine>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IActionResultExecutor<ViewResult>, ViewResultExecutor>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IActionResultExecutor<PartialViewResult>, PartialViewResultExecutor>(services);
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IControllerPropertyActivator, ViewDataDictionaryControllerPropertyActivator>());
ServiceCollectionDescriptorExtensions.TryAddTransient<IHtmlHelper, HtmlHelper>(services);
ServiceCollectionDescriptorExtensions.TryAddTransient(services, typeof(IHtmlHelper<>), typeof(HtmlHelper<>));
ServiceCollectionDescriptorExtensions.TryAddSingleton<IHtmlGenerator, DefaultHtmlGenerator>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ExpressionTextCache>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IModelExpressionProvider, ModelExpressionProvider>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ValidationHtmlAttributeProvider, DefaultValidationHtmlAttributeProvider>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IJsonHelper, JsonHelper>(services);
ServiceCollectionDescriptorExtensions.TryAdd(services, ServiceDescriptor.Singleton<JsonOutputFormatter>(delegate (IServiceProvider serviceProvider) {
return new JsonOutputFormatter(ServiceProviderServiceExtensions.GetRequiredService<IOptions<MvcJsonOptions>>(serviceProvider).get_Value().get_SerializerSettings(), ServiceProviderServiceExtensions.GetRequiredService<ArrayPool<char>>(serviceProvider));
}));
ServiceCollectionDescriptorExtensions.TryAddSingleton<IViewComponentSelector, DefaultViewComponentSelector>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IViewComponentFactory, DefaultViewComponentFactory>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IViewComponentActivator, DefaultViewComponentActivator>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IViewComponentDescriptorCollectionProvider, DefaultViewComponentDescriptorCollectionProvider>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IActionResultExecutor<ViewComponentResult>, ViewComponentResultExecutor>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ViewComponentInvokerCache>(services);
ServiceCollectionDescriptorExtensions.TryAddTransient<IViewComponentDescriptorProvider, DefaultViewComponentDescriptorProvider>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<IViewComponentInvokerFactory, DefaultViewComponentInvokerFactory>(services);
ServiceCollectionDescriptorExtensions.TryAddTransient<IViewComponentHelper, DefaultViewComponentHelper>(services);
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IApplicationModelProvider, TempDataApplicationModelProvider>());
ServiceCollectionDescriptorExtensions.TryAddEnumerable(services, ServiceDescriptor.Transient<IApplicationModelProvider, ViewDataAttributeApplicationModelProvider>());
ServiceCollectionDescriptorExtensions.TryAddSingleton<SaveTempDataFilter>(services);
ServiceCollectionDescriptorExtensions.TryAddTransient<ControllerSaveTempDataPropertyFilter>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ITempDataProvider, CookieTempDataProvider>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ValidateAntiforgeryTokenAuthorizationFilter>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<AutoValidateAntiforgeryTokenAuthorizationFilter>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ITempDataDictionaryFactory, TempDataDictionaryFactory>(services);
ServiceCollectionDescriptorExtensions.TryAddSingleton<ArrayPool<ViewBufferValue>>(services, ArrayPool<ViewBufferValue>.get_Shared());
ServiceCollectionDescriptorExtensions.TryAddScoped<IViewBufferScope, MemoryPoolViewBufferScope>(services);
}

MVC大概注册了100多的服务。。。

Configure

Configure 方法用于处理我们程序中的各种中间件,这些中间件决定了我们的应用程序将如何响应每一个 HTTP 请求。它必须接收一个IApplicationBuilder参数,我们可以手动补充IApplicationBuilder的Use扩展方法,将中间件加到Configure中,用于满足我们的需求。

<1> 这个方法用于在初始化的时候,将所有的中间件添加到 IApplicationBuilder 的componets数组中。

在Request请求发起的时候,按照添加顺序执行一次中间件,具体的我们下一节课说。

。。。。。。 这个方法配置的东西,只会在Request请求的过程中被调用 。。。。。。

<2> 这个方法的参数是不固定的,只要容器里面有,都可以实现依赖注入。。比如ILoggerFactory logger

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

环境的不同,程序的行为也不一样。。

launchSettings.json

解决问题:快速的做环境切换,方便调试和开发。

目的:让你的程序在多环境一样保持稳定。

1. 直接修改文件。
2. 使用vs面板。

wwwroot

存放静态资源

代码下载

ASP.NET Core四大部件的更多相关文章

  1. ASP.NET Core 中文文档 第四章 MVC(3.7 )局部视图(partial)

    原文:Partial Views 作者:Steve Smith 翻译:张海龙(jiechen).刘怡(AlexLEWIS) 校对:许登洋(Seay).何镇汐.魏美娟(初见) ASP.NET Core ...

  2. ASP.NET Core: 全新的ASP.NET !

    背景 最新版本的 ASP.NET 叫做 ASP.NET Core (也被称为 ASP.NET 5)   它颠覆了过去的 ASP.NET. 什么是 ASP.NET Core? ASP.NET Core ...

  3. ASP.NET Core重写个人博客站点小结

    今天用ASP.NET Core重写了个人博客站点,原来是基于ASP.NET 4.5开发的.重写工作总体很顺利,最后成功发布到Ubunt+Nginx平台上.效果如下: 右边的Header信息里可以看到已 ...

  4. 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用

    Setting Up Your Development Environment 设置你的开发环境 To setup your development machine download and inst ...

  5. ubuntu下发布asp.net core并用nginx代理之旅

    asp.net core 1.0.1发布已有些日子了,怀着好奇的心情体验了把ubuntu下的asp.net core 系统运行环境:ubuntu 16.0.4 for developer 首先搭建.n ...

  6. ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证

    OpenID Connect OpenID Connect 1.0是OAuth 2.0协议之上的一个简单的身份层. 它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,以及以可互操作和类似R ...

  7. 向ASP.NET Core迁移

    有人说.NET在国内的氛围越来越不行了,看博客园文章的浏览量也起不来.是不是要转Java呢? 没有必要扯起语言的纷争,Java也好C#都只是语言是工具,各有各的使用场景.以前是C#非开源以及不能在Li ...

  8. ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?

    在上一章中,详细介绍了 ASP.NET Core 中的授权策略,在需要授权时,只需要在对应的Controler或者Action上面打上[Authorize]特性,并指定要执行的策略名称即可,但是,授权 ...

  9. 【ASP.NET Core】JSON Patch 使用简述

    JSON Patch 是啥玩意儿?不知道,直接翻译吧,就叫它“Json 补丁”吧.干吗用的呢?当然是用来修改 JSON 文档的了.那咋修改呢?比较常见有四大操作:AMRR. 咋解释呢? A—— Add ...

随机推荐

  1. C++2.0新特性(四)——<decltype、lambda>

    一.关键字decltype 引入新关键字decltype可以让编译器找出表达式的类型,为了区别typeof,以下做一个概念区分: typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型 ...

  2. Python自动生成代码工具

    项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...

  3. vue后台_纯前端实现excel导出/csv导出

    之前的文件下载功能一般是由前后端配合实现,由于项目需要,纯前端实现了一把excel的导出功能: 一.excel导出 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还 ...

  4. Nginx+Tomcat多实例及负载均衡配置

    Nginx+Tomcat多实例及负载均衡配置 采用nginx的反向代理负载均衡功能,配合后端的tomcat多实例来实现tomcat WEB服务的负载均衡 01 安装nginx服务 安装所需的pcre库 ...

  5. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  6. 今天闲来无事给我这老伙计A4L换个机油

    今天闲来无事给我这老伙计A4L换个机油         今天天气不错正好心血来潮给我的老伙计做个小保健.跟我这么久了也不能亏待是吧,也很久没来论坛了顺便冒个泡给我们版主晶晶交个作业要不然又要揍我了. ...

  7. 信息论 | information theory | 信息度量 | information measures | R代码(一)

    这个时代已经是多学科相互渗透的时代,纯粹的传统学科在没落,新兴的交叉学科在不断兴起. life science neurosciences statistics computer science in ...

  8. JVM 初始化阶段的重要意义分析

    1.创建一个Mytest6类和Singleton类 public class MyTest6 { public static void main(String[] args) { Singleton ...

  9. 第十二章 Python文件操作【转】

    12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...

  10. Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks

    Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks 2019-06-01 09:52:4 ...