ASP.NETCore学习记录(一)


ASP.NETCore学习记录(一)

asp.net core介绍  Startup.cs  ConfigureServices  Configure  GitHub 上。ASP.NET Core有一些架构上的改变,这些改变使得它成为一个更为精简并且模块化的框架。ASP.NET Core不再基于System.Web.dll。当前它基于一系列颗粒化的,并且有良好构建的 NuGet包。这一特点能够让你通过仅仅包含需要的NuGet包的方法来优化你的应用。一个更小 的应用程序接口通过“只为你需要的功能付出”(pay-for-what-you-use)模型获得的好处包括: 可靠的安全性、简化服务、改进性能和减少成本。

通过ASP.NET Core可以获得的改进如下:

  • 一个统一的方式用于构建Web UI和Web APIs。
  • 集成现代的客户端开发框架和开发流程。
  • 一个适用于云的,基于环境的配置系统。
  • 内置的依赖注入。
  • 新型的、轻量级的、模块化HTTP请求管道。
  • 运行于IIS或者自宿主(self_host)于你自己的进程的能力。
  • 基于支持真正的side-by-side应用程序版本化的.NET Core构建。
  • 完全以NuGet包的形式发布。
  • 新的用于简化现代Web开发的工具。
  • 可以在Windows、Mac和Linux上构建和运行跨平台的ASP.NET应用。
  • 开源并且重视社区。

依赖注入可将服务加入服务容器(IoC容器),使其在应用程序中可用。正如 Startup 类能将指定的依赖项作为其方法参数——而不足硬编码(hard-coding)来实例化特定实现,在应用程序中的其他类都可以做到这一点。通过在 IServiceCollection 上使用扩展方法来包装需要大量配置细节的 ConfigureServices。在下面的例子(使用了默认的Web应用程序MVC模板)中看到 ConfigureServices 方法中有个 AddMvc 的扩展方法被用于设罝应用程序能够使用MVC服务:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure(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.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}


5. 内容根目录

内容根目录是应用程序所用到的所有内容的根路径,比如它的 views 和 web内容。默认情况下,内容根目录是与宿主应用的可执行程序的应用根目录相同:其他位罝可以通过 WebHostBuilder 来设置。


6. Web根目录

应用程序的 Web根目录是项目中类似于 CSS、JS和图片文件公开、静态的资源的目录。静态文件中间件将默认只读取Web根目录和其子目录中的文件。Web根目录默认为[content root]/wwwroot。(可以通过WebHostBuilder来指定另外一个地址)


7. 配置

ASP.NET Core使用了一个新的配置模型,用来处理简单的键值对。新的配置模型不是基于 System.Configuration 或者 web.config;相反,它足一个有序拉取数据的配置 providers。内置的构造提供支持多种不同的文件格式,如 XML、JSON、INI和用于支持基于环境的配置环境变量,也可以自己编写实现自定义的配罝providers。


8. 环境

ASP.NET Core 支持在多个环境中管理应用程序行为,如开发Development,预演staging和生产Production,是ASP.NET Core中的第一级概念,而且它可以使用环境变量来配置。

将在后面记录中详细介绍以上知识点。


参考资料

《ASP.NET Core 跨平台开发从入门到实践》