当前位置:首页 > Web开发 > 正文

小提示: 尽管C#并 不像 Java那样 强制要求必须将各个数据实体分放到不同的文件 中

2024-03-31 Web开发

本文地点:https://www.cnblogs.com/oberon-zjt0806/p/12225807.html

O 前请撮要

在第1期构建项目之后,我们看到项目中有这样的构成布局:

MyASPWebApplication/ ├─obj/ │ └─/一些文件.../ ├─Pages/ │ ├─Shared/ │ │ ├─_Layout.cshtml │ │ └─_ValidationScriptsPartial.cshtml │ ├─Error.cshtml │ ├─Error.cshtml.cs │ ├─Index.cshtml │ ├─Index.cshtml.cs │ ├─Privacy.cshtml │ ├─Privacy.cshtml.cs │ ├─_ViewImports.cshtml │ └─_ViewStart.cshtml ├─Properties/ │ └─launchSettings.json ├─wwwroot/(empty) ├─appsettings.Development.json ├─appsettings.json ├─Program.cs ├─Startup.cs └─MyASPWebApplication.csproj

这是初始生成项目所包罗的目录布局,这里面包罗了很多对象,但是,我们还不清楚每个部分能做些什么,充当怎样的一个角色,以及哪些对象是最根本的,这一节就来解决这些问题。
在第3期中我们从道理层面上了解了ASP.NET Core Web项目的一个根基的事情流程以及所包罗的部分。

I 启动部分 I.1 Program类

凭据绝大部分C#开发框架的惯例,Program类一般是措施的入口,里面包罗一个Main函数并被单独安排于Program.cs中。

小提示:
尽管C#并不像Java那样强制要求必需将各个数据实体分放到差此外文件中,但C#依然要求界说类的代码文件必需和该文件中所界说的类(如果多个则任取其一)不异。别的,如非须要,我们仍然建议将各个类界说疏散到差此外文件中,除非:

class A与class B之间有对照大的实体关联,例如依赖关系。

class B只是class A的一个帮助工具性的类,例如class B只是针对class A的一个异常类等

ASP.NET Core孕育产生的Program类如下:

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace MyASPWebApplication { 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>(); }); } }

固然了,这里public static void Main(string[] args)自然就是措施的入口了。里面挪用了他的下一个成员函数:

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

这个函数的界说方法很出格,它使用了λ推演(=>)的方法做的函数界说,但这无关紧要,实际上表达的是:

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

这个函数主要挪用了Host.CreateDefaultBuilder(args)静态函数使用措施的参数针对处事主机(Host)的进行一个默认配置。综上,Program类作为措施的入口,其所包罗的配置内容大多面向于项目的顶层设施。

关于处事主机泛型主机Web主机)的相关观点以及配置过程,在以后期介绍。

I.2 Startup类

在上面的布局中,我们不得不注意的此外项目等于Startup.cs。固然了,,本着C#的开发原则,我们很容易了解到这个代码文件中该当包罗一个名为Startup的类。

Startup类位于当前项目的定名空间下(也就是说类全称为MyASPWebApplication.Startup)。这个类在项目被构建时被生成为这个样子:

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace MyASPWebApplication { public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); } } } I.2.1 这个类干什么呢??

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31158.html