ASP.NET Core学习——1

ASP.NET Core介绍

ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云端或者内部运行的应用提供一个优化的开发框架。它由最小开销的模块化的组件构成,因此在构建解决方法的同时可以保持灵活性。

ASP.NET Core有一些架构上的改变,这些改变使得它成为一个更为精简并且模块化的框架。

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

  • 统一的方式用于构建Web UI和Web API
  • 集成现代的客户端开发框架和开发流程
  • 适用于云的基于环境的配置系统
  • 内置依赖项注入
  • 轻型高性能模块化HTTP请求管道
  • 能够在IIS上进行托管或在自己的进程中进行自托管
  • 可以在.NET Core上运行,支持真正的并行应用版本控制
  • 简化新式Web开发的工具
  • 能够在Windows、macOS和Linux上进行生成和运行
  • 开源和关注社区

1.ASP.NET Core应用

ASP.NET Core应用其实就是在一个Main方法中创建一个Web服务器的简单控制台应用程序。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

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

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}

Main方法调用WebHost.CreateDefaultBuilder,后者按照生成器模式来创建Web应用程序主机。生成器提供定义Web服务器(例如UseKestrel)和启动类(UseStartup)的方法。

IWebHostBuilder是WebHost.CreateDefaultBuilder调用的返回类型,它提供了许多可选方法,包括用于在HTTP.sys中托管应用的UseHttpSys,以及用于指定根内容目录的UseContentRoot。Build和Run方法生成IWebHost对象,该对象托管应用并开始侦听HTTP请求。

2.StartUp

WebHostBuilder的UseStartup方法为你的应用指定Startup类

Startup类可用来定义请求处理管道和配置应用需要的服务。Startup类必须是公开的(public),并且必须包含如下方法:

   public class Startup
    {      
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
        }
    }

ConfigureServices方法用于定义你的应用所使用的服务(例如,ASP.NET Core MVC、Entity Framework Core、Identity等)。

Configure方法用于定义你的请求管道中的中间件。

3.服务

服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便地替换成你自己选用的IoC容器。由于它的松耦合特性,依赖注入(DI)使服务在整个应用中都可以使用。

4.中间件

在ASP.NET Core中,你可以使用中间件构建你的请求处理管道。一般来说,要想使用一个中间件,只需在Configure方法里调用IApplicationBuilder上一个对应的UseXXX扩展方法即可。

ASP.NET Core带来了丰富的内置中间件,也可以创建自己的自定义中间件。

5.服务器

ASP.NET Core托管模式并不直接监听请求,而是依赖于一个HTTP Server实现来转发请求到应用程序。

ASP.NET Core包含了一个托管的跨平台Web服务器:Kestrel,它往往会被运行在一个如IIS或者Nginx的生产Web服务器之后。

6.内容根目录

内容根目录是应用程序所用到的所有内容的根路径,比如它的views和web内容。

7.网站根目录

应用程序的Web根目录是项目中类似于CSS、JS和图片文件公开、静态的资源的目录。Web根目录默认为<contentroot>/wwwroot,但是也可以通过WebHostBuilder来指定另外一个地址。

8.配置

ASP.NET Core使用了一个新的配置模型,用来处理简单的键值对。新的配置模型不是基于System.Configuration或者web.config;相反,它是一个有序拉取数据的配置providers。

9.环境

环境,如"Development"和"Production",是ASP.NET Core中的第一级概念,而且它可以使用环境变量来设置。

10.使用ASP.NET Core MVC构建Web UI和Web API

  • 可以使用Model-View-Controller(MVC)模式创建优秀的、可测试的Web应用程序
  • 可以构建支持多种格式并且完全支持内容协商的HTTP服务
  • Razor提供了一种高效的语言,用于创建Views
  • TagHelpers启用服务器端的代码参与到Razor文件的创建和HTML元素渲染
  • 可以使用自定义或者内置的formatters(JSON、XML)来构建完全支持内容协商的HTTP服务
  • Model Binding自动映射HTTP请求中的数据到action方法参数
  • Model Validation自动执行客户端和服务器端验证
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core Razor编程中,列表模板页面是非常常见的。这些页面通常用于显示数据库或其他数据源中的一组记录。 在本文中,我将向您展示如何使用ASP.NET Core Razor列表模板页面。 首先,我们需要创建一个模型类来代表我们的数据。例如,假设我们正在构建一个博客应用程序,我们需要一个名为“Post”的模型类来表示博客文章。以下是一个示例模型类: ```csharp public class Post { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } public DateTime CreatedDate { get; set; } } ``` 接下来,我们需要创建一个控制器类来处理与“Post”模型类相关的操作。以下是一个示例控制器类: ```csharp public class PostController : Controller { private readonly ApplicationDbContext _context; public PostController(ApplicationDbContext context) { _context = context; } public IActionResult Index() { var posts = _context.Posts.ToList(); return View(posts); } } ``` 在此示例控制器中,我们从数据库中检索所有博客文章,并将它们传递给视图。 现在,我们需要创建一个视图来显示我们的博客文章列表。我们可以使用ASP.NET Core Razor模板引擎来创建一个动态模板,该模板可以将我们的博客文章显示为HTML表格。以下是一个示例视图: ```html @model IEnumerable<Post> <table> <thead> <tr> <th>Title</th> <th>Content</th> <th>Created Date</th> </tr> </thead> <tbody> @foreach (var post in Model) { <tr> <td>@post.Title</td> <td>@post.Content</td> <td>@post.CreatedDate.ToShortDateString()</td> </tr> } </tbody> </table> ``` 在此示例视图中,我们使用了一个foreach循环遍历我们的博客文章,并将它们显示为HTML表格行。 最后,我们需要在控制器的Index方法中返回视图。在我们的示例控制器中,我们已经传递了一个包含所有博客文章的IEnumerable<Post>对象。我们可以将此对象传递给视图,如下所示: ```csharp public IActionResult Index() { var posts = _context.Posts.ToList(); return View(posts); } ``` 现在,当我们访问PostController的Index操作时,我们将看到一个包含所有博客文章的HTML表格。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值